mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-06 08:38:30 +09:00
item and sprite for 'document' type items
This commit is contained in:
@@ -135,8 +135,8 @@ id;classname;tags
|
|||||||
2048;net.torvald.terrarum.modulebasegame.gameitems.ItemInductionMotor;FIXTURE,POWER,KINETIC
|
2048;net.torvald.terrarum.modulebasegame.gameitems.ItemInductionMotor;FIXTURE,POWER,KINETIC
|
||||||
2049;net.torvald.terrarum.modulebasegame.gameitems.ItemGearbox;FIXTURE,POWER,KINETIC
|
2049;net.torvald.terrarum.modulebasegame.gameitems.ItemGearbox;FIXTURE,POWER,KINETIC
|
||||||
|
|
||||||
# data storage (discs; 256)
|
# data storage (pre-composed discs; 256)
|
||||||
# 32768 is a reserved number for a blank disc
|
# 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
|
32769;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc01;MUSIC,PHONO
|
||||||
32770;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc02;MUSIC,PHONO
|
32770;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc02;MUSIC,PHONO
|
||||||
32771;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc03;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
|
32776;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc08;MUSIC,PHONO
|
||||||
32777;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc09;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
|
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
|
33280;net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper;FIXTURE,BASEOBJECT
|
||||||
|
|
||||||
# data storage (typewritten leaflets; 256)
|
# data storage (pre-composed typewritten leaflets; 256)
|
||||||
33536;net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef;FIXTURE,BASEOBJECT
|
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
|
# fluids on storage
|
||||||
# preferably autogenerated
|
# FUTURE QUEST: autogenerate them using FLUID CODEX
|
||||||
# FLUIDSTORAGE: required tag for buckets/canisters
|
# FLUIDSTORAGE: required tag for buckets/canisters
|
||||||
# OPENSTORAGE: cannot hold gas. Canisters need LIDDEDSTORAGE/SEALEDSTORAGE
|
# OPENSTORAGE: cannot hold gas. Canisters need LIDDEDSTORAGE/SEALEDSTORAGE
|
||||||
# NOEXTREMETHERM: cannot hold cryogenic/molten fluids (can only hold fluid with therm 0 or 1)
|
# NOEXTREMETHERM: cannot hold cryogenic/molten fluids (can only hold fluid with therm 0 or 1)
|
||||||
|
|||||||
|
Binary file not shown.
@@ -9,6 +9,7 @@ import net.torvald.terrarum.gameactors.AVKey
|
|||||||
import net.torvald.terrarum.langpack.Lang
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import net.torvald.terrarum.modulebasegame.gameitems.FileRefItemPrimaryUseHandler
|
import net.torvald.terrarum.modulebasegame.gameitems.FileRefItemPrimaryUseHandler
|
||||||
import net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef
|
import net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef
|
||||||
|
import net.torvald.terrarum.modulebasegame.gameitems.ItemPlainDocument
|
||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
@@ -40,7 +41,7 @@ class FixtureTypewriter : FixtureBase {
|
|||||||
setHitboxDimension(16, 16, 8, 0)
|
setHitboxDimension(16, 16, 8, 0)
|
||||||
|
|
||||||
makeNewSprite(FixtureBase.getSpritesheet("basegame", "sprites/fixtures/typewriter.tga", 32, 16)).let {
|
makeNewSprite(FixtureBase.getSpritesheet("basegame", "sprites/fixtures/typewriter.tga", 32, 16)).let {
|
||||||
it.setRowsAndFrames(1,1)
|
it.setRowsAndFrames(12,1)
|
||||||
}
|
}
|
||||||
|
|
||||||
actorValue[AVKey.BASEMASS] = 3.6
|
actorValue[AVKey.BASEMASS] = 3.6
|
||||||
@@ -49,7 +50,7 @@ class FixtureTypewriter : FixtureBase {
|
|||||||
override fun updateImpl(delta: Float) {
|
override fun updateImpl(delta: Float) {
|
||||||
super.updateImpl(delta)
|
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 {
|
companion object {
|
||||||
@@ -73,16 +74,18 @@ class FixtureTypewriter : FixtureBase {
|
|||||||
|
|
||||||
// DON'T create an anonymous class here: they won't be serialised
|
// DON'T create an anonymous class here: they won't be serialised
|
||||||
INGAME.actorNowPlaying?.inventory?.let { inventory ->
|
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
|
val it = it0 as ItemFileRef
|
||||||
|
|
||||||
it.refIsShared = true
|
it.refIsShared = true
|
||||||
it.uuid = newUUID
|
it.uuid = newUUID
|
||||||
|
if (INGAME.actorNowPlaying is IngamePlayer)
|
||||||
|
it.authorUUID = (INGAME.actorNowPlaying as IngamePlayer).uuid
|
||||||
it.refPath = newUUID.toString()
|
it.refPath = newUUID.toString()
|
||||||
it.mediumIdentifier = "text/typewriter"
|
it.mediumIdentifier = "text/typewriter"
|
||||||
it.useItemHandler = "net.torvald.terrarum.modulebasegame.gameactors.TestLeafletPrimaryUseHandler"
|
it.useItemHandler = "net.torvald.terrarum.modulebasegame.gameactors.TestLeafletPrimaryUseHandler"
|
||||||
it.name = "Testification"
|
it.name = "Testification"
|
||||||
it.author = "Author Name Here"
|
it.author = INGAME.actorNowPlaying?.actorValue?.getAsString(AVKey.NAME) ?: ""
|
||||||
}
|
}
|
||||||
|
|
||||||
inventory.add(newItem)
|
inventory.add(newItem)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.gameitems
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx
|
import com.badlogic.gdx.Gdx
|
||||||
import net.torvald.terrarum.App
|
import net.torvald.terrarum.App
|
||||||
|
import net.torvald.terrarum.CommonResourcePool
|
||||||
import net.torvald.terrarum.ModMgr
|
import net.torvald.terrarum.ModMgr
|
||||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||||
import net.torvald.terrarum.gameitems.GameItem
|
import net.torvald.terrarum.gameitems.GameItem
|
||||||
@@ -24,6 +25,7 @@ open class ItemFileRef(originalID: ItemID) : GameItem(originalID) {
|
|||||||
var collection = ""
|
var collection = ""
|
||||||
|
|
||||||
open var uuid: UUID = UUID(0, 0)
|
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/
|
* 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
|
/** 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. */
|
* was failed to be used (for some reason), return -1. */
|
||||||
fun use(item: ItemFileRef): Long
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
Reference in New Issue
Block a user