feat: sync game

This commit is contained in:
2021-12-19 18:40:14 +01:00
parent f70661694b
commit 5d366b6f6c
11 changed files with 142 additions and 4 deletions

View File

@@ -4,13 +4,17 @@
namespace td {
namespace server {
ServerGame::ServerGame(server::Server* server) : game::Game(&m_ServerWorld), m_Server(server), m_ServerWorld(server, this) {
ServerGame::ServerGame(server::Server* server) : game::Game(&m_ServerWorld), m_Server(server), m_ServerWorld(server, this),
m_GoldMineTimer{ 1000, std::bind(&ServerGame::updateGoldMines, this) },
m_MobStatesTimer{ 5000, std::bind(&ServerGame::updateMobStates, this) },
m_EndGameCooldown{ 1000 * 10 } {
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)) {
@@ -55,6 +59,14 @@ void ServerGame::updateGoldMines() {
}
}
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);
}
void ServerGame::balanceTeams() {
for (auto& playerInfo : Game::m_Players) {
game::Player& player = playerInfo.second;

View File

@@ -66,5 +66,13 @@ void ServerWorld::OnMobDie(game::Mob* mob) {
}
}
void ServerWorld::OnMobCastleDamage(game::Mob* damager, game::TeamCastle* enemyCastle, float damage) {
// calling base class event
World::OnMobCastleDamage(damager, enemyCastle, damage);
protocol::UpdateCastleLifePacket packet(enemyCastle->getLife(), enemyCastle->getTeam()->getColor());
m_Server->broadcastPacket(&packet);
}
} // namespace server
} // namespace td