item and sprite for 'document' type items

This commit is contained in:
minjaesong
2025-01-31 22:44:08 +09:00
parent bb1da3b1ec
commit ff2a022394
5 changed files with 59 additions and 14 deletions

View File

@@ -135,8 +135,8 @@ id;classname;tags
2048;net.torvald.terrarum.modulebasegame.gameitems.ItemInductionMotor;FIXTURE,POWER,KINETIC
2049;net.torvald.terrarum.modulebasegame.gameitems.ItemGearbox;FIXTURE,POWER,KINETIC
# data storage (discs; 256)
# 32768 is a reserved number for a blank disc
# data storage (pre-composed discs; 256)
# 32768 is a reserved number for a BASEOBJECT disc (players can't produce own recordings... yet)
32769;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc01;MUSIC,PHONO
32770;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc02;MUSIC,PHONO
32771;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc03;MUSIC,PHONO
@@ -147,18 +147,30 @@ id;classname;tags
32776;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc08;MUSIC,PHONO
32777;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc09;MUSIC,PHONO
# data storage (tapestries; 256)
# data storage (pre-composed tapestries; 256)
33024;net.torvald.terrarum.modulebasegame.gameitems.ItemTapestry;FIXTURE,BASEOBJECT
# data storage (text signs; 256)
# data storage (pre-composed text signs; 256)
33280;net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper;FIXTURE,BASEOBJECT
# data storage (typewritten leaflets; 256)
33536;net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef;FIXTURE,BASEOBJECT
# data storage (pre-composed typewritten leaflets; 256)
33536;net.torvald.terrarum.modulebasegame.gameitems.ItemPlainDocument;READINGS,BASEOBJECT
# data storage (pre-composed unsealed letters; 256)
33792;net.torvald.terrarum.modulebasegame.gameitems.ItemUnsealedLetter;POST,BASEOBJECT
# data storage (pre-composed sealed letters; 256)
34048;net.torvald.terrarum.modulebasegame.gameitems.ItemSealedLetter;POST,BASEOBJECT
# data storage (pre-composed delivery packets; 256)
34304;net.torvald.terrarum.modulebasegame.gameitems.ItemPostParcel;POST,PARCEL,BASEOBJECT
# give it 65536 or greater ID so it would not be able to be redeemed by a code
65536;net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef;BASEOBJECT
# fluids on storage
# preferably autogenerated
# FUTURE QUEST: autogenerate them using FLUID CODEX
# FLUIDSTORAGE: required tag for buckets/canisters
# OPENSTORAGE: cannot hold gas. Canisters need LIDDEDSTORAGE/SEALEDSTORAGE
# NOEXTREMETHERM: cannot hold cryogenic/molten fluids (can only hold fluid with therm 0 or 1)
1 id classname tags
135 32777 net.torvald.terrarum.modulebasegame.gameitems.MusicDisc09 MUSIC,PHONO
136 # data storage (tapestries # data storage (pre-composed tapestries 256)
137 33024 net.torvald.terrarum.modulebasegame.gameitems.ItemTapestry FIXTURE,BASEOBJECT
138 # data storage (text signs # data storage (pre-composed text signs 256)
139 33280 net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper FIXTURE,BASEOBJECT
140 # data storage (typewritten leaflets # data storage (pre-composed typewritten leaflets 256)
141 33536 net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef net.torvald.terrarum.modulebasegame.gameitems.ItemPlainDocument FIXTURE,BASEOBJECT READINGS,BASEOBJECT
142 # fluids on storage # data storage (pre-composed unsealed letters 256)
147 # 100000h..1000FFh : container type 0 x Fluid type 0..255 34304 net.torvald.terrarum.modulebasegame.gameitems.ItemPostParcel POST,PARCEL,BASEOBJECT
148 # 100100h..1001FFh : container type 1 x Fluid type 0..255 # give it 65536 or greater ID so it would not be able to be redeemed by a code
149 # 100200h..1002FFh : container type 2 x Fluid type 0..255 65536 net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef BASEOBJECT
150 # 100300h..1003FFh : container type 3 x Fluid type 0..255 # fluids on storage
151 # 100400h..1004FFh : container type 4 x Fluid type 0..255 # FUTURE QUEST: autogenerate them using FLUID CODEX
152 # 100500h..1005FFh : container type 5 x Fluid type 0..255 # FLUIDSTORAGE: required tag for buckets/canisters
153 # ... # OPENSTORAGE: cannot hold gas. Canisters need LIDDEDSTORAGE/SEALEDSTORAGE
154 # 10FF00h..10FFFFh : container type 255 x Fluid type 0..255 # NOEXTREMETHERM: cannot hold cryogenic/molten fluids (can only hold fluid with therm 0 or 1)
155 1048576 # 100000h..1000FFh : container type 0 x Fluid type 0..255
156 1048577 # 100100h..1001FFh : container type 1 x Fluid type 0..255
157 #1048578 # 100200h..1002FFh : container type 2 x Fluid type 0..255
158 1048579 # 100300h..1003FFh : container type 3 x Fluid type 0..255
159 # 100400h..1004FFh : container type 4 x Fluid type 0..255
160 # 100500h..1005FFh : container type 5 x Fluid type 0..255
161 # ...
162 # 10FF00h..10FFFFh : container type 255 x Fluid type 0..255
163 1048576 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketWooden00 FLUIDSTORAGE,OPENSTORAGE,NOEXTREMETHERM,FLUIDSTORAGEEMPTY
164 1048577 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketWooden01 FLUIDSTORAGE,OPENSTORAGE,NOEXTREMETHERM
165 #1048578 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketWooden02 FLUIDSTORAGE,OPENSTORAGE,NOEXTREMETHERM
166 1048579 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketWooden03 FLUIDSTORAGE,OPENSTORAGE,NOEXTREMETHERM
167 1048832 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketIron00 FLUIDSTORAGE,OPENSTORAGE,FLUIDSTORAGEEMPTY
168 1048833 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketIron01 FLUIDSTORAGE,OPENSTORAGE
169 1048834 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketIron02 FLUIDSTORAGE,OPENSTORAGE
170 1048835 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketIron03 FLUIDSTORAGE,OPENSTORAGE
171 1048832 # reserved for debug items
172 1048833 #16777216 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketIron01 net.torvald.terrarum.modulebasegame.gameitems.ItemBottomlessWaterBucket FLUIDSTORAGE,OPENSTORAGE DEBUG,TOOL
173 1048834 #16777217 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketIron02 net.torvald.terrarum.modulebasegame.gameitems.ItemBottomlessLavaBucket FLUIDSTORAGE,OPENSTORAGE DEBUG,TOOL
174 1048835 16777472 net.torvald.terrarum.modulebasegame.gameitems.ItemBucketIron03 net.torvald.terrarum.modulebasegame.gameitems.ItemMysteriousATM FLUIDSTORAGE,OPENSTORAGE DEBUG
175
176

Binary file not shown.

View File

@@ -9,6 +9,7 @@ import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameitems.FileRefItemPrimaryUseHandler
import net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef
import net.torvald.terrarum.modulebasegame.gameitems.ItemPlainDocument
import net.torvald.terrarum.serialise.Common
import java.util.*
import kotlin.math.roundToInt
@@ -40,7 +41,7 @@ class FixtureTypewriter : FixtureBase {
setHitboxDimension(16, 16, 8, 0)
makeNewSprite(FixtureBase.getSpritesheet("basegame", "sprites/fixtures/typewriter.tga", 32, 16)).let {
it.setRowsAndFrames(1,1)
it.setRowsAndFrames(12,1)
}
actorValue[AVKey.BASEMASS] = 3.6
@@ -49,7 +50,7 @@ class FixtureTypewriter : FixtureBase {
override fun updateImpl(delta: Float) {
super.updateImpl(delta)
//(sprite as SheetSpriteAnimation).currentRow = 1 + (carriagePosition.toFloat() / TYPEWRITER_COLUMNS * 10).roundToInt()
(sprite as SheetSpriteAnimation).currentRow = 1 + (carriagePosition.toFloat() / TYPEWRITER_COLUMNS * 10).roundToInt()
}
companion object {
@@ -73,16 +74,18 @@ class FixtureTypewriter : FixtureBase {
// DON'T create an anonymous class here: they won't be serialised
INGAME.actorNowPlaying?.inventory?.let { inventory ->
val newItem = ItemFileRef("item@basegame:33536").makeDynamic(inventory).also { it0 ->
val newItem = ItemPlainDocument("item@basegame:33536").makeDynamic(inventory).also { it0 ->
val it = it0 as ItemFileRef
it.refIsShared = true
it.uuid = newUUID
if (INGAME.actorNowPlaying is IngamePlayer)
it.authorUUID = (INGAME.actorNowPlaying as IngamePlayer).uuid
it.refPath = newUUID.toString()
it.mediumIdentifier = "text/typewriter"
it.useItemHandler = "net.torvald.terrarum.modulebasegame.gameactors.TestLeafletPrimaryUseHandler"
it.name = "Testification"
it.author = "Author Name Here"
it.author = INGAME.actorNowPlaying?.actorValue?.getAsString(AVKey.NAME) ?: ""
}
inventory.add(newItem)

View File

@@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.Gdx
import net.torvald.terrarum.App
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameitems.GameItem
@@ -24,6 +25,7 @@ open class ItemFileRef(originalID: ItemID) : GameItem(originalID) {
var collection = ""
open var uuid: UUID = UUID(0, 0)
open var authorUUID: UUID = UUID(0, 0)
/**
* String of path within the module (if not refIsShared), or path under savedir/Shared/
@@ -127,4 +129,32 @@ interface FileRefItemPrimaryUseHandler {
/** If this item must be consumed, return 1; if this item must not be consumed, return 0; if this item
* was failed to be used (for some reason), return -1. */
fun use(item: ItemFileRef): Long
}
class ItemPlainDocument(originalID: ItemID) : ItemFileRef(originalID) {
private constructor() : this("")
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(2,14)
}
}
class ItemUnsealedLetter(originalID: ItemID) : ItemFileRef(originalID) {
private constructor() : this("")
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(3,14)
}
}
class ItemSealedLetter(originalID: ItemID) : ItemFileRef(originalID) {
private constructor() : this("")
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(4,14)
}
}
class ItemPostParcel(originalID: ItemID) : ItemFileRef(originalID) {
private constructor() : this("")
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(5,14)
}
}