refactor: add game listener

This commit is contained in:
2021-12-13 19:45:01 +01:00
parent 61166023df
commit 2148c0050c
6 changed files with 46 additions and 16 deletions

View File

@@ -12,11 +12,25 @@ enum class GameState : std::uint8_t {
Game,
EndGame,
Disconnected,
Closed
};
typedef std::map<std::uint8_t, Player> PlayerList;
class Game {
class GameListener {
public:
virtual void OnPlayerJoin(PlayerID player) {}
virtual void OnPlayerLeave(PlayerID player) {}
virtual void OnGameStateUpdate(GameState newState) {}
virtual void OnGameBegin() {}
virtual void OnGameEnd() {}
virtual void OnGameClose() {}
};
typedef utils::ObjectNotifier<GameListener> GameNotifier;
class Game : public GameNotifier {
protected:
World* m_World;
TeamList m_Teams = { Team{TeamColor::Red}, Team{TeamColor::Blue} };

View File

@@ -125,8 +125,6 @@ class WorldListener {
public:
WorldListener() {}
virtual void OnGameEnd() {}
virtual void OnTowerAdd(TowerPtr tower) {}
virtual void OnTowerRemove(TowerPtr tower) {}
@@ -231,8 +229,6 @@ public:
virtual void OnArrowShot(MobPtr target, bool fire, Tower* shooter);
virtual void OnExplosion(utils::shape::Circle explosion, float centerDamage, Tower* shooter);
virtual void OnGameEnd();
// MobListener
virtual void OnMobDamage(Mob* target, float damage, Tower* source);

View File

@@ -9,7 +9,7 @@ namespace server {
class Server;
class ServerGame : public game::Game {
class ServerGame : public game::Game, public game::GameListener {
private:
Server* m_Server;
ServerWorld m_ServerWorld;
@@ -22,6 +22,13 @@ public:
virtual void tick(std::uint64_t delta);
void startGame();
// GameListener
virtual void OnGameStateUpdate(game::GameState newState);
virtual void OnGameBegin();
virtual void OnGameEnd();
virtual void OnGameClose();
private:
void balanceTeams();
void updateGoldMines();