DEADSOFTWARE

29641118ebfa817139bc68e30495cd04b652b087
[cavedroid.git] /
1 package ru.fredboy.cavedroid.ux.controls.action.useitem
2
3 import ru.fredboy.cavedroid.common.di.GameScope
4 import ru.fredboy.cavedroid.domain.items.model.item.Item
5 import ru.fredboy.cavedroid.domain.items.usecase.GetBlockByKeyUseCase
6 import ru.fredboy.cavedroid.domain.items.usecase.GetItemByKeyUseCase
7 import ru.fredboy.cavedroid.game.controller.mob.MobController
8 import ru.fredboy.cavedroid.game.world.GameWorld
9 import ru.fredboy.cavedroid.ux.controls.action.annotation.BindUseItemAction
10 import javax.inject.Inject
11
12 @GameScope
13 @BindUseItemAction(UseWaterBucketAction.ACTION_KEY)
14 class UseWaterBucketAction @Inject constructor(
15 private val gameWorld: GameWorld,
16 private val mobsController: MobController,
17 private val getBlockByKeyUseCase: GetBlockByKeyUseCase,
18 private val getItemByKeyUseCase: GetItemByKeyUseCase,
19 ) : IUseItemAction {
20
21 override fun perform(item: Item.Usable, x: Int, y: Int) {
22 gameWorld.placeToForeground(x, y, getBlockByKeyUseCase["water"])
23 if (mobsController.player.gameMode != 1) {
24 mobsController.player.setCurrentInventorySlotItem(getItemByKeyUseCase["bucket_empty"])
25 }
26 }
27
28 companion object {
29 const val ACTION_KEY = "use_water_bucket"
30 }
31
32 }