tree-related items

This commit is contained in:
minjaesong
2023-11-13 20:56:07 +09:00
parent 4de2f9e34c
commit 18f133439b
6 changed files with 86 additions and 17 deletions

View File

@@ -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
}

View File

@@ -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)
}

View File

@@ -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))

View File

@@ -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"