DEADSOFTWARE

Change generated modules package and move annotations
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / actions / placeblock / PlaceSlabAction.kt
index 079d2258336b72a30524b0c590f03630fa111a35..00c62d7d94b392eb6e769a18366489c1a1417a4e 100644 (file)
@@ -6,10 +6,11 @@ import ru.deadsoftware.cavedroid.game.GameScope
 import ru.deadsoftware.cavedroid.game.mobs.MobsController
 import ru.deadsoftware.cavedroid.game.model.item.Item
 import ru.deadsoftware.cavedroid.game.world.GameWorld
+import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindPlaceBlockAction
 import javax.inject.Inject
-import kotlin.random.Random
 
 @GameScope
+@BindPlaceBlockAction(stringKey = PlaceSlabAction.ACTION_KEY)
 class PlaceSlabAction @Inject constructor(
     private val gameWorld: GameWorld,
     private val mobsController: MobsController,
@@ -22,8 +23,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 {