Ejemplo n.º 1
0
 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);
 }