CGameGunHound::~CGameGunHound() { //----------------------------------------- //ハウンド終了 //----------------------------------------- g_CHoundSaveData.Save(); //メインメニュールーチンの残存を確認 ResetClass(); // if( m_pBriefing ) delete m_pBriefing; if( m_pOpeningDemo ) delete m_pOpeningDemo; if( m_pEndingDemo ) delete m_pEndingDemo; if(pGame) delete pGame; if(CFadeManager::GetInstance()) { CFadeManager::GetInstance()->Destroy(); } CActManager::DeleteInstance(); /* // if(g_pActManager) // { // delete g_pActManager; // g_pActManager = NULL; // } */ }
void MainExitServer() { lprintf("ExitServer terminating server\n"); ExitAsyncConnections(); CloseAllSessions(); /* gotta do this before anything, cause it uses kod, accounts */ CloseDefaultChannels(); ResetLoadMotd(); ResetLoadBof(); ResetTable(); ResetBufferPool(); ResetSysTimer(); ResetDLlist(); ResetNameID(); ResetAccount(); ResetUser(); ResetString(); ResetRoomData(); ResetResource(); ResetTimer(); ResetList(); ResetObject(); ResetMessage(); ResetClass(); ResetConfig(); DeleteAllBlocks(); }
CPlayer::CPlayer(CGameContext *pGameServer, int ClientID, int Team) { m_pGameServer = pGameServer; m_RespawnTick = Server()->Tick(); m_DieTick = Server()->Tick(); m_ScoreStartTick = Server()->Tick(); m_pCharacter = 0; m_ClientID = ClientID; m_Team = GameServer()->m_pController->ClampTeam(Team); m_SpectatorID = SPEC_FREEVIEW; m_LastActionTick = Server()->Tick(); m_TeamChangeTick = Server()->Tick(); m_Spectate = false; m_Score = 0; m_Money = g_Config.m_SvStartMoney; m_DeathTick = 0; m_ActionTimer = 0; m_CanShop = false; GameServer()->ClearShopVotes(ClientID); m_InterestPoints = 0; m_BroadcastingCaptureStatus = false; m_EnableEmoticonGrenades = true; m_EnableWeaponInfo = 2; m_EnableAutoSpectating = true; m_IsBot = false; m_pAI = NULL; ResetClass(); //m_WantedTeam = m_Team; //m_Team = TEAM_SPECTATORS; if(str_comp(g_Config.m_SvGametype, "cstt") == 0) m_ForceToSpectators = true; else m_ForceToSpectators = false; for (int i = 0; i < NUM_CUSTOMWEAPONS; i++) m_aSavedWeapon[i] = false; // warm welcome awaits m_Welcomed = false; GameServer()->ResetVotes(); }
void CPlayer::NewRound() { for (int i = 0; i < NUM_CUSTOMWEAPONS; i++) m_aSavedWeapon[i] = false; m_Score = 0; m_Money = g_Config.m_SvStartMoney; ResetClass(); DisableShopping(); m_InterestPoints = 0; }
void InterfaceReloadSystem() { EnterServerLock(); lprintf("InterfaceReloadSystem reloading system\n"); PauseTimers(); SendBlakodBeginSystemEvent(SYSEVENT_RELOAD_SYSTEM); GarbageCollect(); SaveAll(); ResetAdminConstants(); ResetUser(); ResetString(); ResetRoomData(); ResetLoadMotd(); ResetLoadBof(); ResetDLlist(); ResetNameID(); ResetResource(); ResetTimer(); ResetList(); ResetObject(); ResetMessage(); ResetClass(); LoadMotd(); LoadBof(); LoadRsc(); LoadKodbase(); UpdateSecurityRedbook(); LoadAdminConstants(); /* can't reload accounts because sessions have pointers to accounts */ if (!LoadAllButAccount()) eprintf("InterfaceReloadSystem couldn't load game. You are dead.\n"); AllocateParseClientListNodes(); /* it needs a list to send to users */ AddBuiltInDLlist(); SendBlakodEndSystemEvent(SYSEVENT_RELOAD_SYSTEM); UnpauseTimers(); LeaveServerLock(); }
void ResetStudent(/*InOut*/student_struct *s) { int j = 0; // Loop variable // // Reset all numerical data by setting to zero // s->active_student = 0; s->hoursCom_current = s->hoursCom_total = 0; s->gpa_current = s->gpa_total = 0.00; // // Reset all string data by clearing the strings // ClearString(s->number); ClearString(s->name); ClearString(s->year); ClearString(s->major); // // Reset all classes by running loop to reset each class // while(j < MAX_CLASSES_STUDENT)ResetClass(&s->classes[j++]); }
void CGameGunHound::Loop() { //----------------------------------------- //ハウンドメイン //----------------------------------------- if( m_bResetOK ) { if( m_bResetPlease ) { m_bResetPlease = gxFalse; m_sEndSeq = -1; ChangeGameSeq( enMainSeqGameEnd ); } else if( CDashBoard::GetInstance()->IsMenuBar() ) { m_bPauseFlag = gxTrue; } else { m_bPauseFlag = gxFalse; } } switch( m_GameSeq ){ case enMainSeqInit: //----------------------------------------- //ゲーム初期化 //----------------------------------------- m_bBriefingRoot = gxTrue; m_bResetOK = gxFalse; viiDbg::log("ハウンドシーケンス:enMainSeqInit"); //SaveDataInit(); //GameConfigLoad(); m_bPauseFlag = gxFalse; ChangeGameSeq( enMainSeqStart ); break; case enMainSeqStart: //----------------------------------------- //スコア初期化 //----------------------------------------- m_bResetOK = gxFalse; viiDbg::log("ハウンドシーケンス:enMainSeqStart"); #ifdef _VII_DEBUG_ CDashBoard::GetInstance()->SetMenuDisable(gxFalse); CDashBoard::GetInstance()->SetLogo(gxFalse); CDashBoard::GetInstance()->SetWallPaper(gxFalse); ChangeGameSeq( enMainSeqRestart ); #else // ChangeGameSeq( enMainSeqGameOpeningDemo ); CDashBoard::GetInstance()->SetMenuDisable(gxFalse); CDashBoard::GetInstance()->SetLogo(gxFalse); CDashBoard::GetInstance()->SetWallPaper(gxFalse); ChangeGameSeq( enMainSeqGameTitle ); #endif break; case enMainSeqGameTitle: //----------------------------------------- //タイトルのシーケンス //----------------------------------------- UploadTexture(); m_bResetOK = gxFalse; ChangeGameSeq( enMainSeqRestart ); break; case enMainSeqRestart: //----------------------------------------- //リスタートのポイント //----------------------------------------- m_bResetOK = gxFalse; ResetClass(); #ifdef GX_DEBUG ChangeGameSeq( enMainSeqDebugMenu ); #else ChangeGameSeq( enMainSeqGameMainMenu ); #endif break; case enMainSeqGameMainMenu: //----------------------------------------- //メインメニューのシーケンス //----------------------------------------- m_bResetOK = gxTrue; CDashBoard::GetInstance()->SetMenuDisable(gxTrue); switch( MainMenu() ){ case enMenuSeqBack: case enMenuSeqNext: g_StGameInfo.Reset(); if( m_sMainMenuSelected == CMainMenu::enMainMenuOpening ) { //オープニングへ ChangeGameSeq( enMainSeqGameOpeningDemo ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuDebug ) { //デバッグモードへ g_StGameInfo.m_sGameMode = StGameInfo::enGameModeNormal; ChangeGameSeq( enMainSeqDebugMenu ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuEnding ) { //エンディング CDashBoard::GetInstance()->SetIcon( enIconNone ); ChangeGameSeq( enMainSeqGameEndingDemo ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuStart ) { //ゲームスタートへ CDashBoard::GetInstance()->SetIcon( enIconNone ); g_StGameInfo.m_sGameMode = StGameInfo::enGameModeNormal; g_StGameInfo.m_bMessage = gxTrue; ChangeGameSeq( enMainSeqGameBriefing ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuTutorial ) { //チュートリアルスタートへ g_StGameInfo.m_bMusic = gxTrue; g_StGameInfo.m_bMessage = gxTrue; g_StGameInfo.m_bReplay = gxFalse; CDashBoard::GetInstance()->SetIcon( enIconNone ); g_StGameInfo.m_sGameMode = StGameInfo::enGameModeNormal; g_StGameInfo.PlayStage = enScenarioTutorial; StageSet(); g_StGameInfo.PlayArea = m_sSelectedStage; ChangeGameSeq( enMainSeqGameInit ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuMission ) { //ゲームスタートへ CDashBoard::GetInstance()->SetIcon( enIconNone ); g_StGameInfo.m_sGameMode = StGameInfo::enGameModeMission; g_StGameInfo.PlayStage = m_sSelectedStage;//enScenarioTutorial; g_StGameInfo.PlayArea = 0; StageSet(); ChangeGameSeq( enMainSeqGameInit ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuExit ) { //ゲーム終了 ExitGame(); } break; default: break; } break; case enMainSeqGameOpeningDemo: //----------------------------------------- //オープニングのシーケンス //----------------------------------------- m_bResetOK = gxFalse; if( AdvertiseDemo() ) { ChangeGameSeq( enMainSeqGameTitle ); } break; case enMainSeqDebugMenu: //----------------------------------------- //デバッグメニュー //----------------------------------------- m_bResetOK = gxTrue; switch( DebugMenu() ) { case enMenuSeqBack: ChangeGameSeq( enMainSeqGameMainMenu ); break; case enMenuSeqNext: // g_StGameInfo.Reset(); g_StGameInfo.m_bMessage = gxTrue; g_StGameInfo.m_bMusic = gxTrue; g_StGameInfo.m_bReplay = gxFalse; ChangeGameSeq( enMainSeqGameInit ); break; } break; case enMainSeqGameBriefing: g_StGameInfo.ContinueArea = 0; CCockpit::GetInstance()->SetHidden(); CDashBoard::GetInstance()->SetMenuDisable(gxFalse); m_bResetOK = gxTrue; if( m_pSetUp == NULL ) { //セットアップ画面を作る m_pSetUp = new CSetUp( -1 );//g_StGameInfo.PlayStage ); } if( BriefingMain() ) { //ステージ決定 StageSet(); m_bBriefingRoot = gxTrue; ChangeGameSeq( enMainSeqGameSetUp ); } CockpitControl(); break; case enMainSeqGameSetUp: CCockpit::GetInstance()->SetHidden(); m_bResetOK = gxTrue; if( m_pSetUp->IsEnd() ) { ChangeGameSeq( enMainSeqGameBefore ); } CockpitControl(); break; case enMainSeqGameBefore: //----------------------------------------- //ゲーム初期化 //----------------------------------------- CCockpit::GetInstance()->ReNew(); CCockpit::GetInstance()->SetHidden(); CockpitControl(); m_bResetOK = gxTrue; if( !m_pSetUp->IsWait() ) { //CCockpit::GetInstance()->Reset(); viiMus::StopBGM( enSoundBgm1 ); ChangeGameSeq( enMainSeqGameInit ); } break; case enMainSeqGameInit: //----------------------------------------- //ゲーム初期化 //----------------------------------------- CCockpit::GetInstance()->Destroy(); CCockpit::GetInstance()->SetHidden(); m_bResetOK = gxFalse; if( pGame ) delete pGame; pGame = new CGameManager(); GameInit(); pGame->init(); CockpitControl(); viiMus::Destroy(); ChangeGameSeq( enMainSeqGameMain ); break; case enMainSeqGameMain: //----------------------------------------- //ゲームメイン //----------------------------------------- CDashBoard::GetInstance()->SetMenuDisable(gxFalse); m_bResetOK = gxTrue; if( m_pSetUp ) { m_bResetOK = gxFalse; m_pSetUp->Draw(); if( m_pSetUp->GoDestroy() ) { //---------------------------------------------- //セットアップ終了 //---------------------------------------------- CCockpit::GetInstance()->Reset(); delete m_pSetUp; m_pSetUp = NULL; } } if( !m_bGameStart && pGame->IsGameStart() ) { m_bGameStart = gxTrue; } GameMain(); if( pGame->IsStageClear() ) { m_sEndSeq = pGame->GetNextSeq(); //m_sEndSeq = 1; //次へ ChangeGameSeq( enMainSeqGameEnd ); } else if( CCockpit::GetInstance()->IsGameOver() ) { m_sEndSeq = enClearSeqContinue; ChangeGameSeq( enMainSeqGameEnd ); } break; case enMainSeqGameEnd: //----------------------------------------- //ゲーム終了 //----------------------------------------- m_bResetOK = gxFalse; GameEnd(); if( pGame ) { delete pGame; pGame = NULL; } if( !m_bBriefingRoot ) { m_sEndSeq = 0; } CCockpit::GetInstance()->ReNew(); if( m_sMainMenuSelected == CMainMenu::enMainMenuMission || m_sMainMenuSelected == CMainMenu::enMainMenuTutorial) { //--------------------------------------- //ストーリーモード以外の時 //--------------------------------------- //スコアを加算する g_CHoundSaveData.UpdateHighScore( g_StGameInfo.m_uAllScore ); //ミッションモードだった ChangeGameSeq( enMainSeqGameMainMenu ); //チュートリアルモードだった ChangeGameSeq( enMainSeqGameMainMenu ); } else if( m_sEndSeq == enClearSeqStageClear ) { #ifdef _TRIAL_VERSION_ //タイトルに戻る g_CHoundSaveData.UpdateHighScore( g_StGameInfo.m_uAllScore ); ChangeGameSeq( enMainSeqRestart ); #else //ステージクリアだった g_StGameInfo.SetStageClear( g_StGameInfo.PlayStage ); switch( g_StGameInfo.PlayStage ){ case enScenarioJungle: g_CHoundSaveData.SetHiddenOpen( enHiddenItemMission2 ); break; case enScenarioRiver: g_CHoundSaveData.SetHiddenOpen( enHiddenItemMission3 ); break; case enScenarioMountain: g_CHoundSaveData.SetHiddenOpen( enHiddenItemMission4 ); break; case enScenarioBase: g_CHoundSaveData.SetHiddenOpen( enHiddenItemMission5 ); break; } ChangeGameSeq( enMainSeqGameBriefing ); #endif } else if( m_sEndSeq == enClearSeqContinue ) { //ステージ失敗だった(コンティニュールート) ChangeGameSeq( enMainSeqGameContinue ); } else if( m_sEndSeq == enClearSeqGameOver ) { //ゲームオーバーだった ChangeGameSeq( enMainSeqGameContinue ); } else if( m_sEndSeq == enClearSeqEnding ) { //エンディングだった g_StGameInfo.SetStageClear( g_StGameInfo.PlayStage ); g_CHoundSaveData.UpdateHighScore( MISSION_ALLOVER_BONUS ); Uint32 uScore = 0; //ゲームスコアを加算 m_stEndingBonus.uAllScore = g_StGameInfo.m_uAllScore; //オールオーバーボーナスをコンティニュー回数で割る m_stEndingBonus.uContinueBonus = MISSION_ALLOVER_BONUS/(g_StGameInfo.m_sContinueCnt+1); m_stEndingBonus.uContinueBonus = m_stEndingBonus.uContinueBonus/10; m_stEndingBonus.uContinueBonus = m_stEndingBonus.uContinueBonus*10; //Trueエンディングの場合場合ボーナス m_stEndingBonus.uTrueEndBonus = 0; if( g_StGameInfo.m_bTrueEnd ) { m_stEndingBonus.uTrueEndBonus = ENDING_TRUEVERSION_BONUS; g_CHoundSaveData.SetHiddenOpen( enHiddenItemViewEnding ); } //ノーコンティニューだった場合2倍ボーナス if( g_StGameInfo.m_sContinueCnt == 0 ) { m_stEndingBonus.uNoContinueBonus = m_stEndingBonus.uAllScore + m_stEndingBonus.uContinueBonus + m_stEndingBonus.uTrueEndBonus; } uScore = m_stEndingBonus.uAllScore; uScore += m_stEndingBonus.uContinueBonus; uScore += m_stEndingBonus.uTrueEndBonus; uScore += m_stEndingBonus.uNoContinueBonus; m_stEndingBonus.uTotalScore = uScore; //スコアを加算する g_CHoundSaveData.UpdateHighScore( uScore ); ChangeGameSeq( enMainSeqGameEndingDemo ); } else { //リセットだった /* if( m_bGameStart && m_sMainMenuSelected == CMainMenu::enMainMenuStart ) { m_sResetCount = 120; ChangeGameSeq( enMainSeqResetInGame ); } else { ChangeGameSeq( enMainSeqRestart ); } */ ChangeGameSeq( enMainSeqRestart ); } break; case enMainSeqGameContinue: //----------------------------------------- //コンティニュー //----------------------------------------- m_bResetOK = gxTrue; m_bGameStart = gxFalse; switch( ContinueScreen() ){ case enMenuSeqNext: { //タイトルに戻る g_CHoundSaveData.UpdateHighScore( g_StGameInfo.m_uAllScore ); ChangeGameSeq( enMainSeqRestart ); } break; case enMenuSeqBack: { //コンティニューする // Sint32 sMem = g_StGameInfo.PlayArea; // StageSet(); //スコアをリセットする /* g_StGameInfo.m_uAllScore = (g_StGameInfo.m_uAllScore/2); g_StGameInfo.m_uAllScore -= g_StGameInfo.m_uAllScore%10;; */ //スコア更新 g_CHoundSaveData.UpdateHighScore( g_StGameInfo.m_uAllScore ); g_StGameInfo.m_uAllScore = 0;//(g_StGameInfo.m_uAllScore/2); g_StGameInfo.m_uStageScore = g_StGameInfo.m_uAllScore; if( g_StGameInfo.m_sContinueCnt < 99 ) g_StGameInfo.m_sContinueCnt ++; g_StGameInfo.ContinueArea = g_StGameInfo.PlayArea; ChangeGameSeq( enMainSeqGameInit ); } break; default: break; } break; case enMainSeqGameEndingDemo: //----------------------------------------- //ゲーム終了 //----------------------------------------- m_bResetOK = gxTrue; m_bGameStart = gxFalse; CCockpit::GetInstance()->SetHidden(); CDashBoard::GetInstance()->SetMenuDisable(gxFalse); if( EndingDemo() ) { ChangeGameSeq( enMainSeqRestart ); } break; case enMainSeqResetInGame: if( m_sResetCount > 0 ) { m_sResetCount --; } else { g_StGameInfo.m_uAllScore = 0; g_StGameInfo.m_uStageScore = 0; g_StGameInfo.ContinueArea = g_StGameInfo.PlayArea; CCockpit::GetInstance()->ReNew(); ChangeGameSeq( enMainSeqGameInit ); } break; default: break; } viiMus::GetInstance()->Action(); CFadeManager::GetInstance()->action(); }