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
--- /dev/null
+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
health = Int.MAX_VALUE - heal
}
- health += health
+ health += heal
checkHealth()
}
}
override fun damage(damage: Int) {
+ if (gameMode == 1) {
+ return
+ }
+
super.damage(damage)
if (damage > 0 && canJump) {
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
) : 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
toolLevel >= targetBlock.params.toolLevel
}
- decreaseCurrentItemCount()
+ if (activeItem.item.isTool()) {
+ decreaseCurrentItemCount()
+ }
when (targetLayer) {
Layer.FOREGROUND -> worldAdapter.destroyForegroundBlock(cursorX, cursorY, shouldDrop)
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
--- /dev/null
+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
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
class GameWindowsManager @Inject constructor(
private val tooltipManager: TooltipManager,
private val itemsRepository: ItemsRepository,
+ private val dropAdapter: DropAdapter,
+ private val playerAdapter: PlayerAdapter,
) {
var creativeScrollAmount = 0
}
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("")
}
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;
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;
}
/**
// 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();
}
}
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
ControllerContainerModule::class,
ControllerDropModule::class,
GameContextModule::class,
+ MobControllerModule::class,
]
)
interface GameComponent {