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; }
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); } } } }
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(); }
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); } } }