diff --git a/assets/mods/basegame/items/itemid.csv b/assets/mods/basegame/items/itemid.csv index ca00f8fcb..114304f27 100644 --- a/assets/mods/basegame/items/itemid.csv +++ b/assets/mods/basegame/items/itemid.csv @@ -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) diff --git a/assets/mods/basegame/items/items.tga b/assets/mods/basegame/items/items.tga index 5ca808c42..222a3b779 100644 --- a/assets/mods/basegame/items/items.tga +++ b/assets/mods/basegame/items/items.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3fd661d20157e6dec035cebb7590b65082b949d73fa230e6b4ff557a7d508e1 +oid sha256:684337cc90ba35cfd66b69efc20c436ecb52c88b562464b1207395392fe76790 size 2408466 diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTypewriter.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTypewriter.kt index b10f0c08d..e852dad4f 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTypewriter.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTypewriter.kt @@ -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) diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemFileRef.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemFileRef.kt index dd98a457a..cbc73efc6 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemFileRef.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemFileRef.kt @@ -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) + } } \ No newline at end of file diff --git a/work_files/graphics/items/basegame_items.kra b/work_files/graphics/items/basegame_items.kra index 34490894e..506321e09 100644 --- a/work_files/graphics/items/basegame_items.kra +++ b/work_files/graphics/items/basegame_items.kra @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74bd6149d544a8af947b251f729483f924256479f7007d2105b6e1bdea3e1224 -size 1801193 +oid sha256:6f4afef371b0113d534c1bb1499c88ffbc8e89832805ebad221e83877b8bac9a +size 1909878