private float CalculateVesselPrice(bool withCargo) { double price = 0.0f; string[] propellantResources = new string[0]; if (trackReturnResources == "") { //RmmUtil.DetermineProppellantArray(vessel, ref propellantResources); } else { RmmUtil.GetProppellantArray(trackReturnResources, ref propellantResources); } //cost parts foreach (Part p in vessel.parts) { double missingResCost = 0; foreach (PartResource r in p.Resources) { if (withCargo || propellantResources.Contains(r.info.name)) { missingResCost = missingResCost + RmmUtil.Cost(r.info.name, (r.maxAmount - r.amount)); } else { missingResCost = missingResCost + RmmUtil.Cost(r.info.name, r.maxAmount); } } price = price + (p.partInfo.cost - missingResCost + part.GetModuleCosts(0)); } return((float)price); }
private void HandleRoutineDepartureDetailWindow() { if (_routineDepartureDetailWindow == null) { return; } if (!WindowManager.IsOpen(_routineDepartureDetailWindow)) { CancelRoutineDepartureDetail(); return; } _routineDepartureDetailWindow.CrewCount = RmmUtil.CrewCount(_routineDepartureDetailWindow.DepartureParts); List <RoutineDepartureDetailWindow.ResourceItem> resources = new List <RoutineDepartureDetailWindow.ResourceItem>(); foreach (String proppelant in _routineDepartureDetailWindow.RoutineDepartureMission.Proppelants) { foreach (MissionResource missionResource in _routineDepartureDetailWindow.RoutineDepartureMission.Resources) { if (missionResource.Name == proppelant) { RoutineDepartureDetailWindow.ResourceItem resourceItem = new RoutineDepartureDetailWindow.ResourceItem { Name = missionResource.Name, RequiredAmount = missionResource.Amount, CurrentAmount = RmmUtil.ReadResource(_routineDepartureDetailWindow.DepartureParts, missionResource.Name), }; resources.Add(resourceItem); } } } _routineDepartureDetailWindow.Resources = resources; double currentVesselCargoMass = 0; double currentVesselCargoFunds = 0; List <MissionResource> vesselResources = MissionResource.GetMissionResourceList(_routineDepartureDetailWindow.DepartureParts); foreach (MissionResource vesselResource in vesselResources) { if (_routineDepartureDetailWindow.RoutineDepartureMission.Proppelants.Contains(vesselResource.Name)) { continue; } currentVesselCargoMass += RmmUtil.Mass(vesselResource.Name, vesselResource.Amount); currentVesselCargoFunds += RmmUtil.Cost(vesselResource.Name, vesselResource.Amount); } _routineDepartureDetailWindow.CurrentCargoMass = currentVesselCargoMass; _routineDepartureDetailWindow.CurrentCargoFunds = currentVesselCargoFunds; }
public static float CalculateVesselPrice(Vessel vessel) { double price = 0.0f; //cost parts foreach (Part part in vessel.parts) { double missingResCost = 0; foreach (PartResource r in part.Resources) { missingResCost = missingResCost + RmmUtil.Cost(r.info.name, (r.maxAmount - r.amount)); } price = price + (part.partInfo.cost - missingResCost + part.GetModuleCosts(0)); } return((float)price); }