DEADSOFTWARE

Update version script
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / world / GameWorldMobDamageControllerTask.kt
1 package ru.deadsoftware.cavedroid.game.world
3 import com.badlogic.gdx.utils.Timer
4 import ru.deadsoftware.cavedroid.game.GameItemsHolder
5 import ru.deadsoftware.cavedroid.game.GameScope
6 import ru.deadsoftware.cavedroid.game.mobs.MobsController
7 import ru.deadsoftware.cavedroid.misc.utils.forEachBlockInArea
8 import javax.inject.Inject
9 import kotlin.math.max
11 @GameScope
12 class GameWorldMobDamageControllerTask @Inject constructor(
13 private val mobsController: MobsController,
14 private val gameWorld: GameWorld,
15 private val gameItemsHolder: GameItemsHolder,
16 ) : Timer.Task() {
18 override fun run() {
19 sequence {
20 yield(mobsController.player)
21 yieldAll(mobsController.mobs)
22 }.forEach { mob ->
23 forEachBlockInArea(mob) { x, y ->
24 val foregroundBlock = gameWorld.getForeMap(x, y)
25 val backgroundBlock = gameWorld.getBackMap(x, y)
27 val damage = max(foregroundBlock.params.damage, backgroundBlock.params.damage)
28 if (damage > 0) {
29 mob.damage(damage)
30 }
31 }
32 }
35 }
37 companion object {
38 const val ENVIRONMENTAL_MOB_DAMAGE_INTERVAL_SEC = 0.5f
39 }
41 }