X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Factions%2Fupdateblock%2FUpdateGrassAction.kt;h=476235a3dae9671dd240f057045364770ace0a3c;hb=3a443514027417133d7a7e18766720dfea028a87;hp=a50c541c9d5df9738e1fd767e1df406cfc775b92;hpb=894d9f1babeff18c9cbb5f83206ff2c549de0bdb;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt index a50c541..476235a 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt @@ -1,19 +1,26 @@ package ru.deadsoftware.cavedroid.game.actions.updateblock -import ru.deadsoftware.cavedroid.game.GameItems +import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.world.GameWorld +import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindUpdateBlockAction import javax.inject.Inject @GameScope +@BindUpdateBlockAction(stringKey = UpdateGrassAction.BLOCK_KEY) class UpdateGrassAction @Inject constructor( private val gameWorld: GameWorld, + private val mGameItemsHolder: GameItemsHolder, ) : IUpdateBlockAction { override fun update(x: Int, y: Int) { - val blockOnTop = gameWorld.getForeMapBlock(x, y - 1) - if (blockOnTop.collision || blockOnTop.fluid) { - gameWorld.setForeMap(x, y, GameItems.getBlockId("dirt")) + val blockOnTop = gameWorld.getForeMap(x, y - 1) + + val makesDirt = blockOnTop.params.hasCollision || blockOnTop.isFluid() + + when { + makesDirt -> gameWorld.setForeMap(x, y, mGameItemsHolder.getBlock("dirt")) + blockOnTop.params.key == "snow" -> gameWorld.setForeMap(x, y, mGameItemsHolder.getBlock("grass_snowed")) } }