pickaxe to drop ores when they were mined

This commit is contained in:
minjaesong
2023-10-11 17:59:10 +09:00
parent e63300339e
commit 552cfd5f06
14 changed files with 155 additions and 43 deletions

View File

@@ -4,6 +4,7 @@ import net.torvald.terrarum.*
import net.torvald.terrarum.App.IS_DEVELOPMENT_BUILD
import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.blockproperties.BlockProp
import net.torvald.terrarum.blockproperties.OreProp
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.itemproperties.CraftingCodex
@@ -39,6 +40,7 @@ class EntryPoint : ModuleEntryPoint() {
ModMgr.GameMaterialLoader.invoke(moduleName)
ModMgr.GameItemLoader.invoke(moduleName)
ModMgr.GameBlockLoader.invoke(moduleName)
ModMgr.GameOreLoader.invoke(moduleName)
ModMgr.GameLanguageLoader.invoke(moduleName)
ModMgr.GameCraftingRecipeLoader.invoke(moduleName)
@@ -60,7 +62,7 @@ class EntryPoint : ModuleEntryPoint() {
printdbg(this, "recording item ID ")
// blocks.csvs are loaded by ModMgr beforehand
// block items (blocks and walls are the same thing basically)
// register blocks as items
for (tile in BlockCodex.getAll()) {
ItemCodex[tile.id] = makeNewItemObj(tile, false)

View File

@@ -14,16 +14,24 @@ open class OreItemBase(originalID: ItemID) : GameItem(originalID) {
override var inventoryCategory = Category.GENERIC
override val isDynamic = false
override val materialId = "OORE"
override var equipPosition = EquipPosition.HAND_GRIP
}
class OreTimber(originalID: ItemID) : OreItemBase(originalID) {
override var originalName = "ITEM_WOODS"
/* Wooden Log is a block */
class OreWood(originalID: ItemID) : OreItemBase(originalID) {
override var originalName = "ITEM_WOOD"
override val materialId = "WOOD"
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(0,6)
}
class OreCopper(originalID: ItemID) : OreItemBase(originalID) {
override var originalName = "ITEM_ORE_MALACHITE"
class OreStick(originalID: ItemID) : OreItemBase(originalID) {
override var originalName = "ITEM_WOOD_STICK"
override val materialId = "WOOD"
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(1,6)
}
class OreCopper(originalID: ItemID) : OreItemBase(originalID) {
override var originalName = "ITEM_ORE_MALACHITE"
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(2,6)
}

View File

@@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.*
import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED
import net.torvald.terrarum.blockproperties.Block
@@ -74,13 +75,18 @@ object PickaxeCore {
// filter passed, do the job
val swingDmgToFrameDmg = delta.toDouble() / actorvalue.getAsDouble(AVKey.ACTION_INTERVAL)!!
val (oreOnTile, _) = INGAME.world.getTileFromOre(x, y)
(INGAME.world).inflictTerrainDamage(
x, y,
Calculate.pickaxePower(actor, item?.material) * swingDmgToFrameDmg
)?.let { tileBroken ->
if (Math.random() < dropProbability) {
val drop = BlockCodex[tileBroken].drop
val drop = if (oreOnTile != Block.AIR)
OreCodex[oreOnTile].item
else
BlockCodex[tileBroken].drop
if (drop.isNotBlank()) {
INGAME.queueActorAddition(DroppedItem(drop, (x + 0.5) * TILE_SIZED, (y + 1.0) * TILE_SIZED))
}