From f45a2ce1d936b6d1d02cac0bcc9f1bcd99e643b6 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 5 May 2024 02:16:33 +0900 Subject: [PATCH] more btex; sheet metal item --- .../terrarum-sans-bitmap/ascii_variable.tga | 2 +- assets/mods/basegame/items/itemid.csv | 35 ++++-- assets/mods/basegame/items/items.tga | 4 +- btexdoc.dtd | 10 +- lib/TerrarumSansBitmap.jar | 4 +- src/net/torvald/btex/BTeXParser.kt | 71 ++++++++++--- .../modulebasegame/gameitems/OreItemBase.kt | 100 +++++++++++++++--- src/net/torvald/terrarum/tests/BTeXTest.kt | 7 +- work_files/graphics/items/basegame_items.kra | 4 +- 9 files changed, 191 insertions(+), 46 deletions(-) diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/ascii_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/ascii_variable.tga index 66807c85b..dd7f2ca98 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/ascii_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/ascii_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a0a7ba2424fcd916a7b2975d30eefea09cdf54ba586a673336ebcc0197d878c +oid sha256:8ac70bb0fcb78b25371b5cbe434cf3394c78ab7d06f8b0ffdbd39480619e2f92 size 327698 diff --git a/assets/mods/basegame/items/itemid.csv b/assets/mods/basegame/items/itemid.csv index 607cc3d0b..e9a6aea1c 100644 --- a/assets/mods/basegame/items/itemid.csv +++ b/assets/mods/basegame/items/itemid.csv @@ -64,15 +64,6 @@ id;classname;tags 118;net.torvald.terrarum.modulebasegame.gameitems.IngotSilver;INGOT 119;net.torvald.terrarum.modulebasegame.gameitems.IngotLead;INGOT -# alloys -26;net.torvald.terrarum.modulebasegame.gameitems.IngotSteel;INGOT,ALLOY -176;net.torvald.terrarum.modulebasegame.gameitems.IngotBronze;INGOT,ALLOY -177;net.torvald.terrarum.modulebasegame.gameitems.IngotBrass;INGOT,ALLOY -178;net.torvald.terrarum.modulebasegame.gameitems.IngotElectrum;INGOT,ALLOY -179;net.torvald.terrarum.modulebasegame.gameitems.IngotSilverBillon;INGOT,ALLOY -180;net.torvald.terrarum.modulebasegame.gameitems.IngotRosegold;INGOT,ALLOY -181;net.torvald.terrarum.modulebasegame.gameitems.IngotSolder;INGOT,ALLOY - # ores 128;net.torvald.terrarum.modulebasegame.gameitems.OreCopper;SMELTABLE 129;net.torvald.terrarum.modulebasegame.gameitems.OreIron;SMELTABLE @@ -83,7 +74,6 @@ id;classname;tags 134;net.torvald.terrarum.modulebasegame.gameitems.OreSilver;SMELTABLE 135;net.torvald.terrarum.modulebasegame.gameitems.OreLead;SMELTABLE - # gemstones 144;net.torvald.terrarum.modulebasegame.gameitems.GemQuartz;SMELTABLE,SIO2 145;net.torvald.terrarum.modulebasegame.gameitems.GemAmethyst;SMELTABLE,SIO2 @@ -102,7 +92,32 @@ id;classname;tags 170;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsBirch;COMBUSTIBLE,SMELTABLE,LOGS 171;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsRosewood;COMBUSTIBLE,SMELTABLE,LOGS +# alloyed ingots +26;net.torvald.terrarum.modulebasegame.gameitems.IngotSteel;INGOT,ALLOY +176;net.torvald.terrarum.modulebasegame.gameitems.IngotBronze;INGOT,ALLOY +177;net.torvald.terrarum.modulebasegame.gameitems.IngotBrass;INGOT,ALLOY +178;net.torvald.terrarum.modulebasegame.gameitems.IngotElectrum;INGOT,ALLOY +179;net.torvald.terrarum.modulebasegame.gameitems.IngotSilverBillon;INGOT,ALLOY +180;net.torvald.terrarum.modulebasegame.gameitems.IngotRosegold;INGOT,ALLOY +181;net.torvald.terrarum.modulebasegame.gameitems.IngotSolder;INGOT,ALLOY +# sheet metals +192;net.torvald.terrarum.modulebasegame.gameitems.SheetCopper;SHEETMETAL +193;net.torvald.terrarum.modulebasegame.gameitems.SheetIron;SHEETMETAL +194;net.torvald.terrarum.modulebasegame.gameitems.SheetSteel;SHEETMETAL,ALLOY +195;net.torvald.terrarum.modulebasegame.gameitems.SheetZinc;SHEETMETAL +196;net.torvald.terrarum.modulebasegame.gameitems.SheetTin;SHEETMETAL +197;net.torvald.terrarum.modulebasegame.gameitems.SheetGold;SHEETMETAL +198;net.torvald.terrarum.modulebasegame.gameitems.SheetSilver;SHEETMETAL +199;net.torvald.terrarum.modulebasegame.gameitems.SheetLead;SHEETMETAL +200;net.torvald.terrarum.modulebasegame.gameitems.SheetBronze;SHEETMETAL,ALLOY +201;net.torvald.terrarum.modulebasegame.gameitems.SheetBrass;SHEETMETAL,ALLOY +202;net.torvald.terrarum.modulebasegame.gameitems.SheetElectrum;SHEETMETAL,ALLOY +203;net.torvald.terrarum.modulebasegame.gameitems.SheetSilverBillon;SHEETMETAL,ALLOY +204;net.torvald.terrarum.modulebasegame.gameitems.SheetRosegold;SHEETMETAL,ALLOY +205;net.torvald.terrarum.modulebasegame.gameitems.SheetSolder;SHEETMETAL,ALLOY + +# doors 256;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorOak;FIXTURE 257;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorEbony;FIXTURE 258;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorBirch;FIXTURE diff --git a/assets/mods/basegame/items/items.tga b/assets/mods/basegame/items/items.tga index e38233a05..9134c4042 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:a1922a5416cc4c66223e272ffcc86251a1f903e3ce0d9190877878b62675ab11 -size 2408466 +oid sha256:559324af689c1a3d7696a503df8235d83db561da0bdb72368db0bdc56ef00475 +size 4816914 diff --git a/btexdoc.dtd b/btexdoc.dtd index 387d259e9..8086fe8b1 100644 --- a/btexdoc.dtd +++ b/btexdoc.dtd @@ -1,3 +1,6 @@ + + + @@ -5,7 +8,7 @@ - + @@ -56,7 +59,9 @@ + + @@ -89,7 +94,7 @@ - + @@ -98,6 +103,7 @@ + ) = invoke(file.file(), varMap) - operator fun invoke(file: File): Pair { + operator fun invoke(file: File, varMap: Map): Pair { val doc = BTeXDocument() val parser = SAXParserFactory.newDefaultInstance().newSAXParser() val stream = FileInputStream(file) - val handler = BTeXHandler(doc) + val handler = BTeXHandler(doc, varMap) parser.parse(stream, handler) return doc to handler } - operator fun invoke(string: String): Pair { + operator fun invoke(string: String, varMap: Map): Pair { val doc = BTeXDocument() val parser = SAXParserFactory.newDefaultInstance().newSAXParser() - val handler = BTeXHandler(doc) + val handler = BTeXHandler(doc, varMap) parser.parse(InputSource(StringReader(string)), handler) return doc to handler } - class BTeXHandler(val doc: BTeXDocument) : DefaultHandler() { + class BTeXHandler(val doc: BTeXDocument, val varMap: Map) : DefaultHandler() { private var cover = "" private var inner = "" private var papersize = "" @@ -80,6 +82,7 @@ object BTeXParser { private var currentTheme = "" private var spanColour: String? = null private var codeMode: Boolean = false + private var bucksMode: Boolean = false private val elemOpeners: HashMap> = HashMap() @@ -185,9 +188,9 @@ object BTeXParser { override fun draw(doc: BTeXDocument, batch: SpriteBatch, x: Float, y: Float, font: TerrarumSansBitmap?) { val oldcol = batch.color.cpy() batch.color = Color(0xccccccff.toInt()) - Toolkit.fillArea(batch, x - 2, y - 1, width + 4f, doc.lineHeightInPx + 2f) + Toolkit.fillArea(batch, x - 2, y, width + 4f, doc.lineHeightInPx.toFloat()) batch.color = Color(0x999999ff.toInt()) - Toolkit.drawBoxBorder(batch, x - 2, y - 1, width + 4f, doc.lineHeightInPx + 2f) + Toolkit.drawBoxBorder(batch, x - 2, y, width + 4f, doc.lineHeightInPx.toFloat()) batch.color = oldcol } } @@ -202,6 +205,18 @@ object BTeXParser { if (::subtitleFont.isInitialized) subtitleFont.tryDispose() } + override fun warning(e: SAXParseException) { + e.printStackTrace() + } + + override fun error(e: SAXParseException) { + throw e + } + + override fun fatalError(e: SAXParseException) { + throw e + } + private fun printdbg(message: String?) { val CSI = "\u001B[32m" val timeNow = System.currentTimeMillis() @@ -284,16 +299,17 @@ object BTeXParser { private var oldSpanColour: String? = null private var oldCodeMode = false + private var oldBucksMode = false private val CODE_TAG_MARGIN = 2 override fun characters(ch: CharArray, start: Int, length: Int) { - var str = + val str = String(ch.sliceArray(start until start + length)).replace('\n', ' ').replace(Regex(" +"), " ")//.trim() if (str.isNotEmpty()) { + printdbg("Characters [col:${spanColour}] \t\"$str\"") // process span request if (spanColour != oldSpanColour || spanColour != null) { -// printdbg("Characters [col:${spanColour}] \t\"$str\"") val spanGdxCol = getSpanColourOrNull() @@ -311,13 +327,12 @@ object BTeXParser { // process code request if (codeMode != oldCodeMode || codeMode) { - if (!codeMode) { paragraphBuffer.append(TerrarumSansBitmap.charsetOverrideDefault) paragraphBuffer.append(glueToString(CODE_TAG_MARGIN)) } else { - println("CODE tag for str '$str'") +// println("CODE tag for str '$str'") val w = getFont().getWidth(str) + 2*CODE_TAG_MARGIN getOrPutCodeTagRef(w) paragraphBuffer.appendObjectPlaceholder("TAG@CODE-${w}") @@ -326,12 +341,25 @@ object BTeXParser { } } + // process bucks request + if (bucksMode != oldBucksMode || bucksMode) { + if (!bucksMode) { + paragraphBuffer.append(ccDefault) + + } + else { + paragraphBuffer.append(ccBucks) + val str2 = str.replace(' ', '\u00A0') + + } + } paragraphBuffer.append(str) oldSpanColour = spanColour oldCodeMode = codeMode + oldBucksMode = bucksMode } } @@ -688,6 +716,16 @@ object BTeXParser { handler.codeMode = false } + @OpenTag // reflective access is impossible with 'private' + fun processElemBUCKS(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap) { + handler.bucksMode = true + handler.paragraphBuffer.append("$CURRENCY\u00A0") + } + @CloseTag + fun closeElemBUCKS(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) { + handler.bucksMode = false + } + @OpenTag // reflective access is impossible with 'private' fun processElemCOVER(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap) { @@ -799,6 +837,14 @@ object BTeXParser { } } + @OpenTag // reflective access is impossible with 'private' + fun processElemVAR(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap) { + attribs["id"]?.let { + val value = varMap[it] ?: throw NullPointerException("No variable definition of '$it'") + handler.paragraphBuffer.append(value) + } + } + @@ -1351,6 +1397,7 @@ object BTeXParser { companion object { val ccDefault = TerrarumSansBitmap.toColorCode(0,0,0) + val ccBucks = TerrarumSansBitmap.toColorCode(4,0,0) private const val ZWSP = 0x200B private const val SHY = 0xAD diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt index 5e10de399..ce1610755 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt @@ -172,72 +172,144 @@ class ItemCharcoal(originalID: ItemID) : OreItemBase(originalID) { class IngotCopper(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_COPPER" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(1,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(16,0) } class IngotIron(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_IRON" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(2,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(16,0) } class IngotSteel(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_STEEL" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(3,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(18,0) } class IngotZinc(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_ZINC" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(4,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(19,0) } class IngotTin(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_TIN" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(5,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(20,0) } class IngotGold(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_GOLD" override val materialId: String = "AURM" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(6, 5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(21, 0) } class IngotSilver(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_SILVER" override val materialId: String = "ARGN" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(7,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(22,0) } class IngotLead(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_LEAD" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(8,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(23,0) } class IngotBronze(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_BRONZE" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(9,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(24,0) } class IngotBrass(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_BRASS" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(10,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(25,0) } class IngotElectrum(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_ELECTRUM" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(11,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(26,0) } class IngotSilverBillon(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_SILVER_BILLON" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(12,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(27,0) } class IngotRosegold(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_ROSEGOLD" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(13,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(28,0) } class IngotSolder(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_INGOT_SOLDER" override val itemImage: TextureRegion - get() = CommonResourcePool.getAsItemSheet("basegame.items").get(14,5) + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(29,0) } +class SheetCopper(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_COPPER" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(16,1) +} +class SheetIron(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_IRON" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(16,1) +} +class SheetSteel(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_STEEL" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(18,1) +} +class SheetZinc(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_ZINC" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(19,1) +} +class SheetTin(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_TIN" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(20,1) +} +class SheetGold(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_GOLD" + override val materialId: String = "AURM" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(21,1) +} +class SheetSilver(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_SILVER" + override val materialId: String = "ARGN" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(22,1) +} +class SheetLead(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_LEAD" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(23,1) +} +class SheetBronze(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_BRONZE" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(24,1) +} +class SheetBrass(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_BRASS" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(25,1) +} +class SheetElectrum(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_ELECTRUM" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(26,1) +} +class SheetSilverBillon(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_SILVER_BILLON" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(27,1) +} +class SheetRosegold(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_ROSEGOLD" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(28,1) +} +class SheetSolder(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SHEET_SOLDER" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(29,1) +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/tests/BTeXTest.kt b/src/net/torvald/terrarum/tests/BTeXTest.kt index a5cb1aa79..fb0467649 100644 --- a/src/net/torvald/terrarum/tests/BTeXTest.kt +++ b/src/net/torvald/terrarum/tests/BTeXTest.kt @@ -40,6 +40,11 @@ class BTeXTest : ApplicationAdapter() { private lateinit var bg: TextureRegion + private val varMap = hashMapOf( + "terrarumver" to "Alpha 1.3", + "bucks" to "121687" + ) + override fun create() { batch = FlippingSpriteBatch(1000) camera = OrthographicCamera(1280f, 720f) @@ -53,7 +58,7 @@ class BTeXTest : ApplicationAdapter() { if (!isBookFinalised) { measureTimeMillis { - val f = BTeXParser.invoke(Gdx.files.internal("./assets/mods/basegame/books/$filePath")) + val f = BTeXParser.invoke(Gdx.files.internal("./assets/mods/basegame/books/$filePath"), varMap) document = f.first documentHandler = f.second }.also { diff --git a/work_files/graphics/items/basegame_items.kra b/work_files/graphics/items/basegame_items.kra index 66f9f1fb7..4f53f56fe 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:18ac47774f92c4d3a7cbc1ace0d627d884ab7a8c1111966112862cddc24688f2 -size 1725583 +oid sha256:0e42ddbf0abe3896521daa657df4511e65f478cd0e84e874b98fdbc56a8aeae3 +size 2015334