X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Factions%2Fupdateblock%2FUpdateRequiresBlockAction.kt;h=53f56e3ff682181133244d3eb0f3098e782b4687;hb=6bb7e1d207c640ff3b8e41ce2fb1c6203985bdb1;hp=6b15a7acbc963ea7ec35a43008104628e2828e99;hpb=d9211ab755d82ecf9553527a734ab5db38f8fe74;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt index 6b15a7a..53f56e3 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt @@ -1,18 +1,31 @@ package ru.deadsoftware.cavedroid.game.actions.updateblock import ru.deadsoftware.cavedroid.game.GameScope +import ru.deadsoftware.cavedroid.game.mobs.FallingBlock +import ru.deadsoftware.cavedroid.game.mobs.MobsController import ru.deadsoftware.cavedroid.game.world.GameWorld +import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindUpdateBlockAction +import ru.deadsoftware.cavedroid.misc.utils.px import javax.inject.Inject @GameScope -@UpdateBlockAction(stringKey = UpdateRequiresBlockAction.ACTION_KEY) +@BindUpdateBlockAction(stringKey = UpdateRequiresBlockAction.ACTION_KEY) class UpdateRequiresBlockAction @Inject constructor( private val gameWorld: GameWorld, + private val mobsController: MobsController, ) : IUpdateBlockAction { override fun update(x: Int, y: Int) { if (gameWorld.getForeMap(x, y + 1).params.hasCollision.not()) { - gameWorld.destroyForeMap(x, y) + val block = gameWorld.getForeMap(x, y) + + if (block.params.isFallable) { + gameWorld.resetForeMap(x, y) + FallingBlock(block.params.key, x.px, y.px) + .attachToController(mobsController) + } else { + gameWorld.destroyForeMap(x, y) + } } }