mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-11 02:54:04 +09:00
pickaxe to drop ores when they were mined
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user