DEADSOFTWARE

Game action modules generation
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / actions / placeblock / PlaceSlabAction.kt
index 079d2258336b72a30524b0c590f03630fa111a35..3e0a185fee805a1fc803053ddb734178fae3f12a 100644 (file)
@@ -7,9 +7,9 @@ import ru.deadsoftware.cavedroid.game.mobs.MobsController
 import ru.deadsoftware.cavedroid.game.model.item.Item
 import ru.deadsoftware.cavedroid.game.world.GameWorld
 import javax.inject.Inject
-import kotlin.random.Random
 
 @GameScope
+@PlaceBlockAction(stringKey = PlaceSlabAction.ACTION_KEY)
 class PlaceSlabAction @Inject constructor(
     private val gameWorld: GameWorld,
     private val mobsController: MobsController,
@@ -22,8 +22,18 @@ class PlaceSlabAction @Inject constructor(
             return
         }
 
-        val slabPart = if (Random.nextBoolean()) placeable.topPartBlock else placeable.bottomPartBlock
-        gameWorld.placeToForeground(x, y, slabPart)
+        val slabPart = if ((gameWorld.hasForeAt(x, y - 1)
+                    || gameWorld.getForeMap(x - 1, y) == placeable.topPartBlock
+                    || gameWorld.getForeMap(x + 1, y) == placeable.topPartBlock)
+            && !gameWorld.hasForeAt(x, y + 1)) {
+            placeable.topPartBlock
+        } else {
+            placeable.bottomPartBlock
+        }
+
+        if (gameWorld.placeToForeground(x, y, slabPart)) {
+            mobsController.player.decreaseCurrentItemCount(gameItemsHolder)
+        }
     }
 
     companion object {