X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Factions%2Fplaceblock%2FPlaceSlabAction.kt;h=00c62d7d94b392eb6e769a18366489c1a1417a4e;hb=3a443514027417133d7a7e18766720dfea028a87;hp=079d2258336b72a30524b0c590f03630fa111a35;hpb=8b34480aaaf0112671d319accff573030079c7b6;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt b/core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt index 079d225..00c62d7 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt @@ -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 {