DEADSOFTWARE

Bug fixes
authorfredboy <fredboy@protonmail.com>
Tue, 1 Jul 2025 11:17:35 +0000 (18:17 +0700)
committerfredboy <fredboy@protonmail.com>
Tue, 1 Jul 2025 11:17:35 +0000 (18:17 +0700)
core/entity/drop/src/main/kotlin/ru/fredboy/cavedroid/entity/drop/abstraction/DropAdapter.kt
core/entity/mob/src/main/kotlin/ru/fredboy/cavedroid/entity/mob/abstraction/PlayerAdapter.kt [new file with mode: 0644]
core/entity/mob/src/main/kotlin/ru/fredboy/cavedroid/entity/mob/model/Mob.kt
core/entity/mob/src/main/kotlin/ru/fredboy/cavedroid/entity/mob/model/Player.kt
core/game/controller/drop/src/main/kotlin/ru/fredboy/cavedroid/game/controller/drop/impl/DropAdapterImpl.kt
core/game/controller/mob/src/main/kotlin/ru/fredboy/cavedroid/game/controller/mob/behavior/PlayerMobBehavior.kt
core/game/controller/mob/src/main/kotlin/ru/fredboy/cavedroid/game/controller/mob/di/MobControllerModule.kt
core/game/controller/mob/src/main/kotlin/ru/fredboy/cavedroid/game/controller/mob/impl/PlayerAdapterImpl.kt [new file with mode: 0644]
core/game/window/src/main/kotlin/ru/fredboy/cavedroid/game/window/GameWindowsManager.kt
core/ux/physics/src/main/java/ru/fredboy/cavedroid/ux/physics/GamePhysics.java
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/di/GameComponent.kt

index 0215ba7d11393ce5dcbe990c6f819950f61a4ac2..28403781e96aa8ef179164e9bb6acd59ba72b232 100644 (file)
@@ -1,9 +1,12 @@
 package ru.fredboy.cavedroid.entity.drop.abstraction
 
 import ru.fredboy.cavedroid.domain.items.model.inventory.Inventory
+import ru.fredboy.cavedroid.domain.items.model.inventory.InventoryItem
 
 interface DropAdapter {
 
     fun dropInventory(x: Float, y: Float, inventory: Inventory)
 
+    fun dropItems(x: Float, y: Float, items: List<InventoryItem>)
+
 }
\ No newline at end of file
diff --git a/core/entity/mob/src/main/kotlin/ru/fredboy/cavedroid/entity/mob/abstraction/PlayerAdapter.kt b/core/entity/mob/src/main/kotlin/ru/fredboy/cavedroid/entity/mob/abstraction/PlayerAdapter.kt
new file mode 100644 (file)
index 0000000..f1e9b82
--- /dev/null
@@ -0,0 +1,9 @@
+package ru.fredboy.cavedroid.entity.mob.abstraction
+
+interface PlayerAdapter {
+    val x: Float
+    val y: Float
+
+    val width: Float
+    val height: Float
+}
\ No newline at end of file
index e64f973305201556278ae68a3430815f565bec2a..342691103bb403a9e6c8a0c64142d8b0e3bce881 100644 (file)
@@ -153,7 +153,7 @@ abstract class Mob(
             health = Int.MAX_VALUE - heal
         }
 
-        health += health
+        health += heal
         checkHealth()
     }
 
index 36a8bb5b2f1fd4c8bcd6c5d385062ecffe24aad2..8ac4643838ca0f667ba751b2c4cbae231b4bd46c 100644 (file)
@@ -69,6 +69,10 @@ class Player(
     }
 
     override fun damage(damage: Int) {
+        if (gameMode == 1) {
+            return
+        }
+
         super.damage(damage)
 
         if (damage > 0 && canJump) {
index 66d558d651eb47b8229e363ea1f26c532b207b3f..a75639b0947e1b998d63bccc42b9aa6b635f86e3 100644 (file)
@@ -2,6 +2,7 @@ package ru.fredboy.cavedroid.game.controller.drop.impl
 
 import ru.fredboy.cavedroid.common.di.GameScope
 import ru.fredboy.cavedroid.domain.items.model.inventory.Inventory
+import ru.fredboy.cavedroid.domain.items.model.inventory.InventoryItem
 import ru.fredboy.cavedroid.entity.drop.abstraction.DropAdapter
 import ru.fredboy.cavedroid.game.controller.drop.DropController
 import javax.inject.Inject
@@ -12,10 +13,12 @@ internal class DropAdapterImpl @Inject constructor(
 ) : DropAdapter {
 
     override fun dropInventory(x: Float, y: Float, inventory: Inventory) {
-        inventory.items.forEach { item ->
-            dropController.addDrop(x, y, item)
-        }
+        dropItems(x, y, inventory.items)
         inventory.clear()
     }
 
+    override fun dropItems(x: Float, y: Float, items: List<InventoryItem>) {
+        items.forEach { item -> dropController.addDrop(x, y, item) }
+    }
+
 }
\ No newline at end of file
index bc9b90c0d083f01a2cda182fb392c587120f69e7..f36fd95e68fb5ebb4479b8f09b7140d3f2377944 100644 (file)
@@ -44,7 +44,9 @@ class PlayerMobBehavior : BaseMobBehavior<Player>(
                     toolLevel >= targetBlock.params.toolLevel
                 }
 
-                decreaseCurrentItemCount()
+                if (activeItem.item.isTool()) {
+                    decreaseCurrentItemCount()
+                }
 
                 when (targetLayer) {
                     Layer.FOREGROUND -> worldAdapter.destroyForegroundBlock(cursorX, cursorY, shouldDrop)
index d2ff0af087be7e38855fed837e8f25b215269e8b..c966a262309473a9b39f8f60e6adde9532aa0e47 100644 (file)
@@ -1,8 +1,13 @@
 package ru.fredboy.cavedroid.game.controller.mob.di
 
+import dagger.Binds
 import dagger.Module
+import ru.fredboy.cavedroid.entity.mob.abstraction.PlayerAdapter
+import ru.fredboy.cavedroid.game.controller.mob.impl.PlayerAdapterImpl
 
 @Module
 abstract class MobControllerModule {
 
+    @Binds
+    internal abstract fun bindPlayerAdapter(impl: PlayerAdapterImpl): PlayerAdapter
 }
\ No newline at end of file
diff --git a/core/game/controller/mob/src/main/kotlin/ru/fredboy/cavedroid/game/controller/mob/impl/PlayerAdapterImpl.kt b/core/game/controller/mob/src/main/kotlin/ru/fredboy/cavedroid/game/controller/mob/impl/PlayerAdapterImpl.kt
new file mode 100644 (file)
index 0000000..c89e641
--- /dev/null
@@ -0,0 +1,26 @@
+package ru.fredboy.cavedroid.game.controller.mob.impl
+
+import ru.fredboy.cavedroid.common.di.GameScope
+import ru.fredboy.cavedroid.entity.mob.abstraction.PlayerAdapter
+import ru.fredboy.cavedroid.game.controller.mob.MobController
+import javax.inject.Inject
+
+@GameScope
+class PlayerAdapterImpl @Inject constructor(
+    private val mobController: MobController,
+) : PlayerAdapter {
+
+    private val player get() = mobController.player
+
+    override val x: Float
+        get() = player.x
+
+    override val y: Float
+        get() = player.y
+
+    override val width: Float
+        get() = player.width
+
+    override val height: Float
+        get() = player.height
+}
\ No newline at end of file
index f5265892607a65850c0090603f5efe27794fbbca..0264cf8467decbe594d7953074b25951cfdcb693 100644 (file)
@@ -4,7 +4,10 @@ import ru.fredboy.cavedroid.common.di.GameScope
 import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository
 import ru.fredboy.cavedroid.entity.container.model.Chest
 import ru.fredboy.cavedroid.entity.container.model.Furnace
+import ru.fredboy.cavedroid.entity.drop.abstraction.DropAdapter
+import ru.fredboy.cavedroid.entity.mob.abstraction.PlayerAdapter
 import ru.fredboy.cavedroid.game.window.inventory.AbstractInventoryWindow
+import ru.fredboy.cavedroid.game.window.inventory.AbstractInventoryWindowWithCraftGrid
 import ru.fredboy.cavedroid.game.window.inventory.ChestInventoryWindow
 import ru.fredboy.cavedroid.game.window.inventory.CraftingInventoryWindow
 import ru.fredboy.cavedroid.game.window.inventory.CreativeInventoryWindow
@@ -16,6 +19,8 @@ import javax.inject.Inject
 class GameWindowsManager @Inject constructor(
     private val tooltipManager: TooltipManager,
     private val itemsRepository: ItemsRepository,
+    private val dropAdapter: DropAdapter,
+    private val playerAdapter: PlayerAdapter,
 ) {
 
     var creativeScrollAmount = 0
@@ -47,11 +52,9 @@ class GameWindowsManager @Inject constructor(
     }
 
     fun closeWindow() {
-//        (currentWindow as? AbstractInventoryWindowWithCraftGrid)?.let { window ->
-//            window.craftingItems.forEach { item ->
-//                dropController.addDrop(mobController.player.x, mobController.player.y, item)
-//            }
-//        }
+        (currentWindow as? AbstractInventoryWindowWithCraftGrid)?.let { window ->
+            dropAdapter.dropItems(playerAdapter.x, playerAdapter.y, window.craftingItems)
+        }
         currentWindow = null
         tooltipManager.showMouseTooltip("")
     }
index 511f6d8da70c0e077f97b513e0ebb11bc2f24c2b..1062afcf037456fea16dcbfc2d4a8c6fdbe2b16e 100644 (file)
@@ -13,6 +13,7 @@ import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepositor
 import ru.fredboy.cavedroid.domain.items.model.block.Block;
 import ru.fredboy.cavedroid.domain.items.model.inventory.InventoryItem;
 import ru.fredboy.cavedroid.domain.items.usecase.GetItemByKeyUseCase;
+import ru.fredboy.cavedroid.entity.drop.abstraction.DropAdapter;
 import ru.fredboy.cavedroid.entity.drop.model.Drop;
 import ru.fredboy.cavedroid.entity.mob.model.FallingBlock;
 import ru.fredboy.cavedroid.entity.mob.model.Mob;
@@ -37,18 +38,21 @@ public class GamePhysics {
     private final MobController mMobController;
     private final DropController mDropController;
     private final GetItemByKeyUseCase mGetItemByKeyUseCase;
+    private final DropAdapter mDropAdapter;
 
     @Inject
     public GamePhysics(GameWorld gameWorld,
                        ApplicationContextRepository gameContextRepository,
                        MobController mobController,
                        DropController dropController,
-                       GetItemByKeyUseCase getItemByKeyUseCase) {
+                       GetItemByKeyUseCase getItemByKeyUseCase,
+                       DropAdapter dropAdapter) {
         mGameWorld = gameWorld;
         mGameContextRepository = gameContextRepository;
         mMobController = mobController;
         mDropController = dropController;
         mGetItemByKeyUseCase = getItemByKeyUseCase;
+        mDropAdapter = dropAdapter;
     }
 
     /**
@@ -380,7 +384,7 @@ public class GamePhysics {
 //            for (InventoryItem invItem : player.getInventory().getItems()) {
 //                mDropController.addDrop(player.x, player.y, invItem);
 //            }
-            player.getInventory().clear();
+            mDropAdapter.dropInventory(player.x, player.y, player.getInventory());
             mMobController.respawnPlayer();
         }
     }
index 4dd9f87e3e182a40533615971f507bbe268740de..8d9e9f7960154d3777f92ea8d03c8249bff89406 100644 (file)
@@ -8,6 +8,7 @@ import ru.fredboy.cavedroid.data.configuration.di.GameContextModule
 import ru.fredboy.cavedroid.data.configuration.model.GameContext
 import ru.fredboy.cavedroid.game.controller.container.di.ControllerContainerModule
 import ru.fredboy.cavedroid.game.controller.drop.di.ControllerDropModule
+import ru.fredboy.cavedroid.game.controller.mob.di.MobControllerModule
 import ru.fredboy.cavedroid.game.world.di.GameWorldModule
 import ru.fredboy.cavedroid.zygote.di.ApplicationComponent
 import ru.fredboy.cavedroid.zygote.game.GameProc
@@ -28,6 +29,7 @@ import ru.fredboy.cavedroid.zygote.game.GameProc
         ControllerContainerModule::class,
         ControllerDropModule::class,
         GameContextModule::class,
+        MobControllerModule::class,
     ]
 )
 interface GameComponent {