feat: add pseudo end game

This commit is contained in:
2021-12-12 16:59:35 +01:00
parent f09f79198d
commit e7bf22cea6
2 changed files with 11 additions and 1 deletions

View File

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

View File

@@ -106,6 +106,8 @@ bool World::saveMap(const std::string& fileName) const {
} }
void World::tick(std::uint64_t delta) { void World::tick(std::uint64_t delta) {
if(m_Game->getGameState() != GameState::Game) return;
tickMobs(delta); tickMobs(delta);
for (TowerPtr tower : m_Towers) { for (TowerPtr tower : m_Towers) {
tower->tick(delta, this); tower->tick(delta, this);
@@ -293,7 +295,7 @@ void World::OnExplosion(utils::shape::Circle explosion, float centerDamage, Towe
void World::OnMobCastleDamage(Mob* damager, TeamCastle* enemyCastle, float damage) { void World::OnMobCastleDamage(Mob* damager, TeamCastle* enemyCastle, float damage) {
enemyCastle->damage(damage); enemyCastle->damage(damage);
if (enemyCastle->getLife() <= 0) { if (enemyCastle->getLife() <= 0) {
// TODO: a team has won getWorldNotifier().notifyListeners(&WorldListener::OnGameEnd);
} }
} }
@@ -304,6 +306,10 @@ void World::OnMobDamage(Mob* target, float damage, Tower* source) {
} }
} }
void World::OnGameEnd(){
m_Game->setGameState(GameState::EndGame);
}
Team& World::getRedTeam() { Team& World::getRedTeam() {
return m_Game->getRedTeam(); return m_Game->getRedTeam();
} }