コード例 #1
0
        private void UpdateValues()
        {
            if (EditorLogic.fetch != null)
            {
                numCrew = 0;
                maxCrew = 0;
                int    numOccupiedParts   = 0;
                int    numOccupiableParts = 0;
                double foodValue          = 0;
                double waterValue         = 0;
                double oxygenValue        = 0;
                double electricityValue   = 0;
                double wasteValue         = 0;
                double wasteWaterValue    = 0;
                double carbonDioxideValue = 0;

                for (int i = 0; i < EditorLogic.fetch.ship.parts.Count; i++)
                {
                    if (EditorLogic.fetch.ship.parts[i].CrewCapacity > 0)
                    {
                        ++numOccupiableParts;
                        maxCrew += EditorLogic.fetch.ship.parts[i].CrewCapacity;
                    }

                    for (int j = 0; j < EditorLogic.fetch.ship.parts[i].Resources.Count; j++)
                    {
                        if (EditorLogic.fetch.ship.parts[i].Resources[j].info.id == globalSettings.FoodId)
                        {
                            foodValue += EditorLogic.fetch.ship.parts[i].Resources[j].amount;
                        }
                        else if (EditorLogic.fetch.ship.parts[i].Resources[j].info.id == globalSettings.WaterId)
                        {
                            waterValue += EditorLogic.fetch.ship.parts[i].Resources[j].amount;
                        }
                        else if (EditorLogic.fetch.ship.parts[i].Resources[j].info.id == globalSettings.OxygenId)
                        {
                            oxygenValue += EditorLogic.fetch.ship.parts[i].Resources[j].amount;
                        }
                        else if (EditorLogic.fetch.ship.parts[i].Resources[j].info.id == globalSettings.ElectricityId)
                        {
                            electricityValue += EditorLogic.fetch.ship.parts[i].Resources[j].amount;
                        }
                        else if (EditorLogic.fetch.ship.parts[i].Resources[j].info.id == globalSettings.WasteId)
                        {
                            wasteValue += EditorLogic.fetch.ship.parts[i].Resources[j].maxAmount;
                        }
                        else if (EditorLogic.fetch.ship.parts[i].Resources[j].info.id == globalSettings.WasteWaterId)
                        {
                            wasteWaterValue += EditorLogic.fetch.ship.parts[i].Resources[j].maxAmount;
                        }
                        else if (EditorLogic.fetch.ship.parts[i].Resources[j].info.id == globalSettings.CO2Id)
                        {
                            carbonDioxideValue += EditorLogic.fetch.ship.parts[i].Resources[j].maxAmount;
                        }
                    }
                }

                CrewAssignmentDialog dialog = CrewAssignmentDialog.Instance;
                if (dialog != null)
                {
                    VesselCrewManifest manifest = dialog.GetManifest();
                    if (manifest != null)
                    {
                        List <PartCrewManifest> manifests = manifest.GetCrewableParts();
                        for (int i = 0; i < manifests.Count; i++)
                        {
                            var partCrew      = manifests[i].GetPartCrew();
                            int partCrewCount = 0;
                            for (int j = 0; j < partCrew.Length; ++j)
                            {
                                if (partCrew[j] != null)
                                {
                                    ++partCrewCount;
                                }
                            }
                            if (partCrewCount > 0)
                            {
                                ++numOccupiedParts;
                                numCrew += partCrewCount;
                            }
                        }
                    }
                }

                food             = foodValue.ToString("#,##0.00");
                water            = waterValue.ToString("#,##0.00");
                oxygen           = oxygenValue.ToString("#,##0.00");
                electricity      = electricityValue.ToString("#,##0.00");
                maxWaste         = wasteValue.ToString("#,##0.00");
                maxWasteWater    = wasteWaterValue.ToString("#,##0.00");
                maxCarbonDioxide = carbonDioxideValue.ToString("#,##0.00");

                if (numCrew > 0)
                {
                    foodDuration        = Utilities.FormatTime(foodValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().FoodConsumptionRate / numCrew);
                    waterDuration       = Utilities.FormatTime(waterValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().WaterConsumptionRate / numCrew);
                    oxygenDuration      = Utilities.FormatTime(oxygenValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().OxygenConsumptionRate / numCrew);
                    electricityDuration = Utilities.FormatTime(electricityValue / CalculateElectricityConsumptionRate(numCrew, numOccupiedParts));
                    wasteRoom           = Utilities.FormatTime(wasteValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().WasteProductionRate / numCrew);
                    wasteWaterRoom      = Utilities.FormatTime(wasteWaterValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().WasteWaterProductionRate / numCrew);
                    carbonDioxideRoom   = Utilities.FormatTime(carbonDioxideValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().CO2ProductionRate / numCrew);
                }
                else
                {
                    foodDuration        = "-";
                    waterDuration       = "-";
                    oxygenDuration      = "-";
                    electricityDuration = "-";
                    wasteRoom           = "-";
                    wasteWaterRoom      = "-";
                    carbonDioxideRoom   = "-";
                }

                if (maxCrew > 0)
                {
                    foodDurationMaxCrew        = Utilities.FormatTime(foodValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().FoodConsumptionRate / maxCrew);
                    waterDurationMaxCrew       = Utilities.FormatTime(waterValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().WaterConsumptionRate / maxCrew);
                    oxygenDurationMaxCrew      = Utilities.FormatTime(oxygenValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().OxygenConsumptionRate / maxCrew);
                    electricityDurationMaxCrew = Utilities.FormatTime(electricityValue / CalculateElectricityConsumptionRate(maxCrew, numOccupiableParts));
                    wasteRoomMaxCrew           = Utilities.FormatTime(wasteValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().WasteProductionRate / maxCrew);
                    wasteWaterRoomMaxCrew      = Utilities.FormatTime(wasteWaterValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().WasteWaterProductionRate / maxCrew);
                    carbonDioxideRoomMaxCrew   = Utilities.FormatTime(carbonDioxideValue / HighLogic.CurrentGame.Parameters.CustomParams <TAC_SettingsParms_Sec2>().CO2ProductionRate / maxCrew);
                }
                else
                {
                    foodDurationMaxCrew        = "-";
                    waterDurationMaxCrew       = "-";
                    oxygenDurationMaxCrew      = "-";
                    electricityDurationMaxCrew = "-";
                    wasteRoomMaxCrew           = "-";
                    wasteWaterRoomMaxCrew      = "-";
                    carbonDioxideRoomMaxCrew   = "-";
                }
            }
        }
コード例 #2
0
        private void UpdateValues()
        {
            if (EditorLogic.fetch != null)
            {
                numCrew = 0;
                maxCrew = 0;
                int    numOccupiedParts   = 0;
                int    numOccupiableParts = 0;
                double foodValue          = 0;
                double waterValue         = 0;
                double oxygenValue        = 0;
                double electricityValue   = 0;
                double wasteValue         = 0;
                double wasteWaterValue    = 0;
                double carbonDioxideValue = 0;

                foreach (Part part in EditorLogic.fetch.ship.parts)
                {
                    if (part.CrewCapacity > 0)
                    {
                        ++numOccupiableParts;
                        maxCrew += part.CrewCapacity;
                    }

                    foreach (PartResource partResource in part.Resources)
                    {
                        if (partResource.info.id == globalSettings.FoodId)
                        {
                            foodValue += partResource.amount;
                        }
                        else if (partResource.info.id == globalSettings.WaterId)
                        {
                            waterValue += partResource.amount;
                        }
                        else if (partResource.info.id == globalSettings.OxygenId)
                        {
                            oxygenValue += partResource.amount;
                        }
                        else if (partResource.info.id == globalSettings.ElectricityId)
                        {
                            electricityValue += partResource.amount;
                        }
                        else if (partResource.info.id == globalSettings.WasteId)
                        {
                            wasteValue += partResource.maxAmount;
                        }
                        else if (partResource.info.id == globalSettings.WasteWaterId)
                        {
                            wasteWaterValue += partResource.maxAmount;
                        }
                        else if (partResource.info.id == globalSettings.CO2Id)
                        {
                            carbonDioxideValue += partResource.maxAmount;
                        }
                    }
                }

                CrewAssignmentDialog dialog = CrewAssignmentDialog.Instance;
                if (dialog != null)
                {
                    VesselCrewManifest manifest = dialog.GetManifest();
                    if (manifest != null)
                    {
                        foreach (PartCrewManifest pcm in manifest)
                        {
                            int partCrewCount = pcm.GetPartCrew().Count(c => c != null);
                            if (partCrewCount > 0)
                            {
                                ++numOccupiedParts;
                                numCrew += partCrewCount;
                            }
                        }
                    }
                }

                food             = foodValue.ToString("#,##0.00");
                water            = waterValue.ToString("#,##0.00");
                oxygen           = oxygenValue.ToString("#,##0.00");
                electricity      = electricityValue.ToString("#,##0.00");
                maxWaste         = wasteValue.ToString("#,##0.00");
                maxWasteWater    = wasteWaterValue.ToString("#,##0.00");
                maxCarbonDioxide = carbonDioxideValue.ToString("#,##0.00");

                if (numCrew > 0)
                {
                    foodDuration        = Utilities.FormatTime(foodValue / globalSettings.FoodConsumptionRate / numCrew);
                    waterDuration       = Utilities.FormatTime(waterValue / globalSettings.WaterConsumptionRate / numCrew);
                    oxygenDuration      = Utilities.FormatTime(oxygenValue / globalSettings.OxygenConsumptionRate / numCrew);
                    electricityDuration = Utilities.FormatTime(electricityValue / CalculateElectricityConsumptionRate(numCrew, numOccupiedParts));
                    wasteRoom           = Utilities.FormatTime(wasteValue / globalSettings.WasteProductionRate / numCrew);
                    wasteWaterRoom      = Utilities.FormatTime(wasteWaterValue / globalSettings.WasteWaterProductionRate / numCrew);
                    carbonDioxideRoom   = Utilities.FormatTime(carbonDioxideValue / globalSettings.CO2ProductionRate / numCrew);
                }
                else
                {
                    foodDuration        = "-";
                    waterDuration       = "-";
                    oxygenDuration      = "-";
                    electricityDuration = "-";
                    wasteRoom           = "-";
                    wasteWaterRoom      = "-";
                    carbonDioxideRoom   = "-";
                }

                if (maxCrew > 0)
                {
                    foodDurationMaxCrew        = Utilities.FormatTime(foodValue / globalSettings.FoodConsumptionRate / maxCrew);
                    waterDurationMaxCrew       = Utilities.FormatTime(waterValue / globalSettings.WaterConsumptionRate / maxCrew);
                    oxygenDurationMaxCrew      = Utilities.FormatTime(oxygenValue / globalSettings.OxygenConsumptionRate / maxCrew);
                    electricityDurationMaxCrew = Utilities.FormatTime(electricityValue / CalculateElectricityConsumptionRate(maxCrew, numOccupiableParts));
                    wasteRoomMaxCrew           = Utilities.FormatTime(wasteValue / globalSettings.WasteProductionRate / maxCrew);
                    wasteWaterRoomMaxCrew      = Utilities.FormatTime(wasteWaterValue / globalSettings.WasteWaterProductionRate / maxCrew);
                    carbonDioxideRoomMaxCrew   = Utilities.FormatTime(carbonDioxideValue / globalSettings.CO2ProductionRate / maxCrew);
                }
                else
                {
                    foodDurationMaxCrew        = "-";
                    waterDurationMaxCrew       = "-";
                    oxygenDurationMaxCrew      = "-";
                    electricityDurationMaxCrew = "-";
                    wasteRoomMaxCrew           = "-";
                    wasteWaterRoomMaxCrew      = "-";
                    carbonDioxideRoomMaxCrew   = "-";
                }
            }
        }