DEADSOFTWARE

Update README
[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 mob.damage(max(foregroundBlock.params.damage, backgroundBlock.params.damage))
28 }
29 }
32 }
34 companion object {
35 const val ENVIRONMENTAL_MOB_DAMAGE_INTERVAL_SEC = 0.5f
36 }
38 }