multicolour storage chests

This commit is contained in:
minjaesong
2024-03-02 03:03:31 +09:00
parent ea1702ace4
commit f400a5afe7
11 changed files with 202 additions and 9 deletions

View File

@@ -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
}
}

View File

@@ -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"
}