//------------------------------------------------------------------------------------- // This is the update callback function and is called at each update frame // before rendering. You should update the game logic here. // //------------------------------------------------------------------------------------- void GameApp::Update() { JGE* engine = JGE::GetInstance(); float dt = engine->GetDelta(); if (dt > 35.0f) // min 30 FPS ;) dt = 35.0f; scroller->Update(dt); timer+=dt; if (timer > 15) { startTransition(); timer = 0; }; transition+=(int)(dt * 300); if (transition > 255) endTransition(); if (gameToExtract.size()) { if (!subMenu) { switch(currentGameState) { case GAME_STATE_EXTRACTING_DONE: subMenu = new SimpleMenu(1, this,mFont,10,200, "installed to " + extractFolder); subMenu->Add(MENU_NO, "OK","", true); break; default: //TODO Check contents of file to see if it matches the zip format. subMenu = new SimpleMenu(1, this,mFont,10,200, "Do you want to install this homebrew?"); subMenu->Add(MENU_YES, "yes"); subMenu->Add(MENU_NO, "Cancel"); break; } } subMenu->Update(dt); switch(currentGameState) { case GAME_STATE_EXTRACTING: SAFE_DELETE(subMenu); ensureExtractFilesList(); if (extractError) { extractError = 0; currentGameState = GAME_STATE_EXTRACTING_CANCEL; return; } extractOneFile(); if (zipFiles.empty()) { currentZipFile.close(); loadFiles(base.c_str()); //reload menu to update folders currentGameState = GAME_STATE_EXTRACTING_DONE; } break; case GAME_STATE_EXTRACTING_CANCEL: SAFE_DELETE(subMenu); gameToExtract = ""; currentGameState = GAME_STATE_MENU; break; case GAME_STATE_EXTRACTING_DONE: break; default: break; } return; } menu->Update(dt); if (gameSelected == -2) { loadFiles(base.c_str()); gameSelected = -1; } if (gameSelected > -1) { engine->End(); return; } // exit when the TRIANGLE button is pressed if ( engine->GetButtonState(JGE_BTN_CANCEL)) { strcpy((char *)ebootPath, "quit"); engine->End(); return; } if ( engine->GetButtonState(JGE_BTN_PRI)) { JRenderer::GetInstance()->ScreenShot("ms0:/picture/wMenu.png"); } if ( engine->GetButtonState(JGE_BTN_PREV)) { base = "ms0:/PSP/SAVEDATA"; loadFiles(base.c_str()); return; } if ( engine->GetButtonState(JGE_BTN_NEXT)) { base = "ms0:/PSP/GAME"; loadFiles(base.c_str()); return; } }
void GameApp::Update() { if (systemError.size()) return; JGE* mEngine = JGE::GetInstance(); #if defined (PSP) if (mEngine->GetButtonState(JGE_BTN_MENU) && mEngine->GetButtonClick(JGE_BTN_CANCEL)) { char s[80]; sprintf(s, "ms0:/psp/photo/MTG%d.png", mScreenShotCount++); JRenderer::GetInstance()->ScreenShot(s); } //Exit when START and X ARE PRESSED SIMULTANEOUSLY if (mEngine->GetButtonState(JGE_BTN_MENU) && mEngine->GetButtonState(JGE_BTN_SEC)) { mEngine->End(); return; } //Restart Rendering engine when START and SQUARE ARE PRESSED SIMULTANEOUSLY if (mEngine->GetButtonState(JGE_BTN_MENU) && mEngine->GetButtonState(JGE_BTN_PRI)) JRenderer::Destroy(); #endif //PSP float dt = mEngine->GetDelta(); if (dt > 35.0f) // min 30 FPS ;) dt = 35.0f; TransitionBase * mTrans = NULL; if (mCurrentState) { mCurrentState->Update(dt); if (mGameStates[GAME_STATE_TRANSITION] == mCurrentState) mTrans = (TransitionBase *) mGameStates[GAME_STATE_TRANSITION]; } //Check for finished transitions. if (mTrans && mTrans->Finished()) { mTrans->End(); if (mTrans->to != NULL && !mTrans->bAnimationOnly) { SetCurrentState(mTrans->to); SAFE_DELETE(mGameStates[GAME_STATE_TRANSITION]); mCurrentState->Start(); } else { SetCurrentState(mTrans->from); SAFE_DELETE(mGameStates[GAME_STATE_TRANSITION]); } } if (mNextState != NULL) { if (mCurrentState != NULL) mCurrentState->End(); SetCurrentState(mNextState); #if defined (PSP) /* int maxLinear = ramAvailableLineareMax(); int ram = ramAvailable(); char buf[512]; sprintf(buf, "Ram : linear max: %i - total : %i\n",maxLinear, ram); fprintf(stderr,buf); */ #endif mCurrentState->Start(); mNextState = NULL; } }