From c6efa404b5eaeae90b5877e47420280edf63c9cc Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 30 Nov 2023 14:09:07 +0900 Subject: [PATCH] chargeStored for Electric FixtureBase --- .../terrarum/modulebasegame/gameactors/FixtureBase.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt index 8d718ff35..a93200cd2 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt @@ -12,6 +12,7 @@ import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import org.dyn4j.geometry.Vector2 import java.util.* +import kotlin.collections.HashMap typealias BlockBoxIndex = Int typealias WireEmissionType = String @@ -66,11 +67,17 @@ open class Electric : FixtureBase { fun setWireEmissionAt(x: Int, y: Int, emission: Vector2) { wireEmission[pointToBlockBoxIndex(x, y)] = emission } fun setWireConsumptionAt(x: Int, y: Int, consumption: Vector2) { wireConsumption[pointToBlockBoxIndex(x, y)] = consumption } + // these are characteristic properties of the fixture (they have constant value) so must not be serialised @Transient val wireEmitterTypes: HashMap = HashMap() @Transient val wireSinkTypes: HashMap = HashMap() @Transient val wireEmission: HashMap = HashMap() @Transient val wireConsumption: HashMap = HashMap() + // these are NOT constant so they ARE serialised. Type: Map Charge (Double> + // Use case: signal buffer (sinkType=digital_bit), battery (sinkType=electricity), etc. + val chargeStored: HashMap = HashMap() + + /** Triggered when 'digital_bit' rises from low to high. Edge detection only considers the real component (labeled as 'x') of the vector */ open fun onRisingEdge(readFrom: BlockBoxIndex) {} /** Triggered when 'digital_bit' rises from high to low. Edge detection only considers the real component (labeled as 'x') of the vector */