From 1057f40fbae0f9e21bde3ff59b59cca9bb0ba694 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 13 Dec 2021 02:52:25 +0900 Subject: [PATCH] adjusting load order of every item image --- lib/TerrarumSansBitmap.jar | Bin 123140 -> 122702 bytes src/net/torvald/terrarum/App.java | 1 - .../terrarum/modulebasegame/EntryPoint.kt | 19 +++--- .../gameactors/FixtureLogicSignalEmitter.kt | 11 +++- .../gameitems/FixtureItemBase.kt | 59 ++++++++++++++++++ .../gameitems/ItemLogicSignalEmitter.kt | 21 +------ .../gameitems/ItemStorageChest.kt | 13 +--- .../modulebasegame/gameitems/ItemTikiTorch.kt | 47 +------------- .../modulebasegame/ui/UIInventoryFull.kt | 5 -- .../ui/UIKeyboardControlPanel.kt | 4 -- .../modulebasegame/ui/UILoadDemoSavefiles.kt | 3 - src/net/torvald/terrarum/ui/UIItemSpinner.kt | 5 -- .../terrarum/ui/UIItemTextLineInput.kt | 4 -- .../torvald/terrarum/ui/UIItemTextSelector.kt | 4 -- 14 files changed, 85 insertions(+), 111 deletions(-) create mode 100644 src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt diff --git a/lib/TerrarumSansBitmap.jar b/lib/TerrarumSansBitmap.jar index 1ca4a70fb07bfdfbdf0aef6c24809f75178a5a6b..0472a05c63f7919aa957f08eb652705462d2fd3e 100644 GIT binary patch delta 30532 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 diff --git a/src/net/torvald/terrarum/App.java b/src/net/torvald/terrarum/App.java index 465f7851e..738d8f95a 100644 --- a/src/net/torvald/terrarum/App.java +++ b/src/net/torvald/terrarum/App.java @@ -882,7 +882,6 @@ public class App implements ApplicationListener { ModMgr.INSTANCE.invoke(); // invoke Module Manager - TextureRegionPack.Companion.setGlobalFlipY(true); fontSmallNumbers = TinyAlphNum.INSTANCE; IME.invoke(); diff --git a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt index 7908f3844..a0bf02def 100644 --- a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt +++ b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt @@ -28,14 +28,6 @@ class EntryPoint : ModuleEntryPoint() { printdbg(this, "Hello, world!") - // the order of invocation is important! Material should be the first as blocks and items are depend on it. - ModMgr.GameMaterialLoader.invoke(moduleName) - ModMgr.GameItemLoader.invoke(moduleName) - ModMgr.GameBlockLoader.invoke(moduleName) - ModMgr.GameLanguageLoader.invoke(moduleName) - - - // load common resources to the AssetsManager CommonResourcePool.addToLoadingList("$moduleName.items16") { TextureRegionPack(ModMgr.getGdxFile(moduleName, "items/items.tga"), 16, 16, flipY = true) @@ -46,6 +38,17 @@ class EntryPoint : ModuleEntryPoint() { CommonResourcePool.addToLoadingList("$moduleName.items48") { TextureRegionPack(ModMgr.getGdxFile(moduleName, "items/items48.tga"), 48, 48, flipY = true) } + CommonResourcePool.addToLoadingList("inventory_category") { + TextureRegionPack("./assets/graphics/gui/inventory/category.tga", 20, 20, flipY = true) + } + CommonResourcePool.loadAll() + + + // the order of invocation is important! Material should be the first as blocks and items are depend on it. + ModMgr.GameMaterialLoader.invoke(moduleName) + ModMgr.GameItemLoader.invoke(moduleName) + ModMgr.GameBlockLoader.invoke(moduleName) + ModMgr.GameLanguageLoader.invoke(moduleName) ///////////////////////////////// diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureLogicSignalEmitter.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureLogicSignalEmitter.kt index f3da3c009..0be065a02 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureLogicSignalEmitter.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureLogicSignalEmitter.kt @@ -1,6 +1,9 @@ package net.torvald.terrarum.modulebasegame.gameactors +import com.badlogic.gdx.graphics.Texture +import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.CommonResourcePool +import net.torvald.terrarum.ModMgr import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.langpack.Lang @@ -20,7 +23,13 @@ class FixtureLogicSignalEmitter : FixtureBase, Electric { ) init { - println("INIT AGAIN FixtureLogicSignalEmitter") + CommonResourcePool.addToLoadingList("basegame-sprites-fixtures-signal_source.tga") { + val t = TextureRegion(Texture(ModMgr.getGdxFile("basegame", "sprites/fixtures/signal_source.tga"))) + t.flip(false, false) + /*return*/t + } + CommonResourcePool.loadAll() + density = 1400.0 setHitboxDimension(TILE_SIZE, TILE_SIZE, 0, -1) diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt new file mode 100644 index 000000000..3afc28d70 --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt @@ -0,0 +1,59 @@ +package net.torvald.terrarum.modulebasegame.gameitems + +import com.badlogic.gdx.graphics.g2d.TextureRegion +import net.torvald.terrarum.CommonResourcePool +import net.torvald.terrarum.INGAME +import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.gameactors.ActorWithBody +import net.torvald.terrarum.gameitems.GameItem +import net.torvald.terrarum.gameitems.ItemID +import net.torvald.terrarum.gameitems.mouseInInteractableRange +import net.torvald.terrarum.itemproperties.Material +import net.torvald.terrarum.modulebasegame.TerrarumIngame +import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase + +/** + * Created by minjaesong on 2021-12-13. + */ +open class FixtureItemBase(originalID: ItemID, val makeFixture: () -> FixtureBase) : GameItem(originalID) { + + protected val ghostItem = makeFixture() + + override var dynamicID: ItemID = originalID + override val originalName = "FIXTUREBASE" + override var baseMass = 1.0 + override var stackable = true + override var inventoryCategory = Category.MISC + override val isUnique = false + override val isDynamic = false + override val material = Material() + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_32") + override var baseToolSize: Double? = baseMass + + override fun effectWhenEquipped(actor: ActorWithBody, delta: Float) { + (INGAME as TerrarumIngame).blockMarkingActor.let { + it.setGhost(ghostItem) + it.isVisible = true + it.update(delta) + it.setGhostColourBlock() + mouseInInteractableRange(actor) { it.setGhostColourAllow(); true } + } + } + + override fun effectOnUnequip(actor: ActorWithBody, delta: Float) { + (INGAME as TerrarumIngame).blockMarkingActor.let { + it.unsetGhost() + it.isVisible = false + it.setGhostColourNone() + } + } + + override fun startPrimaryUse(actor: ActorWithBody, delta: Float) = mouseInInteractableRange(actor) { + val item = makeFixture() + + item.spawn(Terrarum.mouseTileX, Terrarum.mouseTileY - item.blockBox.height + 1) + // return true when placed, false when cannot be placed + } + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemLogicSignalEmitter.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemLogicSignalEmitter.kt index f6b9fa49a..504dd2f82 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemLogicSignalEmitter.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemLogicSignalEmitter.kt @@ -1,18 +1,15 @@ package net.torvald.terrarum.modulebasegame.gameitems -import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.CommonResourcePool -import net.torvald.terrarum.ModMgr import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.ActorWithBody -import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.itemproperties.Material import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.FixtureLogicSignalEmitter -class ItemLogicSignalEmitter(originalID: ItemID) : GameItem(originalID) { +class ItemLogicSignalEmitter(originalID: ItemID) : FixtureItemBase(originalID, { FixtureLogicSignalEmitter() }) { override var dynamicID: ItemID = originalID override val originalName = "ITEM_LOGIC_SIGNAL_EMITTER" @@ -27,28 +24,16 @@ class ItemLogicSignalEmitter(originalID: ItemID) : GameItem(originalID) { override var baseToolSize: Double? = baseMass init { - CommonResourcePool.addToLoadingList("basegame-sprites-fixtures-signal_source.tga") { - val t = TextureRegion(Texture(ModMgr.getGdxFile("basegame", "sprites/fixtures/signal_source.tga"))) - t.flip(false, true) - /*return*/t - } - CommonResourcePool.loadAll() - equipPosition = EquipPosition.HAND_GRIP } - override fun startPrimaryUse(actor: ActorWithBody, delta: Float): Boolean { - val item = FixtureLogicSignalEmitter() - - return item.spawn(Terrarum.mouseTileX, Terrarum.mouseTileY) - // return true when placed, false when cannot be placed - } - override fun effectWhenEquipped(actor: ActorWithBody, delta: Float) { + super.effectWhenEquipped(actor, delta) (Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "signal" } override fun effectOnUnequip(actor: ActorWithBody, delta: Float) { + super.effectOnUnequip(actor, delta) (Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "" } diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemStorageChest.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemStorageChest.kt index 639a71504..1c074c0a0 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemStorageChest.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemStorageChest.kt @@ -2,11 +2,7 @@ package net.torvald.terrarum.modulebasegame.gameitems import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.CommonResourcePool -import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ActorWithBody -import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.gameitems.ItemID -import net.torvald.terrarum.gameitems.mouseInInteractableRange import net.torvald.terrarum.itemproperties.Material import net.torvald.terrarum.modulebasegame.gameactors.FixtureStorageChest import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch @@ -14,7 +10,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch /** * Created by minjaesong on 2019-07-08. */ -class ItemStorageChest(originalID: ItemID) : GameItem(originalID) { +class ItemStorageChest(originalID: ItemID) : FixtureItemBase(originalID, { FixtureStorageChest() }) { override var dynamicID: ItemID = originalID override val originalName = "ITEM_STORAGE_CHEST" @@ -32,11 +28,4 @@ class ItemStorageChest(originalID: ItemID) : GameItem(originalID) { equipPosition = EquipPosition.HAND_GRIP } - override fun startPrimaryUse(actor: ActorWithBody, delta: Float) = mouseInInteractableRange(actor) { - val item = FixtureStorageChest() - - item.spawn(Terrarum.mouseTileX, Terrarum.mouseTileY - item.blockBox.height + 1) - // return true when placed, false when cannot be placed - } - } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemTikiTorch.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemTikiTorch.kt index b10c7ab03..8787152d0 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemTikiTorch.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemTikiTorch.kt @@ -2,33 +2,14 @@ package net.torvald.terrarum.modulebasegame.gameitems import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.CommonResourcePool -import net.torvald.terrarum.INGAME -import net.torvald.terrarum.ModMgr -import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ActorWithBody -import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.gameitems.ItemID -import net.torvald.terrarum.gameitems.mouseInInteractableRange import net.torvald.terrarum.itemproperties.Material -import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch -import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** * Created by minjaesong on 2019-05-16. */ -class ItemTikiTorch(originalID: ItemID) : GameItem(originalID) { - - companion object { - private val ghostTorch = FixtureTikiTorch() - } - - init { - CommonResourcePool.addToLoadingList("sprites-fixtures-tiki_torch.tga") { - TextureRegionPack(ModMgr.getGdxFile("basegame", "sprites/fixtures/tiki_torch.tga"), 16, 32, flipY = true) - } - CommonResourcePool.loadAll() - } +class ItemTikiTorch(originalID: ItemID) : FixtureItemBase(originalID, { FixtureTikiTorch() }) { override var dynamicID: ItemID = originalID override val originalName = "ITEM_TIKI_TORCH" @@ -46,30 +27,4 @@ class ItemTikiTorch(originalID: ItemID) : GameItem(originalID) { equipPosition = EquipPosition.HAND_GRIP } - override fun effectWhenEquipped(actor: ActorWithBody, delta: Float) { - (INGAME as TerrarumIngame).blockMarkingActor.let { - it.setGhost(ghostTorch) - it.isVisible = true - it.update(delta) - it.setGhostColourBlock() - mouseInInteractableRange(actor) { it.setGhostColourAllow(); true } - } - } - - override fun effectOnUnequip(actor: ActorWithBody, delta: Float) { - (INGAME as TerrarumIngame).blockMarkingActor.let { - it.unsetGhost() - it.isVisible = false - it.setGhostColourNone() - } - } - - override fun startPrimaryUse(actor: ActorWithBody, delta: Float) = mouseInInteractableRange(actor) { - val item = FixtureTikiTorch() - - item.spawn(Terrarum.mouseTileX, Terrarum.mouseTileY - item.blockBox.height + 1) - // return true when placed, false when cannot be placed - - } - } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index bca23001b..5bc4843d0 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -14,7 +14,6 @@ import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UIItemHorizontalFadeSlide -import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** * Created by minjaesong on 2017-10-21. @@ -112,10 +111,6 @@ class UIInventoryFull( init { handler.allowESCtoClose = true - CommonResourcePool.addToLoadingList("inventory_category") { - TextureRegionPack("./assets/graphics/gui/inventory/category.tga", 20, 20) - } - CommonResourcePool.loadAll() } private val SP = "\u3000 " diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardControlPanel.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardControlPanel.kt index f551c024d..01354e92f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardControlPanel.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardControlPanel.kt @@ -19,10 +19,6 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack class UIKeyboardControlPanel(remoCon: UIRemoCon?) : UICanvas() { init { - CommonResourcePool.addToLoadingList("inventory_category") { - TextureRegionPack("assets/graphics/gui/inventory/category.tga", 20, 20) - } - CommonResourcePool.loadAll() } private val labels = CommonResourcePool.getAsTextureRegionPack("inventory_category") diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UILoadDemoSavefiles.kt b/src/net/torvald/terrarum/modulebasegame/ui/UILoadDemoSavefiles.kt index 141e291e0..ea23f3b07 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UILoadDemoSavefiles.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UILoadDemoSavefiles.kt @@ -77,9 +77,6 @@ class UILoadDemoSavefiles(val remoCon: UIRemoCon) : UICanvas() { // private val hash = RandomWordsName(3) init { - CommonResourcePool.addToLoadingList("inventory_category") { - TextureRegionPack("./assets/graphics/gui/inventory/category.tga", 20, 20) - } CommonResourcePool.addToLoadingList("terrarum-defaultsavegamethumb") { TextureRegion(Texture(Gdx.files.internal("assets/graphics/gui/savegame_thumb_placeholder.png"))) } diff --git a/src/net/torvald/terrarum/ui/UIItemSpinner.kt b/src/net/torvald/terrarum/ui/UIItemSpinner.kt index baae44370..12ec82317 100644 --- a/src/net/torvald/terrarum/ui/UIItemSpinner.kt +++ b/src/net/torvald/terrarum/ui/UIItemSpinner.kt @@ -7,7 +7,6 @@ import com.badlogic.gdx.graphics.Pixmap import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.FrameBuffer import net.torvald.terrarum.* -import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** * Created by minjaesong on 2021-10-23. @@ -25,10 +24,6 @@ class UIItemSpinner( ) : UIItem(parentUI, initialX, initialY) { init { - CommonResourcePool.addToLoadingList("inventory_category") { - TextureRegionPack("assets/graphics/gui/inventory/category.tga", 20, 20) - } - CommonResourcePool.loadAll() } private val labels = CommonResourcePool.getAsTextureRegionPack("inventory_category") diff --git a/src/net/torvald/terrarum/ui/UIItemTextLineInput.kt b/src/net/torvald/terrarum/ui/UIItemTextLineInput.kt index bbd40a206..57fe40d1e 100644 --- a/src/net/torvald/terrarum/ui/UIItemTextLineInput.kt +++ b/src/net/torvald/terrarum/ui/UIItemTextLineInput.kt @@ -67,10 +67,6 @@ class UIItemTextLineInput( ) : UIItem(parentUI, initialX, initialY) { init { - CommonResourcePool.addToLoadingList("inventory_category") { - TextureRegionPack("assets/graphics/gui/inventory/category.tga", 20, 20) - } - CommonResourcePool.loadAll() } private val labels = CommonResourcePool.getAsTextureRegionPack("inventory_category") diff --git a/src/net/torvald/terrarum/ui/UIItemTextSelector.kt b/src/net/torvald/terrarum/ui/UIItemTextSelector.kt index b89955f83..b073f8a86 100644 --- a/src/net/torvald/terrarum/ui/UIItemTextSelector.kt +++ b/src/net/torvald/terrarum/ui/UIItemTextSelector.kt @@ -27,10 +27,6 @@ class UIItemTextSelector( ) : UIItem(parentUI, initialX, initialY) { init { - CommonResourcePool.addToLoadingList("inventory_category") { - TextureRegionPack("assets/graphics/gui/inventory/category.tga", 20, 20) - } - CommonResourcePool.loadAll() } override val mouseUp: Boolean