private void addContractParam(ContractParameter param, int Level) { parameterContainer cc = new parameterContainer(this, param, Level); paramList.Add(cc); allParamList.Add(cc); }
public void addToParamList(parameterContainer pC) { allParamList.Add(pC); }
private void customStartup(parameterContainer p) { Type t = p.CParam.GetType(); GameScenes s = HighLogic.LoadedScene; try { if (t == typeof(ReachDestination) && s == GameScenes.FLIGHT && FlightGlobals.ActiveVessel != null) { if (p.CParam.State == ParameterState.Incomplete && ((ReachDestination)p.CParam).checkVesselDestination(FlightGlobals.ActiveVessel)) { MethodInfo m = (typeof(ContractParameter)).GetMethod("SetComplete", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke(p.CParam, null); } else if (p.CParam.State == ParameterState.Complete && !((ReachDestination)p.CParam).checkVesselDestination(FlightGlobals.ActiveVessel)) { MethodInfo m = (typeof(ContractParameter)).GetMethod("SetIncomplete", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke(p.CParam, null); } } else if (t == typeof(ReachSituation) && s == GameScenes.FLIGHT && FlightGlobals.ActiveVessel != null) { if (p.CParam.State == ParameterState.Incomplete && ((ReachSituation)p.CParam).checkVesselSituation(FlightGlobals.ActiveVessel)) { MethodInfo m = (typeof(ContractParameter)).GetMethod("SetComplete", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke(p.CParam, null); } else if (p.CParam.State == ParameterState.Complete && !((ReachSituation)p.CParam).checkVesselSituation(FlightGlobals.ActiveVessel)) { MethodInfo m = (typeof(ContractParameter)).GetMethod("SetIncomplete", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke(p.CParam, null); } } else if (t == typeof(SpecificOrbitParameter) && s == GameScenes.FLIGHT) { ((SpecificOrbitParameter)p.CParam).SetupRenderer(); } else if (t == typeof(VesselSystemsParameter) && s == GameScenes.FLIGHT) { VesselSystemsParameter sys = (VesselSystemsParameter)p.CParam; MethodInfo m = (typeof(VesselSystemsParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke(sys, null); if (!sys.requireNew) return; Vessel v = FlightGlobals.ActiveVessel; if (v == null) return; if (v.situation != Vessel.Situations.PRELAUNCH) return; uint launchID = v.Parts.Min(r => r.launchID); sys.launchID = launchID; } else if (t == typeof(SurveyWaypointParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(SurveyWaypointParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((SurveyWaypointParameter)p.CParam, null); if (p.Way == null) return; var waypoints = WaypointManager.Instance().Waypoints; if (waypoints.Contains(p.Way)) return; WaypointManager.AddWaypoint(p.Way); } else if (t == typeof(StationaryPointParameter) && s == GameScenes.FLIGHT) { if (p.Way == null) return; var waypoints = WaypointManager.Instance().Waypoints; if (waypoints.Contains(p.Way)) return; WaypointManager.AddWaypoint(p.Way); } else if (t == typeof(AsteroidParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(AsteroidParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((AsteroidParameter)p.CParam, null); } else if (t == typeof(CrewCapacityParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(CrewCapacityParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((CrewCapacityParameter)p.CParam, null); } else if (t == typeof(CrewTraitParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(CrewTraitParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((CrewTraitParameter)p.CParam, null); } else if (t == typeof(KerbalDestinationParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(KerbalDestinationParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((KerbalDestinationParameter)p.CParam, null); } else if (t == typeof(KerbalTourParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(KerbalTourParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((KerbalTourParameter)p.CParam, null); } else if (t == typeof(LocationAndSituationParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(LocationAndSituationParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((LocationAndSituationParameter)p.CParam, null); } else if (t == typeof(MobileBaseParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(MobileBaseParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((MobileBaseParameter)p.CParam, null); } else if (t == typeof(PartRequestParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(PartRequestParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((PartRequestParameter)p.CParam, null); } else if (t == typeof(ProgressTrackingParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(ProgressTrackingParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((ProgressTrackingParameter)p.CParam, null); } else if (t == typeof(ResourceExtractionParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(ResourceExtractionParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((ResourceExtractionParameter)p.CParam, null); } else if (t == typeof(VesselDestinationParameter) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(VesselDestinationParameter)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((VesselDestinationParameter)p.CParam, null); } else if (t == typeof(RecoverKerbal) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(RecoverKerbal)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((RecoverKerbal)p.CParam, null); } else if (t == typeof(RecoverPart) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(RecoverPart)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((RecoverPart)p.CParam, null); } else if (t == typeof(AcquirePart) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(AcquirePart)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((AcquirePart)p.CParam, null); } else if (t == typeof(AcquireCrew) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(AcquireCrew)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((AcquireCrew)p.CParam, null); } else if (t == typeof(PartTest) && s == GameScenes.FLIGHT) { MethodInfo m = (typeof(PartTest)).GetMethod("OnRegister", BindingFlags.NonPublic | BindingFlags.Instance); if (m == null) return; m.Invoke((PartTest)p.CParam, null); if (((PartTest)p.CParam).hauled) return; AvailablePart targetPart = ((PartTest)p.CParam).tgtPartInfo; if (targetPart == null) return; for (int i = 0; i < FlightGlobals.Vessels.Count; i++) { Vessel v = FlightGlobals.Vessels[i]; if (v == null) continue; if (!v.loaded) continue; for (int j = 0; j < v.Parts.Count; j++) { Part part = v.Parts[j]; if (part == null) continue; if (part.partInfo != targetPart) continue; var mods = part.FindModulesImplementing<ModuleTestSubject>(); for (int k = 0; k < mods.Count; k++) { ModuleTestSubject test = mods[k]; if (test == null) continue; test.Events["RunTestEvent"].active = true; } } } } } catch (Exception e) { LogFormatted("Error while forcing Contract Parameter activation:\n{0}", e); } }
private void drawParameter(parameterContainer cp) { bool notes = !string.IsNullOrEmpty(cp.Notes(true)); GUILayout.BeginHorizontal(); if (notes && CapCom.Settings.hideNotes) GUILayout.Space(30 + cp.Level * 8); else GUILayout.Space(16 + cp.Level * 8); GUILayout.BeginVertical(); GUILayout.Label(cp.Title, cp.Level == 0 ? CapComSkins.parameterText : CapComSkins.subParameterText); Rect b = GUILayoutUtility.GetLastRect(); if (notes && CapCom.Settings.hideNotes) { b.x -= 28; b.height = 16; b.width = 16; if (GUI.Button(b, cp.ShowNote ? CapComSkins.notesMinusIcon :CapComSkins.notesPlusIcon, CapComSkins.textureButton)) cp.ShowNote = !cp.ShowNote; b.y += 4; b.x += 16; b.height = 10; b.width = 10; GUI.DrawTexture(b, parameterStateIcon(cp.CParam)); } else { b.x -= 14; b.y += 4; b.height = 12; b.width = 12; GUI.DrawTexture(b, parameterStateIcon(cp.CParam)); } if (notes) { if (!CapCom.Settings.hideNotes || cp.ShowNote) GUILayout.Label(cp.Notes(true), CapComSkins.noteText); } sizedContent(cp.FundsRewString, cp.SciRewString, cp.RepRewString, TransactionReasons.ContractReward); sizedContent(cp.FundsPenString, "", cp.RepPenString, TransactionReasons.ContractPenalty); GUILayout.EndVertical(); GUILayout.EndHorizontal(); for (int j = 0; j < cp.ParameterCount; j++) { parameterContainer subP = cp.getParameter(j); if (subP == null) continue; if (subP.Level > 4) continue; if (string.IsNullOrEmpty(subP.Title)) continue; drawParameter(subP); } }