feat: implement freeze effect

This commit is contained in:
2021-10-08 19:04:26 +02:00
parent 48b5372533
commit 4fcf25b5bc
5 changed files with 79 additions and 5 deletions

View File

@@ -321,6 +321,7 @@ bool World::saveMap(const std::string& fileName) const {
void World::tick(std::uint64_t delta) {
moveMobs(delta);
tickMobs(delta);
for(TowerPtr tower : m_Towers){
tower->tick(delta, this);
}
@@ -341,6 +342,12 @@ TowerPtr World::placeTowerAt(TowerID id, TowerType type, std::int32_t x, std::in
return tower;
}
void World::tickMobs(std::uint64_t delta) {
for(MobPtr mob : m_Mobs) {
mob->tick(delta);
}
}
void World::moveMobs(std::uint64_t delta) {
for (MobPtr mob : m_Mobs) {
TilePtr tile = getTile(mob->getX(), mob->getY());
@@ -354,6 +361,9 @@ void World::moveMobs(std::uint64_t delta) {
float walkAmount = mobWalkSpeed * ((float)delta / 1000.0f);
if(mob->hasEffect(EffectType::Slowness))
walkAmount *= 0.70;
switch (mob->getDirection()) {
case Direction::NegativeX: {
mob->setX(mob->getX() - walkAmount);