all crafting stations now use UICrafting

This commit is contained in:
minjaesong
2024-01-27 22:46:18 +09:00
parent 253ce1054f
commit 0af1e7004d
5 changed files with 10 additions and 41 deletions

View File

@@ -735,12 +735,10 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
(Toolkit.drawWidth - ui.width) / 4, (Toolkit.drawWidth - ui.width) / 4,
(App.scr.height - ui.height) / 4 // what the fuck? (App.scr.height - ui.height) / 4 // what the fuck?
) )
if (fixture.mainUIopenFun == null) { // if (fixture.mainUIopenFun == null)
ui.setAsOpen() ui.setAsOpen()
} // else
else { // fixture.mainUIopenFun!!.invoke(ui)
fixture.mainUIopenFun!!.invoke(ui)
}
} }
} }
0L 0L

View File

@@ -158,7 +158,7 @@ open class FixtureBase : ActorWithBody, CuedByTerrainChange {
@Transient var mainUI: UICanvas? = null @Transient var mainUI: UICanvas? = null
var inventory: FixtureInventory? = null var inventory: FixtureInventory? = null
@Transient var mainUIopenFun: ((UICanvas) -> Unit)? = null // @Transient var mainUIopenFun: ((UICanvas) -> Unit)? = null
internal var actorThatInstalledThisFixture: UUID? = null internal var actorThatInstalledThisFixture: UUID? = null

View File

@@ -12,6 +12,7 @@ import net.torvald.terrarum.gameparticles.ParticleVanishingSprite
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
import net.torvald.terrarum.modulebasegame.ui.UICrafting
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
@@ -26,7 +27,8 @@ class FixtureSmelterBasic : FixtureBase, CraftingStation {
constructor() : super( constructor() : super(
BlockBox(BlockBox.NO_COLLISION, 3, 4), // temporary value, will be overwritten by spawn() BlockBox(BlockBox.NO_COLLISION, 3, 4), // temporary value, will be overwritten by spawn()
nameFun = { Lang["ITEM_SMELTER_SMALL"] } nameFun = { Lang["ITEM_SMELTER_SMALL"] },
mainUI = UICrafting(null)
) { ) {
CommonResourcePool.addToLoadingList("particles-tiki_smoke.tga") { CommonResourcePool.addToLoadingList("particles-tiki_smoke.tga") {
TextureRegionPack(ModMgr.getGdxFile("basegame", "particles/bigger_smoke.tga"), 16, 16) TextureRegionPack(ModMgr.getGdxFile("basegame", "particles/bigger_smoke.tga"), 16, 16)
@@ -48,10 +50,6 @@ class FixtureSmelterBasic : FixtureBase, CraftingStation {
} }
actorValue[AVKey.BASEMASS] = 100.0 actorValue[AVKey.BASEMASS] = 100.0
mainUIopenFun = { ui ->
(mainUI as? UIInventoryFull)?.openCrafting(mainUI!!.handler)
}
} }
@Transient override var lightBoxList = arrayListOf(Lightbox(Hitbox(0.0, 2*TILE_SIZED, TILE_SIZED * 2, TILE_SIZED * 2), Cvec(0.5f, 0.18f, 0f, 0f))) @Transient override var lightBoxList = arrayListOf(Lightbox(Hitbox(0.0, 2*TILE_SIZED, TILE_SIZED * 2, TILE_SIZED * 2), Cvec(0.5f, 0.18f, 0f, 0f)))
@@ -74,16 +72,7 @@ class FixtureSmelterBasic : FixtureBase, CraftingStation {
private var nextDelay = 0.25f private var nextDelay = 0.25f
private var spawnTimer = 0f private var spawnTimer = 0f
@Transient private var mainUIhookHackInstalled = false
override fun update(delta: Float) { override fun update(delta: Float) {
// adding UI to the fixture as players may right-click on the workbenches instead of pressing a keyboard key
(INGAME as? TerrarumIngame)?.let { ingame ->
if (!mainUIhookHackInstalled && ingame.uiInventoryPlayerReady) {
mainUIhookHackInstalled = true
this.mainUI = ingame.uiInventoryPlayer // this field is initialised only after a full load so this hack is necessary
}
}
super.update(delta) super.update(delta)

View File

@@ -8,6 +8,7 @@ import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
import net.torvald.terrarum.modulebasegame.ui.UICrafting
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull
import net.torvald.terrarum.modulebasegame.ui.UIWallCalendar import net.torvald.terrarum.modulebasegame.ui.UIWallCalendar
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
@@ -21,7 +22,8 @@ class FixtureWorkbench : FixtureBase, CraftingStation {
constructor() : super( constructor() : super(
BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 1), BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 1),
nameFun = { Lang["ITEM_WORKBENCH"] } nameFun = { Lang["ITEM_WORKBENCH"] },
mainUI = UICrafting(null)
) { ) {
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/workbench.tga") val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/workbench.tga")
@@ -33,23 +35,6 @@ class FixtureWorkbench : FixtureBase, CraftingStation {
} }
actorValue[AVKey.BASEMASS] = 20.0 actorValue[AVKey.BASEMASS] = 20.0
mainUIopenFun = { ui ->
(mainUI as? UIInventoryFull)?.openCrafting(mainUI!!.handler)
}
}
@Transient private var mainUIhookHackInstalled = false
override fun update(delta: Float) {
// adding UI to the fixture as players may right-click on the workbenches instead of pressing a keyboard key
(INGAME as? TerrarumIngame)?.let { ingame ->
if (!mainUIhookHackInstalled && ingame.uiInventoryPlayerReady) {
mainUIhookHackInstalled = true
this.mainUI = ingame.uiInventoryPlayer // this field is initialised only after a full load so this hack is necessary
}
}
super.update(delta)
} }
} }

View File

@@ -33,9 +33,6 @@ class UICrafting(val full: UIInventoryFull?) : UICanvas(
toggleButtonLiteral = if (full == null) "control_gamepad_start" else null toggleButtonLiteral = if (full == null) "control_gamepad_start" else null
), HasInventory { ), HasInventory {
private val catBarx: UIItemCatBar?
get() = full?.catBar
override var width = App.scr.width override var width = App.scr.width
override var height = App.scr.height override var height = App.scr.height