diff --git a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml index 5914f3b77..4da203057 100644 --- a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml +++ b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml @@ -249,7 +249,8 @@ - + + diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerTransfer.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerTransfer.cs index a85bf451a..575b0b4c8 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerTransfer.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerTransfer.cs @@ -30,6 +30,12 @@ namespace Barotrauma.Items.Components get { return powerLoad; } } + //can the component transfer power + public virtual bool CanTransfer + { + get { return IsActive; } + } + public PowerTransfer(Item item, XElement element) : base(item, element) { @@ -40,6 +46,8 @@ namespace Barotrauma.Items.Components public override void Update(float deltaTime, Camera cam) { + if (!CanTransfer) return; + if (updateTimer > 0) { //this junction box has already been updated this frame @@ -135,6 +143,7 @@ namespace Barotrauma.Items.Components PowerTransfer powerTransfer = powered as PowerTransfer; if (powerTransfer != null) { + if (!powerTransfer.CanTransfer) continue; powerTransfer.CheckJunctions(deltaTime); continue; } diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Signal/RelayComponent.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Signal/RelayComponent.cs index 7af937a68..175169d02 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Signal/RelayComponent.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Signal/RelayComponent.cs @@ -9,6 +9,8 @@ namespace Barotrauma.Items.Components { private float maxPower; + private bool isOn; + [Editable, HasDefaultValue(1000.0f, true)] public float MaxPower { @@ -18,31 +20,36 @@ namespace Barotrauma.Items.Components maxPower = Math.Max(0.0f, value); } } - - private bool isOn; - + [Editable, HasDefaultValue(false, true)] public bool IsOn { get { - return IsActive; + return isOn; } set { isOn = value; - IsActive = value; - if (!IsActive) + if (!isOn) { currPowerConsumption = 0.0f; } } } + public override bool CanTransfer + { + get + { + return isOn; + } + } + public RelayComponent(Item item, XElement element) : base (item, element) { - IsActive = isOn; + IsActive = true; } public override void Update(float deltaTime, Camera cam)