Files
Tower-Defense/src/td/game/BaseGame.cpp

67 lines
1.1 KiB
C++

#include "td/game/BaseGame.h"
namespace td {
namespace game {
Game::Game(World* world) : m_World(world) {
}
Game::~Game() {
}
void Game::Tick(std::uint64_t delta) {
if (m_GameState == GameState::Game) {
m_World->Tick(delta);
}
}
void Game::Reset() {
m_World->Reset();
for (auto team : m_Teams) {
team.ClearPlayers();
}
for (auto& [id, player] : m_Players) {
player.SetExp(0);
player.SetGold(0);
player.SetTeamColor(TeamColor::None);
}
}
Player* Game::GetPlayerById(PlayerID id) {
auto it = m_Players.find(id);
if (it == m_Players.end()) return nullptr;
return &it->second;
}
const Player* Game::GetPlayerById(PlayerID id) const {
auto it = m_Players.find(id);
if (it == m_Players.end()) return nullptr;
return &it->second;
}
void Game::RemovePlayer(PlayerID pId) {
Player* player = GetPlayerById(pId);
if (!player) return;
TeamColor team = player->GetTeamColor();
GetTeam(team).RemovePlayer(player);
auto it = GetPlayers().find(pId);
if (it == GetPlayers().end()) return;
GetPlayers().erase(it);
}
} // namespace game
} // namespace td