mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-06 08:38:30 +09:00
pushbutton
This commit is contained in:
@@ -11,6 +11,10 @@
|
|||||||
"workbench": "",
|
"workbench": "",
|
||||||
"ingredients": [[2, 1, "item@basegame:112", 1, "$ROCK", 1, "$WOOD"]] /* 1 copper ingot, 1 rock, 1 planks */
|
"ingredients": [[2, 1, "item@basegame:112", 1, "$ROCK", 1, "$WOOD"]] /* 1 copper ingot, 1 rock, 1 planks */
|
||||||
},
|
},
|
||||||
|
"item@basegame:57": { /* signal pushbutton */
|
||||||
|
"workbench": "",
|
||||||
|
"ingredients": [[2, 1, "item@basegame:112", 1, "$ROCK", 1, "item@basegame:113"]] /* 1 copper ingot, 1 rock, 1 iron */
|
||||||
|
},
|
||||||
"item@basegame:1048576": { /* wooden bucket */
|
"item@basegame:1048576": { /* wooden bucket */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [[1, 3, "$WOOD"]] /* 3 planks */
|
"ingredients": [[1, 3, "$WOOD"]] /* 3 planks */
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ id;classname;tags
|
|||||||
54;net.torvald.terrarum.modulebasegame.gameitems.ItemMechanicalTines;FIXTURE,MUSIC,SIGNAL
|
54;net.torvald.terrarum.modulebasegame.gameitems.ItemMechanicalTines;FIXTURE,MUSIC,SIGNAL
|
||||||
55;net.torvald.terrarum.modulebasegame.gameitems.ItemGlowOrb;LIGHT,THROWABLE
|
55;net.torvald.terrarum.modulebasegame.gameitems.ItemGlowOrb;LIGHT,THROWABLE
|
||||||
56;net.torvald.terrarum.modulebasegame.gameitems.ItemClayBrick;
|
56;net.torvald.terrarum.modulebasegame.gameitems.ItemClayBrick;
|
||||||
|
57;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalPushbutton;FIXTURE,SIGNAL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
|
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_pushbutton.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_pushbutton.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_pushbutton_emsv.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_pushbutton_emsv.tga
LFS
Normal file
Binary file not shown.
@@ -560,7 +560,8 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
|
|||||||
fun getActorsAt(worldX: Double, worldY: Double): List<ActorWithBody> {
|
fun getActorsAt(worldX: Double, worldY: Double): List<ActorWithBody> {
|
||||||
val outList = ArrayList<ActorWithBody>()
|
val outList = ArrayList<ActorWithBody>()
|
||||||
try {
|
try {
|
||||||
actorsRTree.find(worldX - 0.5, worldY - 0.5, worldX + 0.5, worldY + 0.5, outList)
|
// actorsRTree.find(worldX - 0.5, worldY - 0.5, worldX + 0.5, worldY + 0.5, outList)
|
||||||
|
actorsRTree.find(worldX, worldY, worldX, worldY, outList)
|
||||||
}
|
}
|
||||||
catch (e: NullPointerException) {}
|
catch (e: NullPointerException) {}
|
||||||
return outList
|
return outList
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class FixtureLogicSignalBulb : Electric {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/copper_bulb.tga")
|
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/copper_bulb.tga")
|
||||||
val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/copper_bulb_emissive.tga")
|
val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/copper_bulb_emsv.tga")
|
||||||
|
|
||||||
density = 1400.0
|
density = 1400.0
|
||||||
setHitboxDimension(TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE, 0, 1)
|
setHitboxDimension(TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE, 0, 1)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package net.torvald.terrarum.modulebasegame.gameactors
|
package net.torvald.terrarum.modulebasegame.gameactors
|
||||||
|
|
||||||
import net.torvald.spriteanimation.SheetSpriteAnimation
|
import net.torvald.spriteanimation.SheetSpriteAnimation
|
||||||
|
import net.torvald.terrarum.INGAME
|
||||||
import net.torvald.terrarum.TerrarumAppConfiguration
|
import net.torvald.terrarum.TerrarumAppConfiguration
|
||||||
import net.torvald.terrarum.gameactors.AVKey
|
import net.torvald.terrarum.gameactors.AVKey
|
||||||
import net.torvald.terrarum.langpack.Lang
|
import net.torvald.terrarum.langpack.Lang
|
||||||
@@ -53,8 +54,10 @@ class FixtureLogicSignalSwitchManual : Electric {
|
|||||||
super.reload()
|
super.reload()
|
||||||
|
|
||||||
(sprite as SheetSpriteAnimation).currentFrame = variant
|
(sprite as SheetSpriteAnimation).currentFrame = variant
|
||||||
|
(spriteGlow as SheetSpriteAnimation).currentFrame = variant
|
||||||
|
|
||||||
(sprite as SheetSpriteAnimation).currentRow = state.toInt()
|
(sprite as SheetSpriteAnimation).currentRow = state.toInt()
|
||||||
|
(spriteGlow as SheetSpriteAnimation).currentRow = state.toInt()
|
||||||
setWireEmissionAt(0, 0, Vector2(state.toInt().toDouble(), 0.0))
|
setWireEmissionAt(0, 0, Vector2(state.toInt().toDouble(), 0.0))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,4 +66,68 @@ class FixtureLogicSignalSwitchManual : Electric {
|
|||||||
(sprite as SheetSpriteAnimation).currentRow = state.toInt()
|
(sprite as SheetSpriteAnimation).currentRow = state.toInt()
|
||||||
setWireEmissionAt(0, 0, Vector2(state.toInt().toDouble(), 0.0))
|
setWireEmissionAt(0, 0, Vector2(state.toInt().toDouble(), 0.0))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2024-09-27.
|
||||||
|
*/
|
||||||
|
class FixtureLogicSignalPushbutton : Electric {
|
||||||
|
|
||||||
|
@Transient override val spawnNeedsFloor = true
|
||||||
|
@Transient override val spawnNeedsWall = true
|
||||||
|
|
||||||
|
constructor() : super(
|
||||||
|
BlockBox(BlockBox.NO_COLLISION, 1, 1),
|
||||||
|
nameFun = { Lang["ITEM_LOGIC_SIGNAL_PUSHBUTTON"] }
|
||||||
|
)
|
||||||
|
|
||||||
|
private var triggeredTime: Long? = null // null = off; number: TIME_T that the button was held down
|
||||||
|
|
||||||
|
private val state: Int
|
||||||
|
get() = (triggeredTime != null).toInt()
|
||||||
|
|
||||||
|
init {
|
||||||
|
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_pushbutton.tga")
|
||||||
|
val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_pushbutton_emsv.tga")
|
||||||
|
|
||||||
|
density = 1400.0
|
||||||
|
setHitboxDimension(TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE, 0, 1)
|
||||||
|
|
||||||
|
makeNewSprite(TextureRegionPack(itemImage.texture, TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE)).let {
|
||||||
|
it.setRowsAndFrames(2,1)
|
||||||
|
it.delays = floatArrayOf(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY)
|
||||||
|
}
|
||||||
|
makeNewSpriteEmissive(TextureRegionPack(itemImage2.texture, TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE)).let {
|
||||||
|
it.setRowsAndFrames(2,1)
|
||||||
|
it.delays = floatArrayOf(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY)
|
||||||
|
}
|
||||||
|
|
||||||
|
actorValue[AVKey.BASEMASS] = FixtureLogicSignalEmitter.MASS
|
||||||
|
|
||||||
|
|
||||||
|
setWireEmitterAt(0, 0, "digital_bit")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun updateSignal() {
|
||||||
|
// decide when to un-trigger
|
||||||
|
if (INGAME.world.worldTime.TIME_T - (triggeredTime ?: 0L) >= 60) {
|
||||||
|
triggeredTime = null
|
||||||
|
}
|
||||||
|
|
||||||
|
(sprite as SheetSpriteAnimation).currentRow = state
|
||||||
|
(spriteEmissive as SheetSpriteAnimation).currentRow = state
|
||||||
|
setWireEmissionAt(0, 0, Vector2(state.toDouble(), 0.0))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun reload() {
|
||||||
|
super.reload()
|
||||||
|
|
||||||
|
(sprite as SheetSpriteAnimation).currentRow = state
|
||||||
|
(spriteEmissive as SheetSpriteAnimation).currentRow = state
|
||||||
|
setWireEmissionAt(0, 0, Vector2(state.toDouble(), 0.0))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onInteract(mx: Double, my: Double) {
|
||||||
|
triggeredTime = INGAME.world.worldTime.TIME_T
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package net.torvald.terrarum.modulebasegame.gameitems
|
package net.torvald.terrarum.modulebasegame.gameitems
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
|
||||||
import net.torvald.terrarum.CommonResourcePool
|
import net.torvald.terrarum.CommonResourcePool
|
||||||
import net.torvald.terrarum.Terrarum
|
import net.torvald.terrarum.Terrarum
|
||||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||||
@@ -34,4 +33,32 @@ class ItemLogicSignalSwitchManual(originalID: ItemID) : FixtureItemBase(original
|
|||||||
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
|
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2024-09-27.
|
||||||
|
*/
|
||||||
|
class ItemLogicSignalPushbutton(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureLogicSignalPushbutton") {
|
||||||
|
|
||||||
|
override var dynamicID: ItemID = originalID
|
||||||
|
override var baseMass = FixtureLogicSignalEmitter.MASS
|
||||||
|
override val canBeDynamic = false
|
||||||
|
override val materialId = ""
|
||||||
|
init {
|
||||||
|
itemImage = CommonResourcePool.getAsItemSheet("basegame.items").get(8, 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
override var baseToolSize: Double? = baseMass
|
||||||
|
override var originalName = "ITEM_LOGIC_SIGNAL_PUSHBUTTON"
|
||||||
|
|
||||||
|
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) {
|
||||||
|
super.effectWhileEquipped(actor, delta)
|
||||||
|
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "signal"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun effectOnUnequip(actor: ActorWithBody) {
|
||||||
|
super.effectOnUnequip(actor)
|
||||||
|
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -102,7 +102,6 @@ object Worldgen {
|
|||||||
Work(Lang["MENU_IO_WORLDGEN_FLOODING_UNDERGROUND"], Aquagen(world, false, groundScalingCached, params.seed, params.terragenParams), listOf("WATER")),
|
Work(Lang["MENU_IO_WORLDGEN_FLOODING_UNDERGROUND"], Aquagen(world, false, groundScalingCached, params.seed, params.terragenParams), listOf("WATER")),
|
||||||
Work(Lang["MENU_IO_WORLDGEN_GROWING_MINERALS"], Oregen(world, false, caveAttenuateBiasScaledForOresCache, params.seed, oreRegistry, params.terragenParams), listOf("ORES")),
|
Work(Lang["MENU_IO_WORLDGEN_GROWING_MINERALS"], Oregen(world, false, caveAttenuateBiasScaledForOresCache, params.seed, oreRegistry, params.terragenParams), listOf("ORES")),
|
||||||
Work(Lang["MENU_IO_WORLDGEN_POSITIONING_ROCKS"], OregenAutotiling(world, false, params.seed, oreTilingModes), listOf("ORES")),
|
Work(Lang["MENU_IO_WORLDGEN_POSITIONING_ROCKS"], OregenAutotiling(world, false, params.seed, oreTilingModes), listOf("ORES")),
|
||||||
// TODO generate gemstones
|
|
||||||
Work(Lang["MENU_IO_WORLDGEN_PAINTING_GREEN"], Biomegen(world, false, params.seed, params.biomegenParams, biomeMap), listOf("BIOME")),
|
Work(Lang["MENU_IO_WORLDGEN_PAINTING_GREEN"], Biomegen(world, false, params.seed, params.biomegenParams, biomeMap), listOf("BIOME")),
|
||||||
Work(Lang["MENU_IO_WORLDGEN_PAINTING_GREEN"], Treegen(world, true, params.seed, params.terragenParams, params.treegenParams, biomeMap), listOf("TREES")),
|
Work(Lang["MENU_IO_WORLDGEN_PAINTING_GREEN"], Treegen(world, true, params.seed, params.terragenParams, params.treegenParams, biomeMap), listOf("TREES")),
|
||||||
).filter(tagFilter)
|
).filter(tagFilter)
|
||||||
|
|||||||
Binary file not shown.
BIN
work_files/graphics/sprites/fixtures/signal_pushbutton.kra
LFS
Normal file
BIN
work_files/graphics/sprites/fixtures/signal_pushbutton.kra
LFS
Normal file
Binary file not shown.
Reference in New Issue
Block a user