/* ================ rvWeaponGauntlet::State_Fire ================ */ stateResult_t rvWeaponGauntlet::State_Fire( const stateParms_t& parms ) { enum { STAGE_START, STAGE_START_WAIT, STAGE_LOOP, STAGE_LOOP_WAIT, STAGE_END, STAGE_END_WAIT }; switch ( parms.stage ) { case STAGE_START: PlayAnim( ANIMCHANNEL_ALL, "attack_start", parms.blendFrames ); StartBlade(); loopSound = LOOP_NONE; // #32 - no gauntlet spin up //return SRESULT_STAGE( STAGE_START_WAIT ); return SRESULT_STAGE( STAGE_LOOP ); case STAGE_START_WAIT: if ( !wsfl.attack ) { return SRESULT_STAGE( STAGE_END ); } if ( AnimDone( ANIMCHANNEL_ALL, parms.blendFrames ) ) { return SRESULT_STAGE( STAGE_LOOP ); } return SRESULT_WAIT; case STAGE_LOOP: PlayCycle( ANIMCHANNEL_ALL, "attack_loop", parms.blendFrames ); StartSound( "snd_spin_loop", SND_CHANNEL_WEAPON, 0, false, 0 ); return SRESULT_STAGE(STAGE_LOOP_WAIT); case STAGE_LOOP_WAIT: if ( !wsfl.attack || wsfl.lowerWeapon ) { return SRESULT_STAGE( STAGE_END ); } Attack(); return SRESULT_WAIT; case STAGE_END: PlayAnim( ANIMCHANNEL_ALL, "attack_end", parms.blendFrames ); StopBlade(); StartSound( "snd_spin_down", SND_CHANNEL_WEAPON, 0, false, 0 ); return SRESULT_STAGE( STAGE_END_WAIT ); case STAGE_END_WAIT: if ( wsfl.attack || AnimDone( ANIMCHANNEL_ALL, parms.blendFrames ) ) { PostState( "Idle", parms.blendFrames ); return SRESULT_DONE; } return SRESULT_WAIT; } return SRESULT_ERROR; }
void CNucAge::ProcessConsole(const char* pcszConCmd) { if (GS_GAME == GetRTIntVar(NA_RT_GAME_STATE)) { if (strcmp(pcszConCmd, "winlevel") == 0) { PostState(ES_LEVEL_SUCCEEDED, 0, 0, "level", "main"); } else if (strcmp(pcszConCmd, "openall") == 0) { SetRTIntVar(NA_RT_MAX_LEVEL_NUMBER, NA_MAX_LEVELS - 1); } } }
bool CScreenJoin::ChangeState(EState eNewState) { if (!PostState(eNewState)) { return false; } m_eCurState = eState_Transition; if (!PreState(eNewState)) { return false; } m_eCurState = eNewState; return true; }
END_CLASS_STATES /* ================ rvMonsterStreamProtector::State_Killed ================ */ stateResult_t rvMonsterStreamProtector::State_Killed ( const stateParms_t& parms ) { // Make sure all animation stops StopAnimState ( ANIMCHANNEL_TORSO ); StopAnimState ( ANIMCHANNEL_LEGS ); if ( head ) { StopAnimState ( ANIMCHANNEL_HEAD ); } DisableAnimState ( ANIMCHANNEL_LEGS ); PlayAnim ( ANIMCHANNEL_TORSO, "death", parms.blendFrames ); PostState ( "State_Dead" ); return SRESULT_DONE; }
BOOL CNucAge::ProcessState(E_STATE eState, DWORD dwCurrTick) { switch (eState.dwStateID) { case ES_STARTENGINE: // init resources AddResource("data\\cursor.dat", "cursor"); AddResource("data\\sand.dat", "sand"); AddResource("data\\actor.dat", "actor"); AddResource("data\\gamegui.dat", "gamegui"); // init scenes AddScene("scenes\\gamegui.scn", "gamegui", "gamegui"); AddScene("scenes\\level.scn", "level", "sand"); AddScene("scenes\\actor.scn", "actor", "actor"); // create game objects g_pLevel = new CLevel(); g_pRlPlayer = new CPlayer(); g_pShPlayer = new CPlayer(); g_pGtm = new CGameTime(); g_pKeys = new CKeys(); g_pMenu = new CGameMenu(); g_pHelp = new CHelpDlg(); g_pOptions = new COptionsDlg(); // set players name strcpy(g_pRlPlayer->m_szName, "rlplayer"); strcpy(g_pShPlayer->m_szName, "shplayer"); g_pRlPlayer->m_bIsReal = TRUE; g_pShPlayer->m_bIsReal = FALSE; // add mouse support CreateMouse("cursor"); // add listeners GetScene("level")->AddListener(g_pLevel, "main"); GetScene("actor")->AddListener(g_pRlPlayer, g_pRlPlayer->m_szName); GetScene("actor")->AddListener(g_pShPlayer, g_pShPlayer->m_szName); GetScene("gamegui")->AddListener(g_pGtm, "time"); GetScene("gamegui")->AddListener(g_pKeys, "keys"); GetScene("gamegui")->AddListener(g_pMenu, "main"); GetScene("gamegui")->AddListener(g_pHelp, "help"); GetScene("gamegui")->AddListener(g_pOptions, "options"); GetScene("level")->SetVisible(FALSE); GetScene("actor")->SetVisible(FALSE); // create fonts GetScene("gamegui")->GetStringManager()->CreateFont("fonts\\fonts.fnt", "greenfnt"); GetScene("gamegui")->GetStringManager()->CreateFont("fonts\\fonts.fnt", "buttonfnt"); GetScene("gamegui")->GetStringManager()->CreateFont("fonts\\fonts.fnt", "redfnt"); GetScene("gamegui")->GetStringManager()->CreateFont("fonts\\fonts.fnt", "labelfnt"); // init string table GetStringTable()->Init("strings.dat"); GetStringTable()->SetLocale("en"); // init audio GetAudio()->LoadGroup("sfx\\sound.sfx", "sound"); // we start game from menu screen SetRTIntVar(NA_RT_GAME_STATE, GS_MENU); // create game variable object AddVars("game.ini", "config"); // get world size value int iLevel, iWorldSize; GetVars("config")->GetInt(L_GROUP, "config", "worldsize", 0, &iWorldSize); if (iWorldSize <= 0 || iWorldSize > 25) iWorldSize = 25; SetRTIntVar(NA_RT_WORLD_SIZE, iWorldSize); // get current level value GetVars("config")->GetInt(L_GROUP, "config", "curlvl", 0, &iLevel); if (iLevel >= NA_NUM_WORLDS*iWorldSize) iLevel = NA_NUM_WORLDS*iWorldSize - 1; SetRTIntVar(NA_RT_CURR_LEVEL_NUMBER, iLevel); SetRTIntVar(NA_RT_MINI_LEVEL_NUMBER, iLevel); // get maximum achieved number of levels GetVars("config")->GetInt(L_GROUP, "config", "maxlvl", 0, &iLevel); if (iLevel >= NA_NUM_WORLDS*iWorldSize) iLevel = NA_NUM_WORLDS*iWorldSize - 1; SetRTIntVar(NA_RT_MAX_LEVEL_NUMBER, iLevel); // sync current level with max level if (GetRTIntVar(NA_RT_CURR_LEVEL_NUMBER) > iLevel) { SetRTIntVar(NA_RT_CURR_LEVEL_NUMBER, iLevel); SetRTIntVar(NA_RT_MINI_LEVEL_NUMBER, iLevel); } // update audio int iSndVol, iMusVol; BOOL fMute; GetVars("config")->GetInt(L_GROUP, "config", "mute", 0, &fMute); GetVars("config")->GetInt(L_GROUP, "config", "sndvol", 0, &iSndVol); GetVars("config")->GetInt(L_GROUP, "config", "musvol", 0, &iMusVol); GetAudio()->SetSFXVolume(iSndVol); GetAudio()->SetMusicVolume("backlogo", iMusVol); GetAudio()->SetMute(fMute); SetRTStringVar(NA_RT_BACK_MUSIC, "backlogo"); GetAudio()->PlayMusic("backlogo"); //turn on music check PostState(ES_ENGINE_CHECKMUSIC, 0, 0); break; case ES_ENGINE_CHECKMUSIC: //check if back music stop then play it again if (!GetAudio()->IsMusicPlay(GetRTStringVar(NA_RT_BACK_MUSIC))) { GetAudio()->StopMusic(GetRTStringVar(NA_RT_BACK_MUSIC)); GetAudio()->PlayMusic(GetRTStringVar(NA_RT_BACK_MUSIC)); } return FALSE; } return TRUE; }
BOOL CGameMenu::ProcessState(E_STATE sState, DWORD dwCurrTick) { switch (sState.dwStateID) { case ES_LISTENERINIT: m_pPLBut = new CPlayLevel(); m_pRLBut = new CRetryLevel(); m_pNLBut = new CNextBut(); m_pBTMBut = new CBackToMenu(); m_pQBut = new CQuitMenu(); m_pNextLvl = new CNextMiniLevel(); m_pPrevLvl = new CPrevMiniLevel(); m_pNextWorld = new CNextWorld(); m_pPrevWorld = new CPrevWorld(); m_pOptBut = new COptionsBut(); m_pHelpBut = new CHelpBut(); m_pOKBut = new COKBut(); GetScene()->AddListener(m_pPLBut, "playbut"); GetScene()->AddListener(m_pRLBut, "retrybut"); GetScene()->AddListener(m_pNLBut, "nextbut"); GetScene()->AddListener(m_pBTMBut, "backmenubut"); GetScene()->AddListener(m_pQBut, "quitbut"); GetScene()->AddListener(m_pNextLvl, "nextlvlbut"); GetScene()->AddListener(m_pPrevLvl, "prevlvlbut"); GetScene()->AddListener(m_pNextWorld, "nextworldbut"); GetScene()->AddListener(m_pPrevWorld, "prevworldbut"); GetScene()->AddListener(m_pOptBut, "optbut"); GetScene()->AddListener(m_pHelpBut, "helpbut"); GetScene()->AddListener(m_pOKBut, "okbut"); m_pPLBut->InitButton("button", "but1", "buttonfnt"); m_pRLBut->InitButton("button", "but2", "buttonfnt"); m_pNLBut->InitButton("button", "but3", "buttonfnt"); m_pBTMBut->InitButton("button", "but4", "buttonfnt"); m_pQBut->InitButton("button", "but5", "buttonfnt"); m_pNextLvl->InitButton("rarbutt", "", "buttonfnt"); m_pPrevLvl->InitButton("larbutt", "", "buttonfnt"); m_pNextWorld->InitButton("rarbutt", "", "buttonfnt"); m_pPrevWorld->InitButton("larbutt", "", "buttonfnt"); m_pOptBut->InitButton("button", "but6", "buttonfnt"); m_pHelpBut->InitButton("button", "but7", "buttonfnt"); m_pOKBut->InitButton("button", "but8", "buttonfnt"); m_iWorldId = GET_STRING()->CreateFromTable("world1", "buttonfnt", 360, 388, 8); m_iLevelId = GET_STRING()->CreateFromTable("level", "buttonfnt", 380, 168, 8); m_iLevelValueId = GET_STRING()->Create("", "buttonfnt", 430, 168, 8); m_iLockedId = GET_STRING()->CreateFromTable("locked", "redfnt", 360, 280, 9); m_iTryAgainId = GET_STRING()->CreateFromTable("tryagain", "labelfnt", 400, 415, 8); m_iSuccessId = GET_STRING()->CreateFromTable("success", "labelfnt", 400, 415, 8); m_iWinId = GET_STRING()->CreateFromTable("win", "labelfnt", 80, 200, 8); char buf[MAX_BUFFER]; for (int i = 0; i < NA_WORLD_DESC_NUM_LINES; i++) { wsprintf(buf, "wdesc1%i", i + 1); m_iWorldDesc[i] = GET_STRING()->CreateFromTable(buf, "greenfnt", 10, 400 - i*25, 8); } DrawStartMenu(); PostState(ES_ENGINE_INITLANG, 0, 0); break; case ES_ENGINE_INITLANG: InitLng(); break; } return TRUE; }