[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / actions / updateblock / UpdateGrassAction.kt
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 a9397c9ef0e58d0aa26edc9d222cdb3a5141b26f..476235a3dae9671dd240f057045364770ace0a3c 100644 (file)
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.isFluid()) {
- 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"))
}
}