DEADSOFTWARE

Add furnace, more craft and items
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / objects / furnace / FurnaceController.kt
1 package ru.deadsoftware.cavedroid.game.objects.furnace
3 import ru.deadsoftware.cavedroid.game.GameItemsHolder
4 import ru.deadsoftware.cavedroid.game.GameScope
5 import ru.deadsoftware.cavedroid.game.objects.drop.DropController
6 import ru.deadsoftware.cavedroid.misc.utils.px
7 import java.io.Serializable
8 import javax.inject.Inject
10 @GameScope
11 class FurnaceController @Inject constructor() : Serializable {
13 private val furnaceMap = mutableMapOf<String, Furnace>()
15 fun init(gameItemsHolder: GameItemsHolder) {
16 furnaceMap.forEach { _, fur -> fur.init(gameItemsHolder) }
17 }
19 fun getFurnace(x: Int, y: Int, z: Int): Furnace? {
20 return furnaceMap["$x;$y;$z"]
21 }
23 fun addFurnace(x: Int, y: Int, z: Int) {
24 furnaceMap["$x;$y;$z"] = Furnace()
25 }
27 fun destroyFurnace(x: Int, y: Int, z: Int, dropController: DropController) {
28 val furnace = furnaceMap.remove("$x;$y;$z") ?: return
29 val xPx = (x + .5f).px
30 val yPx = (y + .5f).px
32 furnace.input?.let { dropController.addDrop(xPx, yPx, it) }
33 furnace.fuel?.let { dropController.addDrop(xPx, yPx, it) }
34 furnace.result?.let { dropController.addDrop(xPx, yPx, it) }
35 }
37 fun update(gameItemsHolder: GameItemsHolder) {
38 furnaceMap.forEach { _, furnace ->
39 furnace.update(gameItemsHolder)
40 }
41 }
43 }