DEADSOFTWARE

Update version script
[cavedroid.git] / core / src / main / kotlin / ru / deadsoftware / cavedroid / game / actions / updateblock / UpdateRequiresBlockAction.kt
1 package ru.deadsoftware.cavedroid.game.actions.updateblock
3 import ru.deadsoftware.cavedroid.game.GameScope
4 import ru.deadsoftware.cavedroid.game.mobs.FallingBlock
5 import ru.deadsoftware.cavedroid.game.mobs.MobsController
6 import ru.deadsoftware.cavedroid.game.world.GameWorld
7 import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindUpdateBlockAction
8 import ru.deadsoftware.cavedroid.misc.utils.px
9 import javax.inject.Inject
11 @GameScope
12 @BindUpdateBlockAction(stringKey = UpdateRequiresBlockAction.ACTION_KEY)
13 class UpdateRequiresBlockAction @Inject constructor(
14 private val gameWorld: GameWorld,
15 private val mobsController: MobsController,
16 ) : IUpdateBlockAction {
18 override fun update(x: Int, y: Int) {
19 if (gameWorld.getForeMap(x, y + 1).params.hasCollision.not()) {
20 val block = gameWorld.getForeMap(x, y)
22 if (block.params.isFallable) {
23 gameWorld.resetForeMap(x, y)
24 FallingBlock(block.params.key, x.px, y.px)
25 .attachToController(mobsController)
26 } else {
27 gameWorld.destroyForeMap(x, y)
28 }
29 }
30 }
32 companion object {
33 const val ACTION_KEY = "requires_block"
34 }
35 }