feat: implement freeze effect
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user