From 3fbb6acac76329cf68f2fb1d341ca9d554047cb7 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Mon, 4 Jul 2022 10:42:31 +0200 Subject: [PATCH] fix initial stats --- include/game/server/ServerGame.h | 1 + src/game/server/ServerGame.cpp | 26 +++++++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/include/game/server/ServerGame.h b/include/game/server/ServerGame.h index 9e8cd7f..fdeab84 100644 --- a/include/game/server/ServerGame.h +++ b/include/game/server/ServerGame.h @@ -33,6 +33,7 @@ public: virtual void OnGameClose() override; private: void BalanceTeams(); + void InitPlayerStats(); void UpdateMobStates(); void UpdateGoldMines(); void UpdatePlayerStats(); diff --git a/src/game/server/ServerGame.cpp b/src/game/server/ServerGame.cpp index 3250f0d..74dcd39 100644 --- a/src/game/server/ServerGame.cpp +++ b/src/game/server/ServerGame.cpp @@ -32,24 +32,36 @@ void ServerGame::StartGame() { protocol::WorldDataPacket mapData(m_World); m_Server->BroadcastPacket(&mapData); + InitPlayerStats(); + m_GameState = game::GameState::Game; } +void ServerGame::InitPlayerStats() { + static const unsigned int START_GOLD = 100; + static const unsigned int START_EXP = 0; + static const unsigned int START_GOLD_PER_SEC = 5; + 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(); } void ServerGame::UpdateGoldMines() { - for (auto& pair : m_Server->GetPlayers()) { - game::Player* player = &pair.second; - 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); + 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); } }