예제 #1
0
파일: GameApp.cpp 프로젝트: 173210/w-menu
//-------------------------------------------------------------------------------------
// 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;
    }


}
예제 #2
0
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;
    }
}