public void Main(string argument = "") { // The main entry point of the script, invoked every time // one of the programmable block's Run actions are invoked. // // The method itself is required, but the argument above // can be removed if not needed. Echo(argument); if (argument == "rebuild") { ZoneConstruction(); return; } if (argument.Length > 0 && (!(argument == "realtime") || !(argument == "hardcoded"))) { ArgumentParser(argument); return; } if (rebuildneeded) { if (rebuildCounter++ > rebuildCounterLimit) { rebuildneeded = false; rebuildCounter = 0; ZoneConstruction(); return; } } if (!shipStatusLCD.CleanLCD()) { shipStatusLCD.LCDBuild(shipStatusLCDName); } if (!orbitalStatusLCD.CleanLCD()) { orbitalStatusLCD.LCDBuild(orbitalStatusLCDName); } shipStatusLCD.WriteToLCD(Me.CubeGrid.DisplayName); shipStatusLCD.WriteToLCD($"\n {GetPowerOutputString()}"); if (stopShipIfNotPiloted) { shipStatusLCD.WriteToLCD($"\n Ship Piloted : {!StopShipIfNotPiloted()}"); } if (runAutoLevel) { if (rocketGyro) { shipStatusLCD.WriteToLCD($"\n{GyroMain("Rocket")}"); } else { shipStatusLCD.WriteToLCD($"\n{GyroMain("")}"); } } //Orbital(); orbitalComputer.Update(); orbitalStatusLCD.WriteToLCD(orbitalComputer.Status); O2Tank(o2TankLow, o2TankHigh); H2Tank(h2TankLow, h2TankHigh); shipStatusLCD.WriteToLCD($"\n O2 Tanks {o2TanksFill.ToString("0.00")}%, H2 Tanks {h2TanksFill.ToString("0.00")}%"); foreach (SolarArray de in solarArrays) { if (!de.Update()) { rebuildneeded = true; rebuildCounter = rebuildCounterLimit + 1; } shipStatusLCD.WriteToLCD($"\n Array Power {DisplayLargeNumber(de.Power * 1000000)}W"); } foreach (Hangar de in hangars) { if (!de.Update()) { rebuildneeded = true; rebuildCounter = rebuildCounterLimit + 1; } shipStatusLCD.WriteToLCD($"\n {de.Status}"); } foreach (Airlock de in airlocks) { if (!de.Update()) { rebuildneeded = true; rebuildCounter = rebuildCounterLimit + 1; } shipStatusLCD.WriteToLCD($"\n {de.Status}"); } foreach (RoomPressure de in roomPressures) { if (!de.Update()) { rebuildneeded = true; rebuildCounter = rebuildCounterLimit + 1; } shipStatusLCD.WriteToLCD($"\n {de.Status}"); } foreach (LandingPad de in landingPads) { if (!de.Update()) { rebuildneeded = true; rebuildCounter = rebuildCounterLimit + 1; } } if (!shipStatusLCD.FlushToLCD()) { shipStatusLCD.LCDBuild(shipStatusLCDName); } if (!orbitalStatusLCD.FlushToLCD()) { orbitalStatusLCD.LCDBuild(orbitalStatusLCDName); } if (++statusTime > 300) { statusTime = 0; for (int i = 0; i < outRadios.Count; ++i) { if (!outRadios[i].IsFunctional) { GridTerminalSystem.GetBlocksOfType(outRadios, b => b.CubeGrid == Me.CubeGrid); break; } } messageOut.LowPriority(outRadios, "anyone", Me.CubeGrid.DisplayName, "", $"Status:{GetPowerOutputString()}\nStatus: O2 {o2TanksFill.ToString("0.00")}%, H2 {h2TanksFill.ToString("0.00")}%", MyTransmitTarget.Owned, true, ';'); } messageOut.SendMessages(); StartTimer(timers); }