wire is back! but not the render

This commit is contained in:
minjaesong
2021-07-28 14:19:50 +09:00
parent 8cb3fc2d33
commit 5aacbe84b8
21 changed files with 228 additions and 107 deletions

View File

@@ -355,20 +355,6 @@ object IngameRenderer : Disposable {
internal var fboRGBexportRequested = false
/**
* Which wires should be drawn. Normally this value is set by the wiring item (e.g. wire pieces, wirecutters)
* This number is directly related with the World's wire bits:
*
* ```
* world.getWires(x, y) -> 0000101 (for example)
* value of 3 selects this ^ ^
* value of 1 selects this |
*
* The wire piece gets rendered when selected bit is set.
* ```
*/
var selectedWireBitToDraw = 0
private fun drawToRGB(
actorsRenderBehind: List<ActorWithBody>?,
actorsRenderMiddle: List<ActorWithBody>?,
@@ -411,7 +397,7 @@ object IngameRenderer : Disposable {
}
setCameraPosition(0f, 0f)
BlocksDrawer.drawFront(batch.projectionMatrix, selectedWireBitToDraw) // blue coloured filter of water, etc.
BlocksDrawer.drawFront(batch.projectionMatrix) // blue coloured filter of water, etc.
batch.inUse {
FeaturesDrawer.drawEnvOverlay(batch)

View File

@@ -3,6 +3,7 @@ package net.torvald.terrarum.modulebasegame.gameactors
import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.blockproperties.WireCodex
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.faction.FactionFactory
import net.torvald.terrarum.worlddrawer.CreateTileAtlas
@@ -92,9 +93,16 @@ object PlayerBuilderSigrid {
inventory.add("item@basegame:1", 16) // copper pick
inventory.add("item@basegame:2") // iron pick
inventory.add("item@basegame:3") // steel pick
inventory.add("item@basegame:4", 9995) // wire piece
inventory.add("item@basegame:5", 385930603) // test tiki torch
inventory.add("item@basegame:6", 95) // crafting table
WireCodex.getAll().forEach {
try {
inventory.add(it.id, 9995)
}
catch (e: Throwable) {
System.err.println("[PlayerBuilder] $e")
}
}
}
}

View File

@@ -3,6 +3,8 @@ package net.torvald.terrarum.modulebasegame.gameitems
import net.torvald.terrarum.Point2d
import net.torvald.terrarum.Point2i
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.blockproperties.WireCodex
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.gameitem.ItemID
@@ -11,6 +13,7 @@ import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.IngameRenderer
import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.worlddrawer.BlocksDrawer
/**
* Created by minjaesong on 2019-05-02.
@@ -73,35 +76,36 @@ object BlockBase {
}
fun blockEffectWhenEquipped(delta: Float) {
IngameRenderer.selectedWireBitToDraw = 0
BlocksDrawer.selectedWireRenderClass = ""
}
fun wireStartPrimaryUse(gameItem: GameItem, wireTypeBit: Int, delta: Float): Boolean {
return false // TODO need new wire storing format
/*val ingame = Terrarum.ingame!! as TerrarumIngame
fun wireStartPrimaryUse(gameItem: GameItem, delta: Float): Boolean {
val itemID = gameItem.originalID
val ingame = Terrarum.ingame!! as TerrarumIngame
val mouseTile = Point2i(Terrarum.mouseTileX, Terrarum.mouseTileY)
// return false if the tile is already there
if (ingame.world.getWiringBlocks(mouseTile.x, mouseTile.y) and wireTypeBit != 0)
if (ingame.world.getAllWiresFrom(mouseTile.x, mouseTile.y)?.searchFor(itemID) != null)
return false
// filter passed, do the job
// FIXME this is only useful for Player
ingame.world.addNewConduitTo(
ingame.world.setTileWire(
mouseTile.x,
mouseTile.y,
GameWorld.WiringNode(
LandUtil.getBlockAddr(ingame.world, mouseTile.x, mouseTile.y),
wireTypeBit,
0f
)
itemID,
false
)
return true*/
return true
}
fun wireEffectWhenEquipped(typebit: Int, delta: Float) {
IngameRenderer.selectedWireBitToDraw = typebit
fun wireEffectWhenEquipped(gameItem: GameItem, delta: Float) {
val itemID = gameItem.originalID
BlocksDrawer.selectedWireRenderClass = WireCodex[itemID].renderClass
}
fun wireEffectWhenUnequipped(gameItem: GameItem, delta: Float) {
BlocksDrawer.selectedWireRenderClass = ""
}
}

View File

@@ -8,9 +8,11 @@ import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.itemproperties.Material
/**
* @param originalID something like `basegame:8192` (the id must exist on wires.csv)
*
* Created by minjaesong on 2019-03-10.
*/
class WirePieceSignalWire(originalID: ItemID) : GameItem(originalID) {
class WirePieceSignalWire(originalID: ItemID, private val atlasID: String, private val sheetX: Int, private val sheetY: Int) : GameItem(originalID) {
override var dynamicID: ItemID = originalID
override val originalName = "ITEM_WIRE"
@@ -22,7 +24,7 @@ class WirePieceSignalWire(originalID: ItemID) : GameItem(originalID) {
override val isDynamic = false
override val material = Material()
override val itemImage: TextureRegion?
get() = CommonResourcePool.getAsTextureRegionPack("basegame.items16").get(1,9)
get() = CommonResourcePool.getAsTextureRegionPack(atlasID).get(sheetX, sheetY)
init {
super.equipPosition = GameItem.EquipPosition.HAND_GRIP
@@ -30,10 +32,14 @@ class WirePieceSignalWire(originalID: ItemID) : GameItem(originalID) {
}
override fun startPrimaryUse(delta: Float): Boolean {
return BlockBase.wireStartPrimaryUse(this, Wire.BIT_SIGNAL_RED, delta)
return BlockBase.wireStartPrimaryUse(this, delta)
}
override fun effectWhenEquipped(delta: Float) {
BlockBase.wireEffectWhenEquipped(Wire.BIT_SIGNAL_RED, delta)
BlockBase.wireEffectWhenEquipped(this, delta)
}
override fun effectOnUnequip(delta: Float) {
BlockBase.wireEffectWhenUnequipped(this, delta)
}
}