//Safe zone test script M R Wolfe V1.00 24/10/2019 private readonly List SafeZones = new List(); private readonly List TerminalProperties = new List(); private readonly List TerminalActions = new List(); private readonly IMyTextSurface Display; private readonly IMyTextSurface ActionDisplay; private readonly List GravityGenerators = new List(); private readonly List GasGenerators = new List(); public Program() { GridTerminalSystem.GetBlocksOfType(SafeZones, x=> ((IMyTerminalBlock)x).CubeGrid == Me.CubeGrid); GridTerminalSystem.GetBlocksOfType(GravityGenerators, x=> x.CubeGrid == Me.CubeGrid); GridTerminalSystem.GetBlocksOfType(GasGenerators, x=> x.CubeGrid == Me.CubeGrid); Display = GridTerminalSystem.GetBlockWithName("PB3 Display LCD Panel 6") as IMyTextSurface; ActionDisplay = GridTerminalSystem.GetBlockWithName("PB3 Action Display LCD Panel 7") as IMyTextSurface; } public void Save() { } public void Main(string argument, UpdateType updateSource) { var message = new StringBuilder(); foreach(var safeZone in SafeZones) { TerminalProperties.Clear(); TerminalActions.Clear(); safeZone.GetProperties(TerminalProperties); safeZone.GetActions(TerminalActions); message.Clear().AppendLine("Safe Zone Terminal Properties").AppendLine(); foreach(var terminalProperty in TerminalProperties) { message.Append(terminalProperty.Id).Append(" - ").AppendLine(terminalProperty.TypeName); } Display.WriteText( message); message.Clear().AppendLine("Safe Zone Terminal Actions").AppendLine(); foreach(var terminalAction in TerminalActions) { message.Append(terminalAction.Id).Append(" - ").AppendLine(terminalAction.Name.ToString()); } ActionDisplay.WriteText( message); } Echo("*"+SafeZones[0].DetailedInfo+"*"); Echo(SafeZones[0].BlockDefinition.SubtypeName); Echo("Safe zone power use: "+SafeZones[0].CurrentPowerUse().ToString("N2")+ " kW"); Echo("Safe zone maxpower use: "+SafeZones[0].MaxPowerUse().ToString("N2")+ " kW"); Echo("Gas generator use: "+GasGenerators[0].CurrentPowerUse().ToString("N2")+ " kW"); Echo("Gas generator maxpower use: "+GasGenerators[0].MaxPowerUse().ToString("N2")+ " kW"); Echo("Grav gen power use: "+GravityGenerators[0].CurrentPowerUse().ToString("N2") + " kW"); Echo("Grav gen max power use: "+GravityGenerators[0].MaxPowerUse().ToString("N2") + " kW " + GravityGenerators[0].DetailedInfo); Echo("My power use: "+Me.CurrentPowerUse().ToString("N2")+ " kW"); } } static public class Extensions { public static readonly MyDefinitionId Electricity = MyDefinitionId.Parse("MyObjectBuilder_GasProperties/Electricity"); static public double CurrentPowerUse(this IMyTerminalBlock terminalBlock) => 1000d * terminalBlock.Components.Get().CurrentInputByType(Electricity); static public double MaxPowerUse(this IMyTerminalBlock terminalBlock) => 1000d * terminalBlock.Components.Get().MaxRequiredInputByType(Electricity);