diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index 6ecc7ae9c..1065055f1 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -189,6 +189,9 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) { lateinit var uiPieMenu: UIQuickslotPie lateinit var uiQuickBar: UIQuickslotBar lateinit var uiInventoryPlayer: UIInventoryFull + + internal val uiInventoryPlayerReady: Boolean get() = ::uiInventoryPlayer.isInitialized // this is some ugly hack but I didn't want to make uiInventoryPlayer nullable so bite me + /** * This is a dedicated property for the fixtures' UI. * diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureWorkbench.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureWorkbench.kt index 93dd59ac4..e9c6e5bf4 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureWorkbench.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureWorkbench.kt @@ -21,8 +21,7 @@ class FixtureWorkbench : FixtureBase, CraftingStation { constructor() : super( BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 1), - nameFun = { Lang["ITEM_WORKBENCH"] }, - mainUI = (INGAME as? TerrarumIngame)?.uiInventoryPlayer + nameFun = { Lang["ITEM_WORKBENCH"] } ) { val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/workbench.tga") @@ -40,4 +39,17 @@ class FixtureWorkbench : FixtureBase, CraftingStation { } } + 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) + } + } \ No newline at end of file