/************************************************************************ * 游戏剧情的章节转换 ************************************************************************/ void Controller::ChangeChapter(int nChapterID) { if (nChapterID != CHAPTER_1 && nChapterID != CHAPTER_2 && nChapterID != CHAPTER_3 && nChapterID != CHAPTER_4) { return; } vector<Player*> playerList = Game()->GetPlayerManager()->GetPlayerList(); if (m_nCurrentChapter != CHAPTER_0) { for (int i = 0; i < playerList.size(); ++i) { playerList[i]->Action(CodeMsg::code_player_static,right_direction); } } // 设置当前章节的ID m_nCurrentChapter = nChapterID; // 先让玩家停止 // 暂停游戏 SuspendGame(); // 移除地图上所有的怪物 Game()->GetMonsterManager()->RemoveAllMonster(); // 移除地图上所有的装备 Game()->GetEquipmentManager()->RemoveAllEquipment(); // 当前选中的怪物置为空 m_pCurrentSelectedMonster = 0; // 新建一个boss(每个章节的Boss都不一样) m_pBoss = Game()->GetMonsterManager()->CreateBoss(); // 场景转换 Game()->GetSceneManager()->ChangeScene(nChapterID); // 继续游戏 ContinueGame(); }
bool CGameWindow::KeyPress(int c) { if (BaseClass::KeyPress(c)) return true; if (GameServer() && GameServer()->GetCamera()) GameServer()->GetCamera()->KeyDown(c); if (Game()) { for (size_t i = 0; i < Game()->GetNumLocalPlayers(); i++) { CPlayer* pPlayer = Game()->GetLocalPlayer(i); pPlayer->KeyPress(c); } } return false; }
void CGameServer::SetClientNickname(int iClient, const tstring& sNickname) { if (iClient == GetClientIndex() && Game()->GetNumLocalPlayers()) { Game()->GetLocalPlayer(0)->SetPlayerName(sNickname); return; } for (size_t i = 0; i < Game()->GetNumPlayers(); i++) { if (Game()->GetPlayer(i)->GetClient() == iClient) { Game()->GetPlayer(i)->SetPlayerName(sNickname); return; } } TMsg(sprintf(tstring("Can't find client %d to give nickname %s.\n"), iClient, sNickname.c_str())); }
void CGameServer::RestartLevel() { SetLoading(false); AllowPrecaches(); DestroyAllEntities(tvector<tstring>(), true); m_bRestartLevel = true; Game()->SetupGame(CVar::GetCVarValue("game_mode")); m_bRestartLevel = false; SetLoading(false); }
void CGame::Load() { m_iMonsterTexture = GetRenderer()->LoadTextureIntoGL("monster.png"); m_iCrateTexture = GetRenderer()->LoadTextureIntoGL("crate.png"); m_iNormalTexture = GetRenderer()->LoadTextureIntoGL("normal.png"); GraphReset(); m_projectile_initial_time = Game()->GetTime(); m_projectile_initial_position = Vector(2, 1, 2); m_projectile_initial_velocity = Vector(-1, 3, -1) * 5; m_projectile_gravity = Vector(0, -5, 0); m_projectile_break_time = Game()->GetTime() + PredictProjectileMaximumHeightTime(m_projectile_initial_velocity, m_projectile_gravity); m_projectile_number = 1; // Fire the first one m_projectile_position[0] = m_projectile_initial_position; m_projectile_velocity[0] = m_projectile_initial_velocity; }
Game RoxdokuGame::createGame(int difficulty, int symmetry) { if(!m_graph) { m_graph = new SKGraph(m_order, TypeRoxdoku); m_graph->initRoxdoku(); } Puzzle* puzzle = new Puzzle(m_graph, true); puzzle->init(difficulty, symmetry); return Game(puzzle); }
Game RoxdokuGame::startEmpty() { if(!m_graph) { m_graph = new SKGraph(m_order, TypeRoxdoku); m_graph->initRoxdoku(); } Puzzle* puzzle = new Puzzle(m_graph, false); puzzle->init(); return Game(puzzle); }
bool CGameServer::LoadFromFile(const tchar* pFileName) { if (!GameServer()) return false; GameServer()->Initialize(); // Erase all existing entites. We're going to load in new ones! GameServer()->DestroyAllEntities(); std::ifstream i; i.open(pFileName, std::ios_base::binary|std::ios_base::in); char szTag[8]; i.read(szTag, 8); if (strncmp(szTag, "GameSave", 8) != 0) return false; CGameServer* pGameServer = GameServer(); size_t iLoadCRC; i.read((char*)&iLoadCRC, sizeof(iLoadCRC)); if (iLoadCRC != pGameServer->m_iSaveCRC) return false; i.read((char*)&pGameServer->m_flGameTime, sizeof(pGameServer->m_flGameTime)); size_t iEntities; i.read((char*)&iEntities, sizeof(iEntities)); for (size_t j = 0; j < iEntities; j++) { if (!CBaseEntity::UnserializeEntity(i)) return false; } for (size_t i = 0; i < GameServer()->GetMaxEntities(); i++) { if (!CBaseEntity::GetEntity(i)) continue; CBaseEntity::GetEntity(i)->ClientEnterGame(); } Game()->EnterGame(); if (GameServer()->GetWorkListener()) GameServer()->GetWorkListener()->SetAction("Encountering resistance", 0); GameServer()->SetLoading(false); return true; }
void COverlappedWindow::startNewGame() { getGameInfo().isFirstNextStep = true; setWindowSize(); game = Game(getGameInfo().widthGridNumber, getGameInfo().heightGridNumber); isGameStarted = true; isDoneFirstStep = false; ::InvalidateRect(handle, 0, 0); }
void CUIMpTradeWnd::OnBtnOkClicked(CUIWindow* w, void* d) { DeleteHelperItems(); CheckDragItemToDestroy (); StorePreset (_preset_idx_last, true, false, false); HideDialog (); game_cl_mp* clgame = smart_cast<game_cl_mp*>(&(Game())); VERIFY(clgame); clgame->OnBuyMenu_Ok (); //. StorePreset (_preset_idx_last, true, true); }
bool CActor::CanSprint () { bool can_Sprint = CanAccelerate() && !conditions().IsCantSprint() && Game().PlayerCanSprint(this) && CanRun() && !(mstate_real&mcLStrafe || mstate_real&mcRStrafe) && InventoryAllowSprint() ; return can_Sprint; }
int game_cl_Deathmatch::GetPlayersPlace (game_PlayerState* ps) { if (!ps) return -1; game_cl_GameState::PLAYERS_MAP_IT I=Game().players.begin(); game_cl_GameState::PLAYERS_MAP_IT E=Game().players.end(); // create temporary map (sort by kills) xr_vector<game_PlayerState*> Players; for (;I!=E;++I) Players.push_back(I->second); std::sort (Players.begin(),Players.end(),DM_Compare_Players); int Place = 1; for (u32 i=0; i<Players.size(); i++) { if (Players[i] == ps) return Place; Place++; }; return -1; }
s32 UITeamState::GetSummaryFrags() const { typedef game_cl_GameState::PLAYERS_MAP::const_iterator PlCIter; game_cl_GameState::PLAYERS_MAP & playersMap = Game().players; s32 sum = 0; PlCIter eiter = playersMap.end(); for (PlCIter i = playersMap.begin(); i != eiter; ++i) { game_PlayerState* ps = i->second; if (!ps) continue; game_cl_mp* tempGame = smart_cast<game_cl_mp*>(&Game()); R_ASSERT(tempGame); if (static_cast<ETeam>(tempGame->ModifyTeam(ps->team)) == myTeam) sum = sum + ps->m_iRivalKills; } return sum; }
/* =============== idCommonLocal::NetReceiveUsercmds =============== */ void idCommonLocal::NetReceiveUsercmds( int peer, idBitMsg& msg ) { int clientNum = Game()->MapPeerToClient( peer ); if( clientNum == -1 ) { idLib::Warning( "NetReceiveUsercmds: Could not find client for peer %d", peer ); return; } NetReadUsercmds( clientNum, msg ); }
int CALLBACK WinMain( HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int /*nCmdShow*/ ) { #ifndef NDEBUG int flag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG ); /* Get current flag */ flag ^= _CRTDBG_LEAK_CHECK_DF; /* Turn on leak-checking bit */ _CrtSetDbgFlag( flag ); /* Set flag to the new value */ #endif Game(); return 0; }
void ShowStatus(class CCommand* pCommand, tvector<tstring>& asTokens, const tstring& sCommand) { TMsg(tstring("Level: ") + CVar::GetCVarValue("game_level") + "\n"); TMsg(sprintf(tstring("Clients: %d Entities: %d/%d\n"), GameNetwork()->GetClientsConnected(), CBaseEntity::GetNumEntities(), GameServer()->GetMaxEntities())); for (size_t i = 0; i < Game()->GetNumPlayers(); i++) { const CPlayer* pPlayer = Game()->GetPlayer(i); if (!pPlayer) continue; if (pPlayer->GetClient() < 0) TMsg("Local: "); else TMsg(sprintf(tstring("%d: "), pPlayer->GetClient())); TMsg(pPlayer->GetPlayerName()); TMsg("\n"); } }
/************************************************************************ * 初始化函数 ************************************************************************/ void Controller::Init(const string& strID,const string& strPsd,bool bNetMode) { m_pCurrentSelectedMonster = 0; // 当前用鼠标右键选中的怪物 m_nCurrentChapter = CHAPTER_0; // 游戏剧情的章节 m_bLoopGame = true; // 游戏循环标志 m_bIsNetGame = bNetMode; SetMyPlayerInfo(strID,strPsd); RPG_01::Game()->ChangeChapter(CHAPTER_1); if (m_bIsNetGame) { Game()->GetNetworkModule()->Born(); Game()->GetNetworkModule()->RequestAllOnlinePlayer(); } }
int main(int argc, char* argv[]) { const char* rendererFlag = getCmdOption(argv, argv + argc, "--renderer"); auto game = Game(); if(game.Init(rendererFlag)) { game.Loop(); } game.Terminate(); return 0; }
int main(){ team A, B; Game(A, B); return 0; }
bool CUISpeechMenu::OnKeyboardAction(int dik, EUIMessages keyboard_action) { if (dik < DIK_1 || dik > DIK_0) return CUIDialogWnd::OnKeyboardAction(dik, keyboard_action); game_cl_mp* game = smart_cast<game_cl_mp*>(&Game()); HideDialog(); game->OnMessageSelected(this, static_cast<u8>(dik - DIK_1)); return true; }
void CChangeLevelWnd::OnOk() { Game().StartStopMenu (this, true); NET_Packet p; p.w_begin (M_CHANGE_LEVEL); p.w (&m_game_vertex_id,sizeof(m_game_vertex_id)); p.w (&m_level_vertex_id,sizeof(m_level_vertex_id)); p.w_vec3 (m_position); p.w_vec3 (m_angles); Level().Send (p,net_flags(TRUE)); }
void CSpectator::IR_OnKeyboardHold(int cmd) { if (Remote()) return; game_cl_mp* pMPGame = smart_cast<game_cl_mp*> (&Game()); game_PlayerState* PS = Game().local_player; if ((cam_active==eacFreeFly)||(cam_active==eacFreeLook)){ CCameraBase* C = cameras [cam_active]; Fvector vmove={0,0,0}; switch(cmd){ case kUP: case kDOWN: case kCAM_ZOOM_IN: case kCAM_ZOOM_OUT: cameras[cam_active]->Move(cmd); break; case kLEFT: case kRIGHT: if (eacFreeLook!=cam_active) cameras[cam_active]->Move(cmd); break; case kFWD: vmove.mad( C->vDirection, Device.fTimeDelta*Accel_mul ); break; case kBACK: vmove.mad( C->vDirection, -Device.fTimeDelta*Accel_mul ); break; case kR_STRAFE:{ Fvector right; right.crossproduct(C->vNormal,C->vDirection); vmove.mad( right, Device.fTimeDelta*Accel_mul ); }break; case kL_STRAFE:{ Fvector right; right.crossproduct(C->vNormal,C->vDirection); vmove.mad( right, -Device.fTimeDelta*Accel_mul ); }break; } if (cam_active != eacFreeFly || (pMPGame->Is_Spectator_Camera_Allowed(eacFreeFly) || (PS && PS->testFlag(GAME_PLAYER_FLAG_SPECTATOR)))) XFORM().c.add( vmove ); } }
void CUISkinSelectorWnd::SendMessage(CUIWindow *pWnd, s16 msg, void *pData) { game_cl_mp *game = NULL; //game_cl_Deathmatch * dm = NULL; switch (msg){ case BUTTON_CLICKED: game = smart_cast<game_cl_mp*>(&(Game())); //dm = smart_cast<game_cl_Deathmatch *>(&(Game())); /* if (pWnd == m_pButtons[0]) OnKeyLeft(); else if (pWnd == m_pButtons[1]) OnKeyRight(); else */if (pWnd == m_pBtnAutoSelect) { m_iActiveIndex = -1; OnBtnOK(); } else if (pWnd == m_pBtnSpectator) { HideDialog(); game->OnSpectatorSelect(); } else if (pWnd == m_pBtnBack) { HideDialog(); game->OnSkinMenuBack(); } else for (int i = 0; i<6; i++) if (pWnd == m_pImage[i]) { m_iActiveIndex = m_firstSkin+i; OnBtnOK(); } break; case WINDOW_FOCUS_RECEIVED: /* if (pWnd == m_pButtons[0]) { m_pAnims[0]->Rewind(0); m_pAnims[0]->Play(); } else if (pWnd == m_pButtons[1]) { m_pAnims[1]->Rewind(0); m_pAnims[1]->Play(); } */ break; } }
void CUITextVote::OnBtnOk(){ LPCSTR name = edit->GetText(); if (name && name[0]) { string512 command; sprintf(command, "cl_votestart $%s", name); Console->Execute(command); game_cl_mp* game = smart_cast<game_cl_mp*>(&Game()); game->StartStopMenu(this, true); } else return; }
void CUISpawnWnd::SendMessage(CUIWindow *pWnd, s16 msg, void *pData) { if (BUTTON_CLICKED == msg) { Game().StartStopMenu(this,true); game_cl_mp * game = smart_cast<game_cl_mp*>(&Game()); VERIFY(game); //game_cl_TeamDeathmatch * tdm = smart_cast<game_cl_TeamDeathmatch *>(&(Game())); if (pWnd == m_pImage1) game->OnTeamSelect(0); else if (pWnd == m_pImage2) game->OnTeamSelect(1); else if (pWnd == m_pBtnAutoSelect) game->OnTeamSelect(-1); else if (pWnd == m_pBtnSpectator) game->OnSpectatorSelect(); else if (pWnd == m_pBtnBack) game->OnTeamMenuBack(); } inherited::SendMessage(pWnd, msg, pData); }
void CUITalkWnd::Update() { //остановить разговор, если нужно if (g_actor && m_pActor && !m_pActor->IsTalking() ) { Game().StartStopMenu(this,true); }else{ CGameObject* pOurGO = smart_cast<CGameObject*>(m_pOurInvOwner); CGameObject* pOtherGO = smart_cast<CGameObject*>(m_pOthersInvOwner); if(NULL==pOurGO || NULL==pOtherGO || ((pOurGO->Position().distance_to(pOtherGO->Position())>3.0f)&&!m_pOthersInvOwner->NeedOsoznanieMode()) ) Game().StartStopMenu(this,true); } if(m_bNeedToUpdateQuestions) { UpdateQuestions (); } inherited::Update (); UpdateCameraDirection (smart_cast<CGameObject*>(m_pOthersInvOwner)); }
void CUIGameCTA::SetPlayerParamsToBuyMenu() { VERIFY(m_pCurBuyMenu); game_PlayerState* ps = Game().local_player; VERIFY2(ps, "local player not initialized"); CActor* actor = smart_cast<CActor*> (Level().Objects.net_Find(ps->GameID)); R_ASSERT2(actor || ps->testFlag(GAME_PLAYER_FLAG_VERY_VERY_DEAD), make_string("bad actor: not found in game (GameID = %d)", ps->GameID).c_str()); m_pCurBuyMenu->SetRank(ps->rank); m_pCurBuyMenu->SetMoneyAmount(ps->money_for_round); }
void game_state_accumulator::init_player(game_PlayerState* local_player) { m_local_player = local_player; init_player_accum_values (local_player); CUIMpTradeWnd* tmp_trade_wnd = NULL; game_cl_Deathmatch* tmp_dm_game = smart_cast<game_cl_Deathmatch*>(&Game()); if (tmp_dm_game) { tmp_trade_wnd = smart_cast<CUIMpTradeWnd*>(tmp_dm_game->GetBuyWnd()); } else { R_ASSERT(Game().Type() == eGameIDCaptureTheArtefact); CUIGameCTA* tmp_cta_ui = smart_cast<CUIGameCTA*>(CurrentGameUI()); VERIFY(tmp_cta_ui); tmp_trade_wnd = smart_cast<CUIMpTradeWnd*>(tmp_cta_ui->GetBuyWnd()); } R_ASSERT(tmp_trade_wnd); m_item_mngr = tmp_trade_wnd->GetItemMngr(); R_ASSERT(m_item_mngr); m_amm_groups.init (m_item_mngr); }
void ActorPlayer::setWeapon(int weaponId) { this->currentWeaponId = weaponId; // Construct the weapon model instance if(!model) { setModel("player_weapon"); } model->GetTransform().Translation() = glm::vec3(0, -0.3, -1.95); // Based on which weapon it is, select a reticle if(weaponId == 0) { Game()->GetHUD()->SetReticle("hud/reticle_sniper.png", glm::vec2(48, 48)); } else { Game()->GetHUD()->SetReticle("hud/reticle.png", glm::vec2(48, 48)); } //Save weapon this->currentWeapon = weapons[weaponId]; }
/************************************************************************ * 玩家经验值改变 ************************************************************************/ bool Controller::CheckPlayerIsInPortal() { Player* myPlayer = GetMyPlayer();//GetPlayerManager()->GetPlayer(m_strMyPlayerID); Point playerPosition = myPlayer->getPosition(); if (GetCurrentChapter() != CHAPTER_4 && Game()->GetPathManager()->IsInRect(Game()->GetSkillManager()->GetPortalAnimation()->GetScope(),playerPosition)) { if (GetCurrentChapter() == CHAPTER_1) { ChangeChapter(CHAPTER_2); } else if (GetCurrentChapter() == CHAPTER_2) { ChangeChapter(CHAPTER_3); } else if (GetCurrentChapter() == CHAPTER_3) { ChangeChapter(CHAPTER_4); } return true; } return false; }