diff --git a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/ExtendableRadiator.cs b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/ExtendableRadiator.cs index 8e8c80e10..45ac4e223 100644 --- a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/ExtendableRadiator.cs +++ b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/ExtendableRadiator.cs @@ -90,6 +90,8 @@ public override void UpdateAfterSimulation() // This is stupid, but prevents the mod profiler cost from being incurred every tick per block when inactive if (Animation.IsActive) Animation.UpdateTick(); + else + MakePanelsVisible(); } public override bool IsSerialized() @@ -214,6 +216,8 @@ public void MakePanelsVisible() while (GetNextPanel(idx, out nextBlock)) { + if (nextBlock.Visible) + return; nextBlock.Visible = true; idx++; } diff --git a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/RadiatorControls.cs b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/RadiatorControls.cs index ea8e7739e..d39b63d98 100644 --- a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/RadiatorControls.cs +++ b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/RadiatorControls.cs @@ -75,6 +75,58 @@ private static void CreateControls() MyAPIGateway.TerminalControls.AddAction(a); } + + { + var a = MyAPIGateway.TerminalControls.CreateAction("Radiator_SetExtendedTrue"); + a.Name = new StringBuilder("Extend Radiator"); + a.ValidForGroups = true; + + a.Enabled = CustomVisibleCondition; + + a.Writer = (block, builder) => + { + builder.Clear(); + if (block?.GameLogic?.GetAs()?.IsExtended ?? false) + builder.Append("Extended"); + else + builder.Append("Retracted"); + }; + + a.Action = (block) => + { + var logic = block?.GameLogic?.GetAs(); + if (logic != null && !logic.IsExtended) + logic.IsExtended = true; + }; + + MyAPIGateway.TerminalControls.AddAction(a); + } + + { + var a = MyAPIGateway.TerminalControls.CreateAction("Radiator_SetExtendedFalse"); + a.Name = new StringBuilder("Retract Radiator"); + a.ValidForGroups = true; + + a.Enabled = CustomVisibleCondition; + + a.Writer = (block, builder) => + { + builder.Clear(); + if (block?.GameLogic?.GetAs()?.IsExtended ?? false) + builder.Append("Extended"); + else + builder.Append("Retracted"); + }; + + a.Action = (block) => + { + var logic = block?.GameLogic?.GetAs(); + if (logic != null && logic.IsExtended) + logic.IsExtended = false; + }; + + MyAPIGateway.TerminalControls.AddAction(a); + } } } }