DEADSOFTWARE

MainComponent in kotlin
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / actions / updateblock / UpdateGrassAction.kt
index 27005b8da53f4eb008c31ab26ba92b2568f11953..476235a3dae9671dd240f057045364770ace0a3c 100644 (file)
@@ -3,9 +3,11 @@ package ru.deadsoftware.cavedroid.game.actions.updateblock
 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,
@@ -13,8 +15,12 @@ class UpdateGrassAction @Inject constructor(
 
     override fun update(x: Int, y: Int) {
         val blockOnTop = gameWorld.getForeMap(x, y - 1)
-        if (blockOnTop.collision || blockOnTop.isFluid()) {
-            gameWorld.setForeMap(x, y, mGameItemsHolder.getBlock("dirt"))
+
+        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"))
         }
     }