public QuickLaunchMission(QuickLaunchVessel parent, string filePath, ProtoVessel orbitProtoVessel) { missionFilePath = filePath; missionName = Path.GetFileNameWithoutExtension(filePath); protoVessel = orbitProtoVessel; quickLaunchVessel = parent; }
private void InitQuickLaunchVessels() { quickLaunchVessels = new Dictionary <int, QuickLaunchVessel>(); string directory = GetHangarPath(); if (!Directory.Exists(directory)) { return; } string[] launchVehicleDirectories = Directory.GetDirectories(directory); foreach (string launchVehiceDirectory in launchVehicleDirectories) { string launchVehicleFile = Path.Combine(launchVehiceDirectory, LAUNCHFILENAME + ".craft"); if (!File.Exists(launchVehicleFile)) { continue; } ConfigNode prevLaunchRootNode = ConfigNode.Load(launchVehicleFile); ProtoVessel prevlaunchProtoVessel = new ProtoVessel(prevLaunchRootNode, HighLogic.CurrentGame); ProtoLaunchVehicle previousLaunchVehicle = null; ProtoPayload previousPayload = null; string[] parts = launchVehiceDirectory.Split(Path.DirectorySeparatorChar); string vesselName = parts[parts.Length - 1]; Debug.Log(string.Format("[BeenThereDoneThat]: Loading vessel: {0}", vesselName)); if (!QuickLauncher.Instance.Split(prevlaunchProtoVessel, out previousLaunchVehicle, out previousPayload)) { continue; } previousLaunchVehicle.DebugVehicle(); QuickLaunchVessel quickLaunchVessel = new QuickLaunchVessel(vesselName, prevlaunchProtoVessel, previousLaunchVehicle); quickLaunchVessels[quickLaunchVessel.GetHashCode()] = quickLaunchVessel; string missionsPath = Path.Combine(launchVehiceDirectory, "Missions"); if (!Directory.Exists(missionsPath)) { continue; } foreach (string missionFilePath in Directory.GetFiles(missionsPath)) { ConfigNode orbitRootNode = ConfigNode.Load(missionFilePath); ProtoVessel orbitProtoVessel = new ProtoVessel(orbitRootNode, HighLogic.CurrentGame); ProtoLaunchVehicle orbitLaunchVehicle = null; ProtoPayload orbitPayload = null; string missionName = Path.GetFileNameWithoutExtension(missionFilePath); Debug.Log(string.Format("[BeenThereDoneThat]: Loading mission: {0}", missionName)); if (QuickLauncher.Instance.Split(orbitProtoVessel, out orbitLaunchVehicle, out orbitPayload)) { quickLaunchVessel.AddMission(missionFilePath, orbitProtoVessel); } } } }
public static QuickLaunchMissionDialog Create(Callback onDismissCallback, QuickLaunchVessel quickLaunchVessel, Vessel vessel) { GameObject gameObject = new GameObject("BeenThereDoneThat mission start menu"); QuickLaunchMissionDialog quickLaunchMissionDialog = gameObject.AddComponent <QuickLaunchMissionDialog>(); quickLaunchMissionDialog.onDismissCallback = onDismissCallback; quickLaunchMissionDialog.skin = UISkinManager.GetSkin("MainMenuSkin"); quickLaunchMissionDialog.quickLaunchVessel = quickLaunchVessel; quickLaunchMissionDialog.vessel = vessel; quickLaunchMissionDialog.selectedMissionIndex = -1; return(quickLaunchMissionDialog); }
public void OnStartMission(Vessel vessel) { if (vessel.situation != Vessel.Situations.PRELAUNCH) { ScreenMessages.PostScreenMessage("Can't start, must be pre-launch!", 4, ScreenMessageStyle.UPPER_CENTER); return; } QuickLaunchMissionTracker tracker = vessel.GetComponent <QuickLaunchMissionTracker>(); LaunchVehicle launchVehicle = null; Payload payload = null; if (tracker.isTracking) { ScreenMessages.PostScreenMessage("Already tracking!", 4, ScreenMessageStyle.UPPER_CENTER); return; } if (!QuickLauncher.Instance.Split(vessel.parts, out launchVehicle, out payload)) { ScreenMessages.PostScreenMessage("No payload separator available", 4, ScreenMessageStyle.UPPER_CENTER); return; } QuickLaunchVessel quickLaunchVessel = null; if (quickLaunchVessels.TryGetValue(launchVehicle.GetHashCode(), out quickLaunchVessel)) { string vesselName = quickLaunchVessel.name; tracker.StartTracking(vesselName); ScreenMessages.PostScreenMessage(string.Format("Started tracking {0}", vesselName), 4, ScreenMessageStyle.UPPER_CENTER); return; } else { startMissionDialog = StartMissionDialog.Create(OnStartMissionDialogDismiss, vessel, launchVehicle, tracker); } }
public void OnQuickLaunchMission(Vessel vessel) { LaunchVehicle launchVehicle = null; Payload payload = null; if (!QuickLauncher.Instance.Split(vessel.parts, out launchVehicle, out payload)) { ScreenMessages.PostScreenMessage("No payload separator available", 4, ScreenMessageStyle.UPPER_CENTER); return; } int key = launchVehicle.GetHashCode(); if (!quickLaunchVessels.ContainsKey(key)) { ScreenMessages.PostScreenMessage("No missions available", 4, ScreenMessageStyle.UPPER_CENTER); return; } QuickLaunchVessel quickLaunchVessel = quickLaunchVessels[key]; quickLaunchMissionDialog = QuickLaunchMissionDialog.Create(OnQuickLaunchDialogDismissed, quickLaunchVessel, vessel); }