Files
Terrarum/src/net/torvald/terrarum/modulebasegame/gameitems/OreItemBase.kt
2024-09-15 16:01:12 +09:00

196 lines
6.9 KiB
Kotlin

package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.gameitems.ItemID
/**
* Created by minjaesong on 2023-10-11.
*/
open class OreItemBase(originalID: ItemID, private val registerToOreDict: Boolean = false) : GameItem(originalID) {
override var baseMass = 10.0
override var baseToolSize: Double? = null
override var inventoryCategory = Category.GENERIC
override val canBeDynamic = false
override val materialId = "OORE"
override var equipPosition = EquipPosition.HAND_GRIP
override fun effectOnPickup(actor: ActorWithBody) {
if (registerToOreDict) {
val playerCodex = (actor.actorValue.getAsString(AVKey.ORE_DICT) ?: "").split(',').filter { it.isNotBlank() }
.toMutableList()
if (playerCodex.binarySearch(originalID) < 0) {
playerCodex.add(originalID)
playerCodex.sort()
actor.actorValue[AVKey.ORE_DICT] = playerCodex.joinToString(",")
}
}
}
}
/* Wooden Log is a block */
class ItemLogsOak(originalID: ItemID) : OreItemBase(originalID) {
override var originalName = "ITEM_LOGS_OAK"
override val materialId = "WOOD"
override var calories = 1920.0
override var smokiness = 0.2f
init {
itemImage = 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 var calories = 1920.0
override var smokiness = 0.2f
init {
itemImage = 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 var calories = 1920.0
override var smokiness = 0.2f
init {
itemImage = 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 var calories = 1920.0
override var smokiness = 0.2f
init {
itemImage = 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 OreCopper(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_MALACHITE"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(1,6)
}
}
class OreIron(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_HAEMATITE"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(2,6)
}
}
class OreCoal(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_COAL"
override var calories = 4800.0
override var smokiness = 0.3f
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(3,6)
}
}
class OreZinc(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_SPHALERITE"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(4,6)
}
}
class OreTin(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_CASSITERITE"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(5,6)
}
}
class OreGold(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_NATURAL_GOLD"
override val materialId: String = "AURM"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(6, 6)
}
}
class OreSilver(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_NATURAL_SILVER"
override val materialId: String = "ARGN"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(7,6)
}
}
class OreLead(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_GALENA"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(8,6)
}
}
class OreUranium(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ORE_PITCHBLENDE"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(0,7)
}
}
class GemQuartz(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_GEM_QUARTZ"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(13,6)
}
}
class GemAmethyst(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_GEM_AMETHYST"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(14,6)
}
}
class ItemRockSalt(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_ROCK_SALT"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(10,6)
}
}
class ItemNitre(originalID: ItemID) : OreItemBase(originalID, true) {
override var originalName = "ITEM_NITRE"
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(15,6)
}
}
class ItemCoalCoke(originalID: ItemID) : OreItemBase(originalID) {
override var originalName = "ITEM_COAL_COKE"
override var calories = 4800.0
override var smokiness = 0.4f
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(9,6)
}
}
class ItemCharcoal(originalID: ItemID) : OreItemBase(originalID) {
override var originalName = "ITEM_CHARCOAL"
override var calories = 4800.0
override var smokiness = 0.3f
init {
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(12,6)
}
}