private void HandleStartTrackingWindow() { if (_startTrackingWindow == null) { return; } if (!WindowManager.IsOpen(_startTrackingWindow)) { CancelStartTracking(); return; } if (_startTrackingVessel != null) { if (RmmUtil.IsTrackingActive(FlightGlobals.ActiveVessel) || !RmmUtil.IsPreLaunch(FlightGlobals.ActiveVessel)) { CancelStartTracking(); return; } _startTrackingWindow.VesselName = _startTrackingVessel.vesselName; _startTrackingWindow.Price = RmmUtil.CalculateVesselPrice(_startTrackingVessel); _startTrackingWindow.MinimumCrew = RmmUtil.AstronautCrewCount(_startTrackingVessel); } else if (_startDockingPort != null) { if (FlightGlobals.ActiveVessel.situation != Vessel.Situations.ORBITING) { CancelStartTracking(); return; } List <Part> dockedVesselParts = RmmUtil.GetDockedParts(_startDockingPort.vessel, _startDockingPort); // determine minimum crew _startTrackingWindow.MinimumCrew = RmmUtil.AstronautCrewCount(dockedVesselParts); // determine minimum resources List <string> propellants = RmmUtil.DetermineProppellantArray(dockedVesselParts); List <Resource> minimumResources = new List <Resource>(); foreach (String propellant in propellants) { var amount = RmmUtil.ReadResource(dockedVesselParts, propellant); if (amount != 0) { Resource resource = new Resource { Name = propellant, Amount = amount, }; minimumResources.Add(resource); } } _startTrackingWindow.MinimumResources = minimumResources; } }
private void trackDeparture() { Part dockedPart = null; foreach (Part p in vessel.parts) { if (p.flightID == trackPort) { dockedPart = p; break; } } MissionDeparture departure = new MissionDeparture { Time = (float)Planetarium.GetUniversalTime(), Body = vessel.mainBody.name, Orbit = MissionOrbit.GetMissionOrbit(vessel.orbit), flightIDDockPart = trackPort, VesselName = vessel.name, Crew = RmmUtil.AstronautCrewCount(vessel), Parts = MissionPart.GetMissionPartList(vessel), Resources = MissionResource.GetMissionResourceList(vessel), Proppellants = RmmUtil.DetermineProppellantArray(vessel), Structure = Structure.GetDockedStructure(vessel, dockedPart) }; _mission.TrackDeparture(departure); trackingActive = true; trackingPrimary = true; trackingStatus = "Underway"; //----------------------- trackPartCount = RmmUtil.CountVesselParts(vessel); trackCrew = RmmUtil.AstronautCrewCount(vessel); trackCrewCapacity = RmmUtil.CrewCapacityCount(vessel); ScreenMessages.PostScreenMessage("mission tracking-DEPARTURE", 4, ScreenMessageStyle.UPPER_CENTER); setOtherModules(); updateTrackingVars(vessel); updateNextLogicTime(vessel); }