indent with tabs

This commit is contained in:
2023-01-02 13:05:43 +01:00
parent 8f95b1a750
commit 222b79b40a
100 changed files with 4783 additions and 4781 deletions

View File

@@ -8,113 +8,113 @@ ServerGame::ServerGame(server::Server* server) : game::Game(&m_ServerWorld), m_S
m_GoldMineTimer{ 1000, std::bind(&ServerGame::UpdateGoldMines, this) },
m_MobStatesTimer{ 5000, std::bind(&ServerGame::UpdateMobStates, this) },
m_EndGameCooldown{ 1000 * 10 } {
BindListener(this);
BindListener(this);
}
void ServerGame::Tick(std::uint64_t delta) {
if (m_GameState == game::GameState::Game) {
Game::Tick(delta);
m_MobStatesTimer.Update(delta);
UpdatePlayerStats();
} else if (m_GameState == game::GameState::EndGame) {
if (m_EndGameCooldown.Update(delta)) {
NotifyListeners(&game::GameListener::OnGameClose);
}
}
if (m_GameState == game::GameState::Game) {
Game::Tick(delta);
m_MobStatesTimer.Update(delta);
UpdatePlayerStats();
} else if (m_GameState == game::GameState::EndGame) {
if (m_EndGameCooldown.Update(delta)) {
NotifyListeners(&game::GameListener::OnGameClose);
}
}
}
void ServerGame::StartGame() {
BalanceTeams();
BalanceTeams();
protocol::WorldBeginDataPacket headerMapData(m_World);
m_Server->BroadcastPacket(&headerMapData);
protocol::WorldBeginDataPacket headerMapData(m_World);
m_Server->BroadcastPacket(&headerMapData);
protocol::WorldDataPacket mapData(m_World);
m_Server->BroadcastPacket(&mapData);
protocol::WorldDataPacket mapData(m_World);
m_Server->BroadcastPacket(&mapData);
InitPlayerStats();
InitPlayerStats();
m_GameState = game::GameState::Game;
m_GameState = game::GameState::Game;
}
void ServerGame::InitPlayerStats() {
static const unsigned int START_GOLD = 100;
static const unsigned int START_EXP = 0;
for (auto& [id, player] : m_Server->GetPlayers()) {
player.SetGold(START_GOLD);
player.SetExp(START_EXP);
player.getUpgrades().SetGoldPerSecond(5);
}
static const unsigned int START_GOLD = 100;
static const unsigned int START_EXP = 0;
for (auto& [id, player] : m_Server->GetPlayers()) {
player.SetGold(START_GOLD);
player.SetExp(START_EXP);
player.getUpgrades().SetGoldPerSecond(5);
}
}
void ServerGame::UpdatePlayerStats() {
m_GoldMineTimer.Update();
m_GoldMineTimer.Update();
}
void ServerGame::UpdateGoldMines() {
for (auto& [id, player] : m_Server->GetPlayers()) {
player.AddGold(player.getUpgrades().GetGoldPerSecond());
for (auto& [id, player] : m_Server->GetPlayers()) {
player.AddGold(player.getUpgrades().GetGoldPerSecond());
// Update player money and exp every second
protocol::UpdateMoneyPacket moneyPacket(player.GetGold());
m_Server->GetConnexions()[player.GetID()].SendPacket(&moneyPacket);
// Update player money and exp every second
protocol::UpdateMoneyPacket moneyPacket(player.GetGold());
m_Server->GetConnexions()[player.GetID()].SendPacket(&moneyPacket);
protocol::UpdateExpPacket expPacket(player.GetExp());
m_Server->GetConnexions()[player.GetID()].SendPacket(&expPacket);
}
protocol::UpdateExpPacket expPacket(player.GetExp());
m_Server->GetConnexions()[player.GetID()].SendPacket(&expPacket);
}
}
void ServerGame::UpdateMobStates() {
protocol::UpdateMobStatesPacket packet;
for (auto mob : m_World->GetMobList()) {
packet.addMobState({ mob->GetMobID(), mob->GetCenter(), mob->GetHealth(), mob->GetDirection() });
}
m_Server->BroadcastPacket(&packet);
protocol::UpdateMobStatesPacket packet;
for (auto mob : m_World->GetMobList()) {
packet.addMobState({ mob->GetMobID(), mob->GetCenter(), mob->GetHealth(), mob->GetDirection() });
}
m_Server->BroadcastPacket(&packet);
}
void ServerGame::BalanceTeams() {
for (auto& playerInfo : Game::m_Players) {
game::Player& player = playerInfo.second;
if (player.GetTeamColor() == game::TeamColor::None) {
game::Team& redTeam = GetRedTeam();
game::Team& blueTeam = GetBlueTeam();
if (blueTeam.GetPlayerCount() > redTeam.GetPlayerCount()) {
player.SetTeamColor(game::TeamColor::Red);
redTeam.AddPlayer(&player);
} else {
player.SetTeamColor(game::TeamColor::Blue);
blueTeam.AddPlayer(&player);
}
protocol::UpdatePlayerTeamPacket packet(player.GetID(), player.GetTeamColor());
m_Server->BroadcastPacket(&packet);
}
}
for (auto& playerInfo : Game::m_Players) {
game::Player& player = playerInfo.second;
if (player.GetTeamColor() == game::TeamColor::None) {
game::Team& redTeam = GetRedTeam();
game::Team& blueTeam = GetBlueTeam();
if (blueTeam.GetPlayerCount() > redTeam.GetPlayerCount()) {
player.SetTeamColor(game::TeamColor::Red);
redTeam.AddPlayer(&player);
} else {
player.SetTeamColor(game::TeamColor::Blue);
blueTeam.AddPlayer(&player);
}
protocol::UpdatePlayerTeamPacket packet(player.GetID(), player.GetTeamColor());
m_Server->BroadcastPacket(&packet);
}
}
}
void ServerGame::OnGameStateUpdate(game::GameState newState) {
SetGameState(newState);
protocol::UpdateGameStatePacket packet(newState);
m_Server->BroadcastPacket(&packet);
SetGameState(newState);
protocol::UpdateGameStatePacket packet(newState);
m_Server->BroadcastPacket(&packet);
}
void ServerGame::OnGameBegin() {
NotifyListeners(&game::GameListener::OnGameStateUpdate, game::GameState::Game);
StartGame();
NotifyListeners(&game::GameListener::OnGameStateUpdate, game::GameState::Game);
StartGame();
}
void ServerGame::OnGameEnd() {
NotifyListeners(&game::GameListener::OnGameStateUpdate, game::GameState::EndGame);
m_EndGameCooldown.ApplyCooldown();
NotifyListeners(&game::GameListener::OnGameStateUpdate, game::GameState::EndGame);
m_EndGameCooldown.ApplyCooldown();
}
void ServerGame::OnGameClose() {
NotifyListeners(&game::GameListener::OnGameStateUpdate, game::GameState::Closed);
// Disconnect clients
protocol::DisconnectPacket packet("Game finished");
m_Server->BroadcastPacket(&packet);
NotifyListeners(&game::GameListener::OnGameStateUpdate, game::GameState::Closed);
// Disconnect clients
protocol::DisconnectPacket packet("Game finished");
m_Server->BroadcastPacket(&packet);
// Closing server
m_Server->Close();
// Closing server
m_Server->Close();
}
} // namespace game