From f400a5afe7512676c8620e5e5ba206313cc2981e Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 2 Mar 2024 03:03:31 +0900 Subject: [PATCH] multicolour storage chests --- assets/mods/basegame/crafting/fixtures.json | 20 ++- assets/mods/basegame/items/itemid.csv | 3 + assets/mods/basegame/locales/en/itemdesc.json | 3 + .../mods/basegame/locales/koKR/itemdesc.json | 3 + .../sprites/fixtures/storage_chest.tga | 2 +- .../sprites/fixtures/storage_chest_2.tga | 3 + .../sprites/fixtures/storage_chest_3.tga | 3 + .../sprites/fixtures/storage_chest_4.tga | 3 + .../gameactors/FixtureStorageChest.kt | 125 +++++++++++++++++- .../gameitems/ItemStorageChest.kt | 42 +++++- .../sprites/fixtures/storage_chest.kra | 4 +- 11 files changed, 202 insertions(+), 9 deletions(-) create mode 100644 assets/mods/basegame/sprites/fixtures/storage_chest_2.tga create mode 100644 assets/mods/basegame/sprites/fixtures/storage_chest_3.tga create mode 100644 assets/mods/basegame/sprites/fixtures/storage_chest_4.tga diff --git a/assets/mods/basegame/crafting/fixtures.json b/assets/mods/basegame/crafting/fixtures.json index b0c654012..92dee5afa 100644 --- a/assets/mods/basegame/crafting/fixtures.json +++ b/assets/mods/basegame/crafting/fixtures.json @@ -65,7 +65,25 @@ "item@basegame:6": { /* storage chest */ "workbench": "basiccrafting", "ingredients": [ - [1, 20, "$WOOD"] /* 1 chest = 20 wood */ + [1, 20, "basegame:48"] /* 1 chest = 20 wood */ + ] + }, + "item@basegame:37": { /* storage chest */ + "workbench": "basiccrafting", + "ingredients": [ + [1, 20, "basegame:49"] /* 1 chest = 20 wood */ + ] + }, + "item@basegame:38": { /* storage chest */ + "workbench": "basiccrafting", + "ingredients": [ + [1, 20, "basegame:50"] /* 1 chest = 20 wood */ + ] + }, + "item@basegame:39": { /* storage chest */ + "workbench": "basiccrafting", + "ingredients": [ + [1, 20, "basegame:51"] /* 1 chest = 20 wood */ ] }, diff --git a/assets/mods/basegame/items/itemid.csv b/assets/mods/basegame/items/itemid.csv index bbedbbb3f..487160fa6 100644 --- a/assets/mods/basegame/items/itemid.csv +++ b/assets/mods/basegame/items/itemid.csv @@ -35,6 +35,9 @@ id;classname;tags 34;net.torvald.terrarum.modulebasegame.gameitems.ItemSignalSwitchManual;FIXTURE,SIGNAL 35;net.torvald.terrarum.modulebasegame.gameitems.ItemSignalBulb;FIXTURE,SIGNAL 36;net.torvald.terrarum.modulebasegame.gameitems.ItemWireRollingMill;FIXTURE,CRAFTING +37;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChestEbony;FIXTURE,STORAGE +38;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChestBirch;FIXTURE,STORAGE +39;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChestRosewood;FIXTURE,STORAGE # ingots 26;net.torvald.terrarum.modulebasegame.gameitems.IngotSteel;INGOT diff --git a/assets/mods/basegame/locales/en/itemdesc.json b/assets/mods/basegame/locales/en/itemdesc.json index fa6178eae..4023ef629 100644 --- a/assets/mods/basegame/locales/en/itemdesc.json +++ b/assets/mods/basegame/locales/en/itemdesc.json @@ -16,6 +16,9 @@ "TOOLTIP_item@basegame:4": "Breaks down walls", "TOOLTIP_item@basegame:5": "Provides light but fancier", "TOOLTIP_item@basegame:6": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */ + "TOOLTIP_item@basegame:37": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */ + "TOOLTIP_item@basegame:38": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */ + "TOOLTIP_item@basegame:39": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */ "TOOLTIP_item@basegame:8": "Emits a signal", "TOOLTIP_item@basegame:9": "An electricians’ best friend", "TOOLTIP_item@basegame:10": "“Who needs a Book and Quill when you’ve got this?”", /* a jab on the Minecraft item Book and Quill */ diff --git a/assets/mods/basegame/locales/koKR/itemdesc.json b/assets/mods/basegame/locales/koKR/itemdesc.json index 3df05eea7..2962bab25 100644 --- a/assets/mods/basegame/locales/koKR/itemdesc.json +++ b/assets/mods/basegame/locales/koKR/itemdesc.json @@ -16,6 +16,9 @@ "TOOLTIP_item@basegame:4": "벽을 부숩니다", "TOOLTIP_item@basegame:5": "빛을 더 이쁘게 냅니다", "TOOLTIP_item@basegame:6": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */ + "TOOLTIP_item@basegame:37": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */ + "TOOLTIP_item@basegame:38": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */ + "TOOLTIP_item@basegame:39": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */ "TOOLTIP_item@basegame:8": "신호를 만들어냅니다", "TOOLTIP_item@basegame:9": "전기공의 친한 친구", "TOOLTIP_item@basegame:10": "“이게 있는데 책과 깃펜이 왜 필요하죠?”", /* a jab on the Minecraft item Book and Quill */ diff --git a/assets/mods/basegame/sprites/fixtures/storage_chest.tga b/assets/mods/basegame/sprites/fixtures/storage_chest.tga index e9810393f..4c08b54c5 100644 --- a/assets/mods/basegame/sprites/fixtures/storage_chest.tga +++ b/assets/mods/basegame/sprites/fixtures/storage_chest.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f1c919d29f75e86fe110417fd05aef62a51fcebfe57879df802ed7cb160aa61 +oid sha256:2bfe8e6a8c31bbc180bf10a7c947b9b416e8ab39520ebd84c5fcfb062c677912 size 1314 diff --git a/assets/mods/basegame/sprites/fixtures/storage_chest_2.tga b/assets/mods/basegame/sprites/fixtures/storage_chest_2.tga new file mode 100644 index 000000000..4789cdb49 --- /dev/null +++ b/assets/mods/basegame/sprites/fixtures/storage_chest_2.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcbc228b19d206eea94780d132fba5e7a03fdd4f8612693b4d8f6fce87974138 +size 1314 diff --git a/assets/mods/basegame/sprites/fixtures/storage_chest_3.tga b/assets/mods/basegame/sprites/fixtures/storage_chest_3.tga new file mode 100644 index 000000000..487edf718 --- /dev/null +++ b/assets/mods/basegame/sprites/fixtures/storage_chest_3.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70647522b9d76a539bd26d5c8ca5e88c4bce9b4dbd216c99ea69cb76b1758b43 +size 1314 diff --git a/assets/mods/basegame/sprites/fixtures/storage_chest_4.tga b/assets/mods/basegame/sprites/fixtures/storage_chest_4.tga new file mode 100644 index 000000000..f48073b6f --- /dev/null +++ b/assets/mods/basegame/sprites/fixtures/storage_chest_4.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef1cbf0925ef74947e8cb2f0d027c0be2b6039c7cfad6611d9079bcc41763a10 +size 1314 diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureStorageChest.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureStorageChest.kt index aee8f256d..dd044710f 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureStorageChest.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureStorageChest.kt @@ -5,6 +5,9 @@ import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory.Companion.CAPACITY_MODE_COUNT +import net.torvald.terrarum.modulebasegame.gameactors.FixtureStorageChest.Companion.MASS +import net.torvald.terrarum.modulebasegame.gameactors.FixtureStorageChest.Companion.MAXCAP_MODE +import net.torvald.terrarum.modulebasegame.gameactors.FixtureStorageChest.Companion.MAXCAP_NUM import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase import net.torvald.terrarum.modulebasegame.ui.* import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack @@ -12,13 +15,11 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** * Created by minjaesong on 2019-07-08. */ -internal class FixtureStorageChest : FixtureBase { - - +class FixtureStorageChest : FixtureBase { constructor() : super( BlockBox(BlockBox.ALLOW_MOVE_DOWN, 1, 1), mainUI = UIStorageChest(), - inventory = FixtureInventory(40, CAPACITY_MODE_COUNT), + inventory = FixtureInventory(MAXCAP_NUM, MAXCAP_MODE), nameFun = { Lang["ITEM_STORAGE_CHEST"] } ) { @@ -50,5 +51,121 @@ internal class FixtureStorageChest : FixtureBase { companion object { const val MASS = 2.0 + const val MAXCAP_NUM = 40L + val MAXCAP_MODE = CAPACITY_MODE_COUNT } } + +/** + * Created by minjaesong on 2024-03-02. + */ +class FixtureStorageChestEbony : FixtureBase { + constructor() : super( + BlockBox(BlockBox.ALLOW_MOVE_DOWN, 1, 1), + mainUI = UIStorageChest(), + inventory = FixtureInventory(MAXCAP_NUM, MAXCAP_MODE), + nameFun = { Lang["ITEM_STORAGE_CHEST"] } + ) { + + (mainUI as UIStorageChest).chestInventory = this.inventory!! + (mainUI as UIStorageChest).chestNameFun = this.nameFun + + val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/storage_chest_2.tga") + + setHitboxDimension(TILE_SIZE, TILE_SIZE, 1, 0) + + makeNewSprite(TextureRegionPack(itemImage.texture, 18, 18)).let { + it.setRowsAndFrames(1,1) + } + + actorValue[AVKey.BASEMASS] = MASS + + + printStackTrace(this) + } + + override fun reload() { + super.reload() + // doing this is required as when things are deserialised, constructor is called, THEN the fields are + // filled in, thus the initialised mainUI has a stale reference; + // we fix it by simply giving a new reference to the mainUI + (mainUI as UIStorageChest).chestInventory = this.inventory!! + (mainUI as UIStorageChest).chestNameFun = this.nameFun + } +} + +/** + * Created by minjaesong on 2024-03-02. + */ +class FixtureStorageChestBirch : FixtureBase { + constructor() : super( + BlockBox(BlockBox.ALLOW_MOVE_DOWN, 1, 1), + mainUI = UIStorageChest(), + inventory = FixtureInventory(MAXCAP_NUM, MAXCAP_MODE), + nameFun = { Lang["ITEM_STORAGE_CHEST"] } + ) { + + (mainUI as UIStorageChest).chestInventory = this.inventory!! + (mainUI as UIStorageChest).chestNameFun = this.nameFun + + val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/storage_chest_3.tga") + + setHitboxDimension(TILE_SIZE, TILE_SIZE, 1, 0) + + makeNewSprite(TextureRegionPack(itemImage.texture, 18, 18)).let { + it.setRowsAndFrames(1,1) + } + + actorValue[AVKey.BASEMASS] = MASS + + + printStackTrace(this) + } + + override fun reload() { + super.reload() + // doing this is required as when things are deserialised, constructor is called, THEN the fields are + // filled in, thus the initialised mainUI has a stale reference; + // we fix it by simply giving a new reference to the mainUI + (mainUI as UIStorageChest).chestInventory = this.inventory!! + (mainUI as UIStorageChest).chestNameFun = this.nameFun + } +} + +/** + * Created by minjaesong on 2024-03-02. + */ +class FixtureStorageChestRosewood : FixtureBase { + constructor() : super( + BlockBox(BlockBox.ALLOW_MOVE_DOWN, 1, 1), + mainUI = UIStorageChest(), + inventory = FixtureInventory(MAXCAP_NUM, MAXCAP_MODE), + nameFun = { Lang["ITEM_STORAGE_CHEST"] } + ) { + + (mainUI as UIStorageChest).chestInventory = this.inventory!! + (mainUI as UIStorageChest).chestNameFun = this.nameFun + + val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/storage_chest_4.tga") + + setHitboxDimension(TILE_SIZE, TILE_SIZE, 1, 0) + + makeNewSprite(TextureRegionPack(itemImage.texture, 18, 18)).let { + it.setRowsAndFrames(1,1) + } + + actorValue[AVKey.BASEMASS] = MASS + + + printStackTrace(this) + } + + override fun reload() { + super.reload() + // doing this is required as when things are deserialised, constructor is called, THEN the fields are + // filled in, thus the initialised mainUI has a stale reference; + // we fix it by simply giving a new reference to the mainUI + (mainUI as UIStorageChest).chestInventory = this.inventory!! + (mainUI as UIStorageChest).chestNameFun = this.nameFun + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemStorageChest.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemStorageChest.kt index 08e47b9f0..b1b5374d4 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemStorageChest.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemStorageChest.kt @@ -11,7 +11,6 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch * Created by minjaesong on 2019-07-08. */ class ItemStorageChest(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureStorageChest") { - override var dynamicID: ItemID = originalID override var baseMass = FixtureTikiTorch.MASS override val canBeDynamic = false @@ -20,5 +19,46 @@ class ItemStorageChest(originalID: ItemID) : FixtureItemBase(originalID, "net.to get() = getItemImageFromSingleImage("basegame", "sprites/fixtures/storage_chest.tga") override var baseToolSize: Double? = baseMass override var originalName = "ITEM_STORAGE_CHEST" +} +/** + * Created by minjaesong on 2024-03-02. + */ +class ItemStorageChestEbony(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureStorageChestEbony") { + override var dynamicID: ItemID = originalID + override var baseMass = FixtureTikiTorch.MASS + override val canBeDynamic = false + override val materialId = "" + override val itemImage: TextureRegion + get() = getItemImageFromSingleImage("basegame", "sprites/fixtures/storage_chest_2.tga") + override var baseToolSize: Double? = baseMass + override var originalName = "ITEM_STORAGE_CHEST" +} + +/** + * Created by minjaesong on 2024-03-02. + */ +class ItemStorageChestBirch(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureStorageChestBirch") { + override var dynamicID: ItemID = originalID + override var baseMass = FixtureTikiTorch.MASS + override val canBeDynamic = false + override val materialId = "" + override val itemImage: TextureRegion + get() = getItemImageFromSingleImage("basegame", "sprites/fixtures/storage_chest_3.tga") + override var baseToolSize: Double? = baseMass + override var originalName = "ITEM_STORAGE_CHEST" +} + +/** + * Created by minjaesong on 2024-03-02. + */ +class ItemStorageChestRosewood(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureStorageChestRosewood") { + override var dynamicID: ItemID = originalID + override var baseMass = FixtureTikiTorch.MASS + override val canBeDynamic = false + override val materialId = "" + override val itemImage: TextureRegion + get() = getItemImageFromSingleImage("basegame", "sprites/fixtures/storage_chest_4.tga") + override var baseToolSize: Double? = baseMass + override var originalName = "ITEM_STORAGE_CHEST" } \ No newline at end of file diff --git a/work_files/graphics/sprites/fixtures/storage_chest.kra b/work_files/graphics/sprites/fixtures/storage_chest.kra index d22e42718..dbd63bd46 100644 --- a/work_files/graphics/sprites/fixtures/storage_chest.kra +++ b/work_files/graphics/sprites/fixtures/storage_chest.kra @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:417d832824d33f261b8fe703085e2e28db65d0f194da86bf0bbd57595ff05c14 -size 96462 +oid sha256:1d761af4f294ae01ef920c8676432de98fe95babbc6360a9d59cc8ed899bcb0e +size 127317