ribi::tictactoe::Game::Game() noexcept : m_signal_changed{}, m_board(new Board), m_current_player(Player::player1) { #ifndef NDEBUG Test(); #endif assert(GetCurrentTurn() == 0); }
void CGameManager::LoadUnitsFromScript(void) { for (decltype(m_vScriptSpawns.size()) i = 0; i < m_vScriptSpawns.size(); ++i) { ScriptedSpawn s = m_vScriptSpawns[i]; if (GetCurrentTurn() == s.first) { CSpawnUnitMessage* pMSG = new CSpawnUnitMessage(Vec2D(s.second.sPos), s.second.nPlayerID, s.second.eType, s.second.nFacing); CMessageSystem::GetInstance()->SendMessageW(pMSG); m_vScriptSpawns.erase(m_vScriptSpawns.begin() + i); --i; } } CMessageSystem::GetInstance()->ProcessMessages(); }
void CGameManager::NextPhase(void) { int numcols= CTileManager::GetInstance()->GetNumColumns(); int numrows= CTileManager::GetInstance()->GetNumRows(); m_nPhaseCount++; if (m_nCurrentLevel != 5) { if (GetCurrentTurn() % 2 == 0) CGameplayState::GetInstance()->SetDayTime(false); else CGameplayState::GetInstance()->SetDayTime(true); } if (m_nCurrentPhase == GP_MOVE) { CAIManager::GetInstance()->BeginAttack(); //Attack!!!(Attack Phase Transition)-DG CStateStack::GetInstance()->Push(CAttackPhaseTransState::GetInstance()); m_nCurrentPhase = GP_ATTACK; if (GetTutorial()==true && GetCurrentPlayer()->GetPlayerID()==0 && GetCurrentTurn()==1) { CTutorialTextState::GetInstance()->SetTexttoShow(TTU_ATTACK); CStateStack::GetInstance()->Push(CTutorialTextState::GetInstance()); } if (GetTutorial()==true && GetCurrentPlayer()->GetPlayerID()==0 && GetCurrentTurn()==2) { CTutorialTextState::GetInstance()->SetTexttoShow(TTU_SPELLS); CStateStack::GetInstance()->Push(CTutorialTextState::GetInstance()); } if (GetTutorial()==true && GetCurrentPlayer()->GetPlayerID()==0 && GetCurrentTurn()==3) { CTutorialTextState::GetInstance()->SetTexttoShow(TTU_ATTACKTACTICS); CStateStack::GetInstance()->Push(CTutorialTextState::GetInstance()); } } else if (m_nCurrentPhase == GP_ATTACK) { if( m_bExtraTurn == false ) { CPlayer* pTemp = m_pCurrentPlayer; m_nCurrentPhase = GP_MOVE; m_pCurrentPlayer = m_pNextPlayer; m_pNextPlayer = pTemp; } else { m_nCurrentPhase = GP_MOVE; m_bExtraTurn = false; } //Chilling the cooldown: this function does the cooldowndown each turn -DG CHero* Hero = dynamic_cast <CHero*>(GetChampion(m_pCurrentPlayer->GetPlayerID())); Hero->ChillCooldown(); m_pCurrentPlayer->SetAP(nStartingAP); m_pCurrentPlayer->SetMaxPopCap(STARTING_CAP_PER_TURN); //Look At That, TileManager Takeing care of business! This added resoruces based on the owned tiles -DG CTileManager::GetInstance()->EvaluateResources(m_pCurrentPlayer->GetPlayerID()); CGameplayState::GetInstance()->ClearSelections(); if (GetChampion(m_pCurrentPlayer->GetPlayerID()) != nullptr) { CGameplayState::GetInstance()->SnapToPosition(GetChampion(m_pCurrentPlayer->GetPlayerID())->GetPos(), true); } CAIManager::GetInstance()->BeginMovement(); for (decltype(m_vUnits.size()) i = 0; i < m_vUnits.size(); ++i) { if (m_vUnits[i]->GetPlayerID() == m_pCurrentPlayer->GetPlayerID()) { m_vUnits[i]->SetTilesMoved(0); m_vUnits[i]->SetHasAttacked(false); m_vUnits[i]->UpdateEffects(); } } //RAISE THE CASTLE WALLS!!!(Do the movement transition)-DG CStateStack::GetInstance()->Push(CMovetPhaseTransState::GetInstance()); if (GetTutorial()==true && GetCurrentPlayer()->GetPlayerID()==0 && GetCurrentTurn()==2) { CTutorialTextState::GetInstance()->SetTexttoShow(TTU_MOVETACTICS); CStateStack::GetInstance()->Push(CTutorialTextState::GetInstance()); } } }