Exemplo n.º 1
0
 public void DrawMenu(OutputPanel lcds, int maxLines = 15)
 {
     UpdateMenu(maxLines);
     if (0 < WarningText.Length)
     {
         sb.Append(WarningText);
     }
     lcds.WritePublicText(sb);
 }
            void StatusDisplay()
            {
                if (null == lcd || displayUpdateTick > Pgm.totalTicks)
                {
                    return;
                }
                displayUpdateTick = Pgm.totalTicks + TPS / 6;

                sb1.Append('\u2022', 7).Append($" Status Display ").Append('\u2022', 7).Append(DateTime.Now.ToString(" HH\\:mm\\:ss\\.fff"));

                if (!sc.ControlThrusters)
                {
                    sb1.Append("\n")
                    .Append(sc.MoveIndicator.ToString()).Append(Pgm.MoveIndicator2Command(sc.MoveIndicator))
                    .Append(sc.RollIndicator.ToString());
                }

                sb1.Append($"\n Mode: {OperationMode} \u2022 State: {curState}");
                sb1.Append("\n Alignment: ").Append((align.Active ? "Enabled" : "Off")).Append(" \u2022 AlignMode: ").Append(align.RocketMode ? "Rocket" : "Ship").Append(align.Inverted ? " (Inverted)" : "");
                string alti     = (double.IsNaN(altitudeSurface) ? "---" : $"{altitudeSurface:0.0}");
                string altiDiff = ((double.IsNaN(altitudeDiff) || Math.Abs(altitudeDiff) < 1) ? "" : ((altitudeDiff > 0) ? " ^^^" : " vvv"));

                sb1.Append($"\n Altitude: {alti} m{altiDiff} \u2022 Gravity: {gravity:0.000} g");
                sb1.Append($"\n Spd: {currSpeed:0.00} m/s \u2022 Acc.: {currAccl:0.00} \u2022 Atm.: {atmosphereDensity:0.0}");
                if (Mode.Descend == mode)
                {
                    sb1.Append($"\n BrakeDistance: {brakeDistance:0.00} \u2022 AlignDiff: {align.AlignDifference:0.000}");
                    sb1.Append($"\n Raycast: {raycastName}");
                }
                sb1.Append($"\n Mass: {shipMass.PhysicalMass:#,##0} \u2022 Cargo: {shipMass.PhysicalMass - shipMass.BaseMass:#,##0}");
                sb1.Append("\n Controller: ").Append(sc?.CustomName ?? "<NONE>");
                sb1.Append($"\n Requested: ").Append(NumStr(totalThrustWanted, "N")).Append(" \u2022 Current: ").Append(NumStr(sumThrustCurEff, "N"));

                sb1.Append(sb2);

                if (0 < hydrogenTanks.Count)
                {
                    if (hydroTanksUpdateTick < Pgm.totalTicks)
                    {
                        hydroTanksUpdateTick = Pgm.totalTicks + TPS / 3;
                        hydroTanksPctFilled  = 0;
                        hydroTanksFillLevel  = 0;
                        hydroTanksGiving     = 0;
                        foreach (var h in hydrogenTanks)
                        {
                            if (h.IsWorking && !h.Stockpile)
                            {
                                hydroTanksFillLevel += h.Capacity * h.FilledRatio;
                                hydroTanksPctFilled += h.FilledRatio;
                                hydroTanksGiving++;
                            }
                        }
                        hydroTanksPctFilled /= hydrogenTanks.Count;
                    }

                    AppendPctBar(sb1, $"\n Hydr:", -hydroTanksPctFilled, 30, false).Append($" {hydroTanksPctFilled * 100:0.0}% in {hydroTanksGiving} tanks");
                }

                if (0 < batteries.Count)
                {
                    if (batteriesUpdateTick < Pgm.totalTicks)
                    {
                        batteriesUpdateTick = Pgm.totalTicks + TPS;
                        battStoredPower     = 0;
                        battMaxPower        = 0;
                        battNumCharging     = 0;
                        foreach (var b in batteries)
                        {
                            if (b.IsWorking)
                            {
                                battStoredPower += b.CurrentStoredPower;
                                battMaxPower    += b.MaxStoredPower;
                                battNumCharging += b.IsCharging ? 1 : 0;
                            }
                        }
                        battAllCharging = battNumCharging == batteries.Count;
                    }

                    AppendPctBar(sb1, "\n Batt:", (battStoredPower / battMaxPower) * (battAllCharging ? 1 : -1), 30, false);
                    if (battAllCharging)
                    {
                        sb1.Append($" {chargeAnim[execCount & 3]} Recharging");
                    }
                }

                lcd.WritePublicText(sb1);
            }