DEADSOFTWARE

db22c1b4f8c1e04d4cb25d8bec112d29c5a09f25
[cavedroid.git] /
1 package ru.fredboy.cavedroid.ux.physics.task
2
3 import com.badlogic.gdx.utils.Timer
4 import ru.fredboy.cavedroid.common.di.GameScope
5 import ru.fredboy.cavedroid.common.utils.forEachBlockInArea
6 import ru.fredboy.cavedroid.game.controller.mob.MobController
7 import ru.fredboy.cavedroid.game.world.GameWorld
8 import javax.inject.Inject
9 import kotlin.math.max
10
11 @GameScope
12 class GameWorldMobDamageControllerTask @Inject constructor(
13 private val mobController: MobController,
14 private val gameWorld: GameWorld,
15 ) : Timer.Task() {
16
17 override fun run() {
18 sequence {
19 yield(mobController.player)
20 yieldAll(mobController.mobs)
21 }.forEach { mob ->
22 forEachBlockInArea(mob) { x, y ->
23 val foregroundBlock = gameWorld.getForeMap(x, y)
24 val backgroundBlock = gameWorld.getBackMap(x, y)
25
26 val damage = max(foregroundBlock.params.damage, backgroundBlock.params.damage)
27 if (damage > 0) {
28 mob.damage(damage)
29 }
30 }
31 }
32
33
34 }
35
36 companion object {
37 const val ENVIRONMENTAL_MOB_DAMAGE_INTERVAL_SEC = 0.5f
38 }
39
40 }