private string[,] LoadArray(Airline airline, int day) { IOrderedEnumerable <FlightRecord> flightRecords = airline == null ? Game.current.flightRecords.GetForDay(day - 1).OrderBy(x => x.arrivalTime).ThenBy(x => x.airline) : Game.current.flightRecords.GetForDay(day - 1).Where(x => x.airline == airline.name).OrderBy(x => x.arrivalTime).ThenBy(x => x.airline); int numFlights = flightRecords.Count(); string[,] arr = new string[numFlights + 1, arrayCols]; for (int i = 0; i < arrayCols; i++) { arr[0, i] = i18n.Get($"TBFlash.AirportStats.AirlineDailyStats.stats{i}"); } for (int i = 1; i <= numFlights; i++) { FlightRecord fr = flightRecords.ElementAt(i - 1); arr[i, 0] = fr.airline; arr[i, 1] = fr.aircraft; arr[i, 2] = AirportStatUtils.FormatTime(fr.arrivalTime * 60, true); arr[i, 3] = fr.actual_arrivalTime > 0 ? AirportStatUtils.FormatTime(fr.actual_arrivalTime * 60, true) : string.Empty; arr[i, 4] = AirportStatUtils.FormatTime(fr.departureTime * 60, true); arr[i, 5] = fr.actual_departureTime > 0 ? AirportStatUtils.FormatTime(fr.actual_departureTime * 60, true) : string.Empty; arr[i, 6] = fr.nArriving.ToString("#"); arr[i, 7] = fr.actual_arrivalTime > 0 ? AirportStatUtils.FormatTime(fr.time_deplaning * 60) : string.Empty; arr[i, 8] = fr.nDeparting.ToString("#"); arr[i, 9] = fr.nCheckedIn.ToString("#"); arr[i, 10] = fr.nBoarded.ToString("#"); arr[i, 11] = fr.nBoarded > 0 ? AirportStatUtils.FormatTime(fr.time_boarding * 60) : string.Empty; arr[i, 12] = fr.nArrivalBags.ToString("#"); arr[i, 13] = fr.nBagsUnloaded.ToString("#"); arr[i, 14] = fr.nBagsUnloaded > 0 ? AirportStatUtils.FormatTime(fr.time_bag_unload * 60, true) : string.Empty; arr[i, 15] = fr.nDepartingBags.ToString("#"); arr[i, 16] = fr.nBagsLoaded.ToString("#"); arr[i, 17] = fr.nBagsLoaded > 0 ? AirportStatUtils.FormatTime(fr.time_bag_load * 60) : string.Empty; arr[i, 18] = (fr.nFuelRequested / 1000).ToString("#,###"); arr[i, 19] = (fr.nFuelRefueled / 1000).ToString("#,###"); string st = string.Empty; foreach (Flight.Status stat in Enum.GetValues(typeof(Flight.Status))) { if (AirportStatUtils.HasStatus(fr.status, stat)) { st += i18n.Get("TBFlash.AirportStats.flightstatus." + Enum.GetName(typeof(Flight.Status), stat)) + "<br/>"; } } arr[i, 20] = st; arr[i, 21] = i18n.Get("UI.strings.flightstatusreason.") + fr.reason.ToString(); } return(arr); }
private string[,] LoadArray(Airline airline) { int numdays = GameTimer.Day <= 30 ? GameTimer.Day : 30; AirportStatUtils.AirportStatsLogger(Log.FromPool($"GameTimer:{GameTimer.Day}, numdays:{numdays}").WithCodepoint()); string[,] arr = new string[arrayRows, numdays + 1]; for (int i = 0; i < arrayRows; i++) { arr[i, 0] = i18n.Get($"TBFlash.AirportStats.AirlineCompanyStats.stats{i}"); } AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint()); int j = 0; for (int i = GameTimer.Day; i >= (GameTimer.Day > 30 ? GameTimer.Day - 29 : 1); i--) { j++; IEnumerable <FlightRecord> flightRecords = Game.current.flightRecords.GetForDay(i - 1).Where(x => x.airline == airline.name); arr[0, j] = flightRecords.Any() ? flightRecords.Count().ToString("#,###"):"None"; arr[1, j] = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedArrival)).ToString("#,###"); arr[2, j] = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.RequiresCrew)).ToString("#,###"); arr[3, j] = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed) && !AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedDeparture)).ToString("#,###"); arr[4, j] = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedDeparture)).ToString("#,###"); arr[5, j] = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Canceled)).ToString("#,###"); arr[6, j] = flightRecords.Count(x => x.reason == global::Flight.StatusReason.AirportInvalid).ToString("#,###"); arr[7, j] = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Weather).ToString("#,###"); arr[8, j] = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Runway).ToString("#,###"); arr[9, j] = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Gate).ToString("#,###"); arr[10, j] = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Expired).ToString("#,###"); arr[11, j] = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Reneged).ToString("#,###"); arr[12, j] = flightRecords.Sum(x => x.nArriving).ToString("#,###"); arr[13, j] = flightRecords.Sum(x => x.nDeparting).ToString("#,###"); arr[14, j] = flightRecords.Sum(x => x.nCheckedIn).ToString("#,###"); arr[15, j] = flightRecords.Sum(x => x.nBoarded).ToString("#,###"); arr[16, j] = flightRecords.Sum(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed) ? x.nDeparting - x.nBoarded : 0).ToString("#,###"); arr[17, j] = AirportStatUtils.FormatTime(flightRecords.Sum(x => x.time_deplaning) * 60f); arr[18, j] = AirportStatUtils.FormatTime(flightRecords.Sum(x => x.nBoarded > 0 ? x.time_boarding : 0) * 60f); arr[19, j] = (flightRecords.Sum(x => x.nFuelRequested) / 1000).ToString("#,###"); arr[20, j] = (flightRecords.Sum(x => x.nFuelRefueled) / 1000).ToString("#,###"); arr[21, j] = flightRecords.Sum(x => x.nBagsUnloaded).ToString("#,###"); arr[22, j] = flightRecords.Sum(x => x.nBagsLoaded).ToString("#,###"); arr[23, j] = flightRecords.Sum(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed) ? x.nDepartingBags - x.nBagsLoaded : 0).ToString("#,###"); arr[24, j] = AirportStatUtils.FormatTime(flightRecords.Sum(x => x.nBagsLoaded > 0 ? x.time_bag_load : 0) * 60f); } return(arr); }
private string[,] LoadLifetimeArray() { int numdays = GameTimer.Day <= 30 ? GameTimer.Day : 30; GameLifetimeStats GLS = Game.current.lifetimeStats; string[,] arr = new string[arrayRows, numdays + 2]; for (int i = 0; i < arrayRows; i++) { arr[i, 0] = i18n.Get($"TBFlash.AirportStats.LifetimeStats.stats{i}"); } arr[1, 1] = GLS.flOnTime.ToString("#,###"); arr[2, 1] = GLS.flDelays.ToString("#,###"); arr[3, 1] = GLS.flCancels.ToString("#,###"); arr[4, 1] = GLS.flReneges.ToString("#,###"); arr[5, 1] = GLS.Landings.ToString("#,###"); arr[6, 1] = GLS.Takeoffs.ToString("#,###"); arr[9, 1] = GLS.pBoarded.ToString("#,###"); arr[10, 1] = GLS.pMissed.ToString("#,###"); arr[11, 1] = CalculateAverageFuelCost(0).ToString("C2"); arr[12, 1] = (GLS.fuelRequested / 1000).ToString("#,###"); arr[13, 1] = (GLS.fuelfRefueled / 1000).ToString("#,###"); arr[14, 1] = GLS.planesServedFuel.ToString("#,###"); arr[16, 1] = GLS.pBagsLoaded.ToString("#,###"); arr[17, 1] = GLS.pBagsUnloaded.ToString("#,###"); arr[18, 1] = GLS.pBagSuccess.ToString("#,###"); arr[19, 1] = GLS.pBagFail.ToString("#,###"); arr[20, 1] = GLS.outdoorBaggageLoads.ToString("#,###"); arr[21, 1] = GLS.mAdvertising.ToString("C0"); arr[23, 1] = GLS.mLoans.ToString("C0"); arr[24, 1] = GLS.mFuelRev.ToString("C0"); arr[29, 1] = GLS.mRetailRev.ToString("C0"); arr[30, 1] = GLS.mRwyUsageRev.ToString("C0"); arr[31, 1] = GLS.mTerminalUsageRev.ToString("C0"); arr[34, 1] = GLS.mRev.ToString("C0"); arr[36, 1] = GLS.mInterest.ToString("C0"); arr[44, 1] = GLS.mRetailExpense.ToString("C0"); arr[45, 1] = GLS.mStaffWages.ToString("C0"); arr[47, 1] = GLS.mIncomeTax.ToString("C0"); arr[48, 1] = GLS.mPropertyTax.ToString("C0"); arr[51, 1] = GLS.mExpense.ToString("C0"); arr[52, 1] = GLS.sHires.ToString("#,###"); arr[53, 1] = GLS.sFires.ToString("#,###"); arr[54, 1] = AirportStatUtils.FormatTime(GLS.tPaused); arr[55, 1] = AirportStatUtils.FormatTime(GLS.tSpeed1); arr[56, 1] = AirportStatUtils.FormatTime(GLS.tSpeed2); arr[57, 1] = AirportStatUtils.FormatTime(GLS.tSpeed3); arr[58, 1] = AirportStatUtils.FormatTime(GLS.tInactive); arr[59, 1] = GLS.tInteractions.ToString("#,###"); arr[60, 1] = GLS.tClicks.ToString("#,###"); arr[61, 1] = GLS.tClicksAlt.ToString("#,###"); int j = 1; for (int i = GameTimer.Day; i >= (GameTimer.Day > 30 ? GameTimer.Day - 29 : 1); i--) { j++; if (!Game.current.GameReports.TryGetValue(i, out GamedayReportingData GRD)) { break; } IEnumerable <FlightRecord> FlightRecords = Game.current.flightRecords.GetForDay(i - 1); arr[0, j] = GRD.FlightsCount.ToString("#,###"); arr[1, j] = FlightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed) && !AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedDeparture)).ToString("#,###"); arr[2, j] = FlightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedDeparture)).ToString("#,###"); arr[3, j] = GRD.FlightsCanceled.ToString("#,###"); arr[7, j] = GRD.NumArrivalPax.ToString("#,###"); arr[8, j] = GRD.NumConnectPax.ToString("#,###"); arr[9, j] = GRD.BoardedFlight.ToString("#,###"); arr[10, j] = GRD.MissedFlight.ToString("#,###"); arr[11, j] = CalculateAverageFuelCost(i).ToString("C2"); arr[12, j] = (FlightRecords.Sum(x => x.nFuelRequested) / 1000).ToString("#,###"); arr[13, j] = (FlightRecords.Sum(x => x.nFuelRefueled) / 1000).ToString("#,###"); arr[14, j] = (FlightRecords.Count(x => x.nFuelRefueled > 0)).ToString("#,###"); arr[15, j] = GRD.FuelFailures.ToString("#,###"); arr[16, j] = FlightRecords.Sum(x => x.nBagsLoaded).ToString("#,###"); arr[17, j] = FlightRecords.Sum(x => x.nBagsUnloaded).ToString("#,###"); arr[19, j] = FlightRecords.Sum(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed) ? x.nDepartingBags - x.nBagsLoaded : 0).ToString("#,###"); arr[21, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Advertising, true); arr[22, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Airline_Fees, true); arr[23, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Bank, true); arr[24, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Fuel, true); arr[25, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Grant, true); arr[26, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Materials, true); arr[27, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Parking, true); arr[28, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Research, true); arr[29, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Retail, true); arr[30, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Runway_Fees, true); arr[31, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Terminal_Fees, true); arr[32, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Staff, true); arr[33, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Undefined, true); arr[35, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Airline_Fees, false); arr[36, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Bank, false); arr[37, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Fuel, false); arr[38, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Grant, false); arr[39, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Infrastructure, false); arr[40, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Land_Purchase, false); arr[41, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Maintenance, false); arr[42, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Materials, false); arr[43, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Research, false); arr[44, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Retail, false); arr[45, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Staff, false); arr[46, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Taxes, false); arr[49, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Transportation, false); arr[50, j] = GetDailyMoneyTotal(GRD, GamedayReportingData.MoneyCategory.Undefined, false); } return(arr); }
private string GetFuelForTable(int day, float lowvalue, float highvalue) { string str = $"<tr><td>{i18n.Get("TBFlash.AirportStats.utils.day")} {day}</td>"; str += $"<td {(minValues[day].Value == lowvalue ? "class=\"goldStar\"" : string.Empty)}>{minValues[day].Value:C4}</td><td>{AirportStatUtils.FormatTime(minValues[day].Key*60, true)}</td>\n"; str += $"<td {(maxValues[day].Value == highvalue ? "class=\"goldStar\"" : string.Empty)}>{maxValues[day].Value:C4}</td><td>{AirportStatUtils.FormatTime(maxValues[day].Key*60, true)}</td>\n"; return(str + "</tr>"); }