feat: add pseudo end game
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user