From 376595d7cdb1ab523a5f45afd4228a482c5d3be0 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 18 Jun 2023 00:40:55 +0900 Subject: [PATCH] fix: scroll controller for portal listing is 2 px shorter that it should --- .../gameactors/FixtureWorldPortal.kt | 8 ++++++- .../modulebasegame/ui/UIWorldPortal.kt | 6 ++--- .../modulebasegame/ui/UIWorldPortalCargo.kt | 24 ++++++++++++++++++- .../modulebasegame/ui/UIWorldPortalListing.kt | 2 +- 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureWorldPortal.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureWorldPortal.kt index 37fe3e1df..39eaea16c 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureWorldPortal.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureWorldPortal.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory.Companion.CAPACITY_MODE_WEIGHT import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase import net.torvald.terrarum.modulebasegame.ui.UIWorldPortal import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack @@ -14,9 +15,14 @@ class FixtureWorldPortal : FixtureBase { constructor() : super( BlockBox(BlockBox.NO_COLLISION, 5, 2), nameFun = { Lang["ITEM_WORLD_PORTAL"] }, - mainUI = UIWorldPortal() + mainUI = UIWorldPortal(), + inventory = FixtureInventory(200, CAPACITY_MODE_WEIGHT) ) { // TODO do something with (mainUI as UIWorldPortal).*** + (mainUI as UIWorldPortal).let { ui -> + ui.transitionalCargo.chestInventory = this.inventory!! + ui.transitionalCargo.chestNameFun = this.nameFun + } } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt index f100fa9fd..fcdadbb0b 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt @@ -67,9 +67,9 @@ class UIWorldPortal : UICanvas( "$SP${App.gamepadLabelRT} ${Lang["GAME_INVENTORY"]}" - private val transitionalSearch = UIWorldPortalSearch(this) - private val transitionalListing = UIWorldPortalListing(this) - private val transitionalCargo = UIWorldPortalCargo(this) + val transitionalSearch = UIWorldPortalSearch(this) + val transitionalListing = UIWorldPortalListing(this) + val transitionalCargo = UIWorldPortalCargo(this) private val transitionPanel = UIItemHorizontalFadeSlide( this, (width - internalWidth) / 2, diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt index 18564e7a3..5345b1795 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt @@ -3,14 +3,36 @@ package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.App +import net.torvald.terrarum.INGAME +import net.torvald.terrarum.gameitems.GameItem +import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.UICanvas -class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas() { +class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory { override var width: Int = Toolkit.drawWidth override var height: Int = App.scr.height + lateinit var chestInventory: FixtureInventory + lateinit var chestNameFun: () -> String + + private val negotiator = object : InventoryTransactionNegotiator() { + override fun accept(player: FixtureInventory, fixture: FixtureInventory, item: GameItem, amount: Long) { + player.remove(item, amount) + fixture.add(item, amount) + } + + override fun reject(fixture: FixtureInventory, player: FixtureInventory, item: GameItem, amount: Long) { + fixture.remove(item, amount) + player.add(item, amount) + } + } + + override fun getNegotiator() = negotiator + override fun getFixtureInventory(): FixtureInventory = chestInventory + override fun getPlayerInventory(): FixtureInventory = INGAME.actorNowPlaying!!.inventory + override fun updateUI(delta: Float) { } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt index 8dd5705a7..a4af59a40 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt @@ -100,7 +100,7 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() { } } - private val navRemoCon = UIItemListNavBarVertical(full, hx + 6 + UIItemWorldCellsSimple.width, y + 7, listHeight, false) + private val navRemoCon = UIItemListNavBarVertical(full, hx + 6 + UIItemWorldCellsSimple.width, y + 7, listHeight + 2, false) private val worldList = ArrayList() data class WorldInfo(