Beispiel #1
0
        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 addContractParam(ContractParameter param, int Level)
		{
			parameterContainer cc = new parameterContainer(this, param, Level);
			paramList.Add(cc);
			allParamList.Add(cc);
		}
Beispiel #4
0
 public void addToParamList(parameterContainer pC)
 {
     allParamList.Add(pC);
 }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
        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);
            }
        }