pickaxe ore tooltip; working item pickup and throw effects

This commit is contained in:
minjaesong
2023-10-27 02:55:13 +09:00
parent 012d3482dc
commit 19f1eb2278
20 changed files with 95 additions and 22 deletions

View File

@@ -205,7 +205,7 @@ object BlockBase {
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = WireCodex[itemID].renderClass
}
fun wireEffectWhenUnequipped(gameItem: GameItem, delta: Float) {
fun wireEffectWhenUnequipped(gameItem: GameItem) {
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
}

View File

@@ -88,7 +88,7 @@ open class FixtureItemBase(originalID: ItemID, val fixtureClassName: String) : G
}
}
override fun effectOnUnequip(actor: ActorWithBody, delta: Float) {
override fun effectOnUnequip(actor: ActorWithBody) {
// ghostInit = false
(INGAME as TerrarumIngame).blockMarkingActor.let {

View File

@@ -26,8 +26,8 @@ class ItemLogicSignalEmitter(originalID: ItemID) : FixtureItemBase(originalID, "
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "signal"
}
override fun effectOnUnequip(actor: ActorWithBody, delta: Float) {
super.effectOnUnequip(actor, delta)
override fun effectOnUnequip(actor: ActorWithBody) {
super.effectOnUnequip(actor)
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
}

View File

@@ -2,6 +2,8 @@ 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
@@ -15,6 +17,16 @@ open class OreItemBase(originalID: ItemID) : GameItem(originalID) {
override val isDynamic = false
override val materialId = "OORE"
override var equipPosition = EquipPosition.HAND_GRIP
override fun effectOnPickup(actor: ActorWithBody) {
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 */

View File

@@ -14,6 +14,7 @@ import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.gameitems.mouseInInteractableRangeTools
import net.torvald.terrarum.gameparticles.createRandomBlockParticle
import net.torvald.terrarum.itemproperties.Calculate
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem
import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.BASE_MASS_AND_SIZE
@@ -160,6 +161,30 @@ object PickaxeCore {
const val BASE_MASS_AND_SIZE = 10.0 // of iron pick
const val TOOL_DURABILITY_BASE = 350 // of iron pick
fun showOresTooltip(actor: ActorWithBody, tool: GameItem, mx: Int, my: Int): Unit {
if (App.getConfigBoolean("basegame:showpickaxetooltip")) {
var tooltipSet = false
mouseInInteractableRangeTools(actor, tool) {
val tileUnderCursor = INGAME.world.getTileFromOre(mx, my).item
val playerCodex = (actor.actorValue.getAsString(AVKey.ORE_DICT) ?: "").split(',').filter { it.isNotBlank() }
if (tileUnderCursor != Block.AIR) {
val itemForOre = OreCodex[tileUnderCursor].item
val tileName = if (playerCodex.binarySearch(itemForOre) >= 0)
Lang[ItemCodex[itemForOre]!!.originalName]
else "???"
INGAME.setTooltipMessage(tileName)
tooltipSet = true
}
true // just a placeholder
}
if (!tooltipSet) INGAME.setTooltipMessage(null)
}
}
}
/**
@@ -187,6 +212,8 @@ class PickaxeCopper(originalID: ItemID) : GameItem(originalID) {
override fun startPrimaryUse(actor: ActorWithBody, delta: Float) =
if (PickaxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, delta, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
}
/**
@@ -214,6 +241,8 @@ class PickaxeIron(originalID: ItemID) : GameItem(originalID) {
override fun startPrimaryUse(actor: ActorWithBody, delta: Float) =
if (PickaxeCore.startPrimaryUse(actor , delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, delta, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
}
/**
@@ -241,6 +270,8 @@ class PickaxeSteel(originalID: ItemID) : GameItem(originalID) {
override fun startPrimaryUse(actor: ActorWithBody, delta: Float) =
if (PickaxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, delta, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
}
/**
@@ -268,4 +299,6 @@ class PickaxeWood(originalID: ItemID) : GameItem(originalID) {
override fun startPrimaryUse(actor: ActorWithBody, delta: Float) =
if (PickaxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, delta, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
}

View File

@@ -107,7 +107,7 @@ class WireCutterAll(originalID: ItemID) : GameItem(originalID) {
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "wire_render_all"
}
override fun effectOnUnequip(actor: ActorWithBody, delta: Float) {
override fun effectOnUnequip(actor: ActorWithBody) {
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
}
}

View File

@@ -69,7 +69,7 @@ class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) {
}
}
override fun effectOnUnequip(actor: ActorWithBody, delta: Float) {
override fun effectOnUnequip(actor: ActorWithBody) {
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
(Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(null)
blockMarker.isVisible = false

View File

@@ -36,7 +36,7 @@ class WirePieceSignalWire(originalID: ItemID, private val atlasID: String, priva
BlockBase.wireEffectWhenEquipped(this, delta)
}
override fun effectOnUnequip(actor: ActorWithBody, delta: Float) {
BlockBase.wireEffectWhenUnequipped(this, delta)
override fun effectOnUnequip(actor: ActorWithBody) {
BlockBase.wireEffectWhenUnequipped(this)
}
}