From 18f133439bb9cf9cb33c778729128510590a658b Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 13 Nov 2023 20:56:07 +0900 Subject: [PATCH] tree-related items --- assets/mods/basegame/blocks/blocks.csv | 16 ++--- assets/mods/basegame/items/itemid.csv | 10 ++- .../gamecontroller/IngameController.kt | 2 +- .../modulebasegame/gameitems/AxeCore.kt | 5 +- .../modulebasegame/gameitems/BlockBase.kt | 2 +- .../modulebasegame/gameitems/OreItemBase.kt | 68 +++++++++++++++++-- 6 files changed, 86 insertions(+), 17 deletions(-) diff --git a/assets/mods/basegame/blocks/blocks.csv b/assets/mods/basegame/blocks/blocks.csv index 5c2328066..4c5ec23ab 100644 --- a/assets/mods/basegame/blocks/blocks.csv +++ b/assets/mods/basegame/blocks/blocks.csv @@ -28,16 +28,16 @@ "51";"51";"51";"BLOCK_PLANK_ROSEWOOD";"0.1252";"0.1252";"0.1252";"0.1252";"17";"900";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"WOOD,NORANDTILE" # small punchable trees -"64";"48";"64";"BLOCK_TRUNK_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"16";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" -"65";"49";"65";"BLOCK_TRUNK_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"19";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" -"66";"50";"66";"BLOCK_TRUNK_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"15";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" -"67";"51";"67";"BLOCK_TRUNK_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"17";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" +"64";"48";"48";"BLOCK_TRUNK_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"16";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" +"65";"49";"49";"BLOCK_TRUNK_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"19";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" +"66";"50";"50";"BLOCK_TRUNK_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"15";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" +"67";"51";"51";"BLOCK_TRUNK_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"17";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" # large non-punchable trees -"72";"72";"72";"BLOCK_TRUNK_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"16";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" -"73";"73";"73";"BLOCK_TRUNK_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"19";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" -"74";"74";"74";"BLOCK_TRUNK_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"15";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" -"75";"75";"75";"BLOCK_TRUNK_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"17";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" +"72";"item@basegame:168";"item@basegame:168";"BLOCK_TRUNK_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"16";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" +"73";"item@basegame:169";"item@basegame:169";"BLOCK_TRUNK_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"19";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" +"74";"item@basegame:170";"item@basegame:170";"BLOCK_TRUNK_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"15";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" +"75";"item@basegame:171";"item@basegame:171";"BLOCK_TRUNK_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"17";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" # sabulous "80";"80";"80";"BLOCK_SAND";"0.1252";"0.1252";"0.1252";"0.1252";"24";"2400";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.06";"SAND,NATURAL,WARM" diff --git a/assets/mods/basegame/items/itemid.csv b/assets/mods/basegame/items/itemid.csv index b949595eb..d32bfe24e 100644 --- a/assets/mods/basegame/items/itemid.csv +++ b/assets/mods/basegame/items/itemid.csv @@ -32,10 +32,16 @@ id;classname #144; gems # tree seeds by tree species -160;net.torvald.terrarum.modulebasegame.gameitems.ItemOakSeed +160;net.torvald.terrarum.modulebasegame.gameitems.ItemSeedOak +161;net.torvald.terrarum.modulebasegame.gameitems.ItemSeedEbony +162;net.torvald.terrarum.modulebasegame.gameitems.ItemSeedBirch +163;net.torvald.terrarum.modulebasegame.gameitems.ItemSeedRosewood # tree logs -168;net.torvald.terrarum.modulebasegame.gameitems.ItemOakLogs +168;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsOak +169;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsEbony +170;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsBirch +171;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsRosewood 256;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorOak diff --git a/src/net/torvald/terrarum/gamecontroller/IngameController.kt b/src/net/torvald/terrarum/gamecontroller/IngameController.kt index f7f8e5c1a..9ca81d30a 100644 --- a/src/net/torvald/terrarum/gamecontroller/IngameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/IngameController.kt @@ -153,7 +153,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() { // - using any item that is not fixture (blocks, picks) // DON'T unlatch when: // - performing barehand action - if (!Terrarum.mouseDown || inventoryCategoryAllowClickAndDrag.contains(ItemCodex[itemOnGrip]?.inventoryCategory)) { + if (!Terrarum.mouseDown || inventoryCategoryAllowClickAndDrag.contains(ItemCodex[itemOnGrip]?.inventoryCategory) || ItemCodex[itemOnGrip]?.tags?.contains("ACTINGBLOCK") == true) { worldPrimaryClickLatched = false } diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/AxeCore.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/AxeCore.kt index 9ee064b01..082b2c456 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/AxeCore.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/AxeCore.kt @@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.Color import net.torvald.terrarum.* import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.blockproperties.Block +import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gameitems.GameItem @@ -107,7 +108,7 @@ object AxeCore { if (propHere.hasTag("TREETRUNK")) { INGAME.world.setTileTerrain(x, y - upCtr, Block.AIR, false) - PickaxeCore.dropItem(tileHere, x, y - upCtr) // todo use log item if applicable + PickaxeCore.dropItem(propHere.drop, x, y - upCtr) // todo use log item if applicable } else if (propHere.hasTag("LEAVES")) { if (thisLeaf == null) thisLeaf = tileHere @@ -138,6 +139,8 @@ object AxeCore { upCtr += 1 } + // drop the item under cursor + PickaxeCore.dropItem(BlockCodex[tileBroken].drop, x, y) // todo use log item if applicable PickaxeCore.makeDust(tile, x, y, 9) } diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt index f339d5ee8..84502bfb6 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt @@ -33,7 +33,7 @@ object BlockBase { val heldProp = BlockCodex[itemID] // check for collision with actors (solid terrain block only) - if (gameItem.inventoryCategory == GameItem.Category.BLOCK && heldProp.isSolid) { + if ((gameItem.inventoryCategory == GameItem.Category.BLOCK || gameItem.tags.contains("ACTINGBLOCK")) && heldProp.isSolid) { var ret1 = true ingame.actorContainerActive.filter { it is ActorWithBody }.forEach { val it = it as ActorWithBody if ((it is FixtureBase || it.physProp.usePhysics) && it.intTilewiseHitbox.intersects(mousePoint)) diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt index 3e88c675c..18ccef016 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt @@ -30,19 +30,79 @@ open class OreItemBase(originalID: ItemID) : GameItem(originalID) { } /* Wooden Log is a block */ -class ItemOakLogs(originalID: ItemID) : OreItemBase(originalID) { +class ItemLogsOak(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_LOGS_OAK" override val materialId = "WOOD" override val itemImage: TextureRegion get() = CommonResourcePool.getAsItemSheet("basegame.items").get(0,10) + + init { tags.add("ACTINGBLOCK") } + override fun startPrimaryUse(actor: ActorWithBody, delta: Float): Long { + return BlockBase.blockStartPrimaryUse(actor, this, "basegame:72", delta) + } +} +class ItemLogsEbony(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_LOGS_EBONY" + override val materialId = "WOOD" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(1,10) + + init { tags.add("ACTINGBLOCK") } + override fun startPrimaryUse(actor: ActorWithBody, delta: Float): Long { + return BlockBase.blockStartPrimaryUse(actor, this, "basegame:73", delta) + } +} +class ItemLogsBirch(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_LOGS_BIRCH" + override val materialId = "WOOD" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(2,10) + + init { tags.add("ACTINGBLOCK") } + override fun startPrimaryUse(actor: ActorWithBody, delta: Float): Long { + return BlockBase.blockStartPrimaryUse(actor, this, "basegame:74", delta) + } +} +class ItemLogsRosewood(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_LOGS_ROSEWOOD" + override val materialId = "WOOD" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(3,10) + + init { tags.add("ACTINGBLOCK") } + override fun startPrimaryUse(actor: ActorWithBody, delta: Float): Long { + return BlockBase.blockStartPrimaryUse(actor, this, "basegame:75", delta) + } } -class ItemOakSeed(originalID: ItemID) : OreItemBase(originalID) { - override var originalName = "ITEM_ACORN_OAK" - override val materialId = "WOOD" + + +class ItemSeedOak(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SEED_OAK" + override val materialId = "OOZE" override val itemImage: TextureRegion get() = CommonResourcePool.getAsItemSheet("basegame.items").get(0,11) } +class ItemSeedEbony(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SEED_EBONY" + override val materialId = "OOZE" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(1,11) +} +class ItemSeedBirch(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SEED_BIRCH" + override val materialId = "OOZE" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(2,11) +} +class ItemSeedRosewood(originalID: ItemID) : OreItemBase(originalID) { + override var originalName = "ITEM_SEED_ROSEWOOD" + override val materialId = "OOZE" + override val itemImage: TextureRegion + get() = CommonResourcePool.getAsItemSheet("basegame.items").get(3,11) +} + + class OreStick(originalID: ItemID) : OreItemBase(originalID) { override var originalName = "ITEM_WOOD_STICK"