示例#1
0
	static char* playGame_func(){
		if(!hasLoadedROM) return "Please load a ROM first";
		
		pauseRemovalThread();
		resumeAudio();
		resumeInput();
		GUI_toggle();
		go();
		GUI_toggle();
		pauseInput();
		pauseAudio();
		continueRemovalThread();
		return NULL;
	}
示例#2
0
void InputEngine::controllerAxisMotion(SDL_Event e, GameState state)
{
    if (state == GameState::PLAY || state == GameState::END)
    {
        if (inputs[e.cdevice.which] == nullptr || cameras[e.cdevice.which] == nullptr) return;

        if (e.caxis.axis == SDL_CONTROLLER_AXIS_LEFTX)
        {
            if (e.caxis.value < -deadzoneSize)
            {
                inputs[e.cdevice.which]->steer = (float)(e.caxis.value + deadzoneSize)/(MIN_AXIS_VALUE + deadzoneSize);
            }
            else if (e.caxis.value > deadzoneSize)
            {
                inputs[e.cdevice.which]->steer = -(float)(e.caxis.value - deadzoneSize)/(MAX_AXIS_VALUE - deadzoneSize);
            }
            else
            {
                inputs[e.cdevice.which]->steer = 0;
            }
        }
        else if (e.caxis.axis == SDL_CONTROLLER_AXIS_TRIGGERLEFT)
        {
            inputs[e.cdevice.which]->backward = (float)e.caxis.value/MAX_AXIS_VALUE;
        }
        else if (e.caxis.axis == SDL_CONTROLLER_AXIS_TRIGGERRIGHT)
        {
            inputs[e.cdevice.which]->forward = (float)e.caxis.value/MAX_AXIS_VALUE;
        }
    }
    else if (state == GameState::MENU)
    {
        if (e.caxis.axis == SDL_CONTROLLER_AXIS_LEFTY)
        {
            if (e.caxis.value >= MAX_AXIS_VALUE - 5)
            {
                menuInput(InputType::DOWN);
            }
            else if (e.caxis.value <= MIN_AXIS_VALUE + 5)
            {
                menuInput(InputType::UP);
            }
        }
        else if (e.caxis.axis == SDL_CONTROLLER_AXIS_LEFTX)
        {
            if (e.caxis.value >= MAX_AXIS_VALUE - 5)
            {
                menuInput(InputType::RIGHT);
            }
            else if (e.caxis.value <= MIN_AXIS_VALUE + 5)
            {
                menuInput(InputType::LEFT);
            }
        }
    }
    else if (state == GameState::PAUSE)
    {
        if (e.caxis.axis == SDL_CONTROLLER_AXIS_LEFTY)
        {
            if (e.caxis.value >= MAX_AXIS_VALUE - 5)
            {
                pauseInput(InputType::DOWN);
            }
            else if (e.caxis.value <= MIN_AXIS_VALUE + 5)
            {
                pauseInput(InputType::UP);
            }
        }
    }
}
示例#3
0
void Func_PlayGame()
{
	if(!hasLoadedROM)
	{
		menu::MessageBox::getInstance().setMessage("Please load a ROM first");
		return;
	}
	
	//Wait until 'A' button released before play/resume game
	menu::Cursor::getInstance().setFreezeAction(true);
	menu::Focus::getInstance().setFreezeAction(true);
	int buttonHeld = 1;
	while(buttonHeld)
	{
		buttonHeld = 0;
		menu::Gui::getInstance().draw();
		for (int i=0; i<4; i++)
		{
			if(PAD_ButtonsHeld(i) & PAD_BUTTON_A) buttonHeld++;
#ifdef HW_RVL
			WPADData* wiiPad = WPAD_Data(i);
			if(wiiPad->err == WPAD_ERR_NONE && wiiPad->btns_h & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A)) buttonHeld++;
#endif
		}
	}
	menu::Cursor::getInstance().setFreezeAction(false);
	menu::Focus::getInstance().setFreezeAction(false);

	menu::Gui::getInstance().gfx->clearEFB((GXColor){0, 0, 0, 0xFF}, 0x000000);
	pause_netinit_thread();
	pauseRemovalThread();
	resumeAudio();
	resumeInput();
	menuActive = 0;
#ifdef DEBUGON
	_break();
#endif
	new_frame();
	new_vi();
	go();
#ifdef DEBUGON
	_break();
#endif
	menuActive = 1;
	pauseInput();
	pauseAudio();

  if(autoSave==AUTOSAVE_ENABLE) {
    if(flashramWritten || sramWritten || eepromWritten || mempakWritten) {  //something needs saving
      switch (nativeSaveDevice)
    	{
    		case NATIVESAVEDEVICE_SD:
    		case NATIVESAVEDEVICE_USB:
    			// Adjust saveFile pointers
    			saveFile_dir = (nativeSaveDevice==NATIVESAVEDEVICE_SD) ? &saveDir_libfat_Default:&saveDir_libfat_USB;
    			saveFile_readFile  = fileBrowser_libfat_readFile;
    			saveFile_writeFile = fileBrowser_libfat_writeFile;
    			saveFile_init      = fileBrowser_libfat_init;
    			saveFile_deinit    = fileBrowser_libfat_deinit;
    			break;
    		case NATIVESAVEDEVICE_CARDA:
    		case NATIVESAVEDEVICE_CARDB:
    			// Adjust saveFile pointers
    			saveFile_dir       = (nativeSaveDevice==NATIVESAVEDEVICE_CARDA) ? &saveDir_CARD_SlotA:&saveDir_CARD_SlotB;
    			saveFile_readFile  = fileBrowser_CARD_readFile;
    			saveFile_writeFile = fileBrowser_CARD_writeFile;
    			saveFile_init      = fileBrowser_CARD_init;
    			saveFile_deinit    = fileBrowser_CARD_deinit;
    			break;
    	}
    	// Try saving everything
    	int amountSaves = flashramWritten + sramWritten + eepromWritten + mempakWritten;
    	int result = 0;
    	saveFile_init(saveFile_dir);
    	result += saveEeprom(saveFile_dir);
    	result += saveSram(saveFile_dir);
    	result += saveMempak(saveFile_dir);
    	result += saveFlashram(saveFile_dir);
    	saveFile_deinit(saveFile_dir);
    	if (result==amountSaves) {  //saved all of them ok	
    		switch (nativeSaveDevice)
    		{
    			case NATIVESAVEDEVICE_SD:
    				menu::MessageBox::getInstance().fadeMessage("Automatically saved to SD card");
    				break;
    			case NATIVESAVEDEVICE_USB:
    				menu::MessageBox::getInstance().fadeMessage("Automatically saved to USB device");
    				break;
    			case NATIVESAVEDEVICE_CARDA:
    				menu::MessageBox::getInstance().fadeMessage("Automatically saved to memcard in Slot A");
    				break;
    			case NATIVESAVEDEVICE_CARDB:
    				menu::MessageBox::getInstance().fadeMessage("Automatically saved to memcard in Slot B");
    				break;
    		}
    		flashramWritten = sramWritten = eepromWritten = mempakWritten = 0;  //nothing new written since save
  		}
  	  else		
  	    menu::MessageBox::getInstance().setMessage("Failed to save game"); //one or more failed to save
      
    }
  }

	continueRemovalThread();
	resume_netinit_thread();
	FRAME_BUTTONS[5].buttonString = FRAME_STRINGS[6];
	menu::Cursor::getInstance().clearCursorFocus();
}
示例#4
0
void InputEngine::controllerButtonDown(SDL_Event e, GameState state)
{
    if (state == GameState::PLAY || state == GameState::END)
    {
        if (inputs[e.cdevice.which] == nullptr || cameras[e.cdevice.which] == nullptr) return;

        if (e.cbutton.button == SDL_CONTROLLER_BUTTON_X)
        {
            inputs[e.cdevice.which]->shootPizza = true;
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_A)
        {
            inputs[e.cdevice.which]->handBrake = true;
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_B)
        {
            cameras[e.cdevice.which]->setReverseCam(true);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_RIGHTSTICK)
        {
            //unFucker();
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_Y)
        {
            inputs[e.cdevice.which]->jump = true;
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_START)
        {
            if (isCheatCode(e.cdevice.which))
            {
                space();
            }
            (state == GameState::PLAY) ? setGameState(GameState::PAUSE) : setGameState(GameState::BACK_TO_MENU);
        }

        pastInputs[e.cdevice.which][pastInputsIndex[e.cdevice.which]] = e.cbutton.button;
        pastInputsIndex[e.cdevice.which] = (pastInputsIndex[e.cdevice.which] + 1) % BUFFER_SIZE;
    }
    else if (state == GameState::MENU)
    {
        if (e.cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_UP)
        {
            menuInput(InputType::UP);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_DOWN)
        {
            menuInput(InputType::DOWN);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_LEFT)
        {
            menuInput(InputType::LEFT);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT)
        {
            menuInput(InputType::RIGHT);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_A)
        {
            menuInput(InputType::ENTER);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_B)
        {
            menuInput(InputType::BACK);
        }
    }
    else if (state == GameState::PAUSE)
    {
        if (e.cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_UP)
        {
            pauseInput(InputType::UP);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_DOWN)
        {
            pauseInput(InputType::DOWN);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_A)
        {
            pauseInput(InputType::ENTER);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_B)
        {
            pauseInput(InputType::BACK);
        }
        else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_START)
        {
            pauseInput(InputType::BACK);
        }
    }
}