예제 #1
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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>");
        }