コード例 #1
0
 public override ListValue GetParts()
 {
     CreatePartSet();
     return(PartValueFactory.Construct(partSet.GetParts().Where(
                                           e => e.Resources.Any(
                                               e2 => e2.info.id == resourceId)), shared));
 }
コード例 #2
0
        private ListValue GetPartsTaggedPattern(StringValue tagPattern)
        {
            // Prepare case-insensivie regex.
            Regex r = new Regex(tagPattern, RegexOptions.IgnoreCase);

            return(PartValueFactory.Construct(GetRawPartsTaggedPattern(r), Shared));
        }
コード例 #3
0
ファイル: VesselUtils.cs プロジェクト: jenden0/KOS
        public static ListValue PartList(this IShipconstruct vessel, string partType, SharedObjects sharedObj)
        {
            var list     = new ListValue();
            var partList = vessel.Parts.ToList();

            switch (partType.ToUpper())
            {
            case "RESOURCES":
                list = AggregateResourceValue.PartsToList(partList, sharedObj);
                break;

            case "PARTS":
                list = PartValueFactory.Construct(partList, sharedObj);
                break;

            case "ENGINES":
                list = EngineValue.PartsToList(partList, sharedObj);
                break;

            case "SENSORS":
                list = SensorValue.PartsToList(partList, sharedObj);
                break;

            case "ELEMENTS":
                list = ElementValue.PartsToList(partList);
                break;

            case "DOCKINGPORTS":
                list = DockingPortValue.PartsToList(partList, sharedObj);
                break;
            }
            return(list);
        }
コード例 #4
0
        public void SendToPartCouplingNotifyees(GameEvents.FromToAction <Part, Part> evt)
        {
            // Notify any hooks attached to the part on the "from" side of the event:
            UniqueSetValue <UserDelegate> notifyees = GetPartCoupleNotifyees(evt.@from);

            // Use GetFooNotifyees to activate the lazy-build logic if need be.
            foreach (UserDelegate del in notifyees)
            {
                if (UserDelgateIsAcceptable(del))
                {
                    Shared.Cpu.AddTrigger(del, PartValueFactory.Construct(evt.to, Shared));
                }
            }

            // Also notify any hooks attached to the part on the "to" side of the event.  Let's not
            // confuse users with KSP's strange notion of the "from" and the "to" of a docking, and just
            // treat both ports as equal peers that both get the same notification:
            notifyees = GetPartCoupleNotifyees(evt.to);
            foreach (UserDelegate del in notifyees)
            {
                if (UserDelgateIsAcceptable(del))
                {
                    Shared.Cpu.AddTrigger(del, PartValueFactory.Construct(evt.@from, Shared));
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// Get all the parts which have at least SOME non-default name:
        /// </summary>
        /// <returns></returns>
        private ListValue GetAllTaggedParts()
        {
            IEnumerable <global::Part> partsWithName = Vessel.parts
                                                       .Where(p => p.Modules.OfType <KOSNameTag>()
                                                              .Any(tag => !String.Equals(tag.nameTag, "", StringComparison.CurrentCultureIgnoreCase)));

            return(PartValueFactory.Construct(partsWithName, Shared));
        }
コード例 #6
0
        private void InitializeSuffixes()
        {
            AddSuffix("PARTSNAMED", new OneArgsSuffix <ListValue, string>(GetPartsNamed));
            AddSuffix("PARTSTITLED", new OneArgsSuffix <ListValue, string>(GetPartsTitled));
            AddSuffix("PARTSDUBBED", new OneArgsSuffix <ListValue, string>(GetPartsDubbed));
            AddSuffix("MODULESNAMED", new OneArgsSuffix <ListValue, string>(GetModulesNamed));
            AddSuffix("PARTSINGROUP", new OneArgsSuffix <ListValue, string>(GetPartsInGroup));
            AddSuffix("MODULESINGROUP", new OneArgsSuffix <ListValue, string>(GetModulesInGroup));
            AddSuffix("PARTSTAGGED", new OneArgsSuffix <ListValue, string>(GetPartsTagged));
            AddSuffix("ALLTAGGEDPARTS", new NoArgsSuffix <ListValue>(GetAllTaggedParts));
            AddSuffix("PARTS", new NoArgsSuffix <ListValue>(GetAllParts));
            AddSuffix("DOCKINGPORTS", new NoArgsSuffix <ListValue>(() => Vessel.PartList("dockingports", Shared)));
            AddSuffix("ELEMENTS", new NoArgsSuffix <ListValue>(() => Vessel.PartList("elements", Shared)));

            AddSuffix("CONTROL", new Suffix <FlightControl>(() => FlightControlManager.GetControllerByVessel(Vessel)));
            AddSuffix("BEARING", new Suffix <float>(() => VesselUtils.GetTargetBearing(CurrentVessel, Vessel)));
            AddSuffix("HEADING", new Suffix <float>(() => VesselUtils.GetTargetHeading(CurrentVessel, Vessel)));
            AddSuffix("AVAILABLETHRUST", new Suffix <double>(() => VesselUtils.GetAvailableThrust(Vessel)));
            AddSuffix("AVAILABLETHRUSTAT", new OneArgsSuffix <double, double>(GetAvailableThrustAt));
            AddSuffix("MAXTHRUST", new Suffix <double>(() => VesselUtils.GetMaxThrust(Vessel)));
            AddSuffix("MAXTHRUSTAT", new OneArgsSuffix <double, double>(GetMaxThrustAt));
            AddSuffix("FACING", new Suffix <Direction>(() => VesselUtils.GetFacing(Vessel)));
            AddSuffix("ANGULARMOMENTUM", new Suffix <Vector>(() => new Vector(Vessel.angularMomentum)));
            AddSuffix("ANGULARVEL", new Suffix <Vector>(() => RawAngularVelFromRelative(Vessel.angularVelocity)));
            AddSuffix("MASS", new Suffix <float>(() => Vessel.GetTotalMass()));
            AddSuffix("VERTICALSPEED", new Suffix <double>(() => Vessel.verticalSpeed));
            AddSuffix("SURFACESPEED", new Suffix <double>(() => Vessel.horizontalSrfSpeed));
            AddSuffix("AIRSPEED", new Suffix <double>(() => (Vessel.orbit.GetVel() - FlightGlobals.currentMainBody.getRFrmVel(Vessel.findWorldCenterOfMass())).magnitude, "the velocity of the vessel relative to the air"));
            AddSuffix(new[] { "SHIPNAME", "NAME" }, new SetSuffix <string>(() => Vessel.vesselName, RenameVessel, "The KSP name for a craft, cannot be empty"));
            AddSuffix("TYPE", new SetSuffix <string>(() => Vessel.vesselType.ToString(), RetypeVessel, "The Ship's KSP type (e.g. rover, base, probe)"));
            AddSuffix("SENSORS", new Suffix <VesselSensors>(() => new VesselSensors(Vessel)));
            AddSuffix("TERMVELOCITY", new Suffix <double>(() => { throw new KOSAtmosphereDeprecationException("17.2", "TERMVELOCITY", "<None>", string.Empty); }));
            AddSuffix("LOADED", new Suffix <bool>(() => Vessel.loaded));
            AddSuffix("ROOTPART", new Suffix <PartValue>(() => PartValueFactory.Construct(Vessel.rootPart, Shared)));
            AddSuffix("DRYMASS", new Suffix <float>(() => Vessel.GetDryMass(), "The Ship's mass when empty"));
            AddSuffix("WETMASS", new Suffix <float>(Vessel.GetWetMass, "The Ship's mass when full"));
            AddSuffix("RESOURCES", new Suffix <ListValue <AggregateResourceValue> >(() => AggregateResourceValue.FromVessel(Vessel, Shared), "The Aggregate resources from every part on the craft"));
            AddSuffix("PACKDISTANCE", new SetSuffix <float>(
                          () =>
            {
                return(System.Math.Min(Vessel.vesselRanges.landed.pack, Vessel.vesselRanges.prelaunch.pack));
            },
                          value =>
            {
                Vessel.vesselRanges.landed.pack    = value;
                Vessel.vesselRanges.splashed.pack  = value;
                Vessel.vesselRanges.prelaunch.pack = value;
            }));
            AddSuffix("ISDEAD", new NoArgsSuffix <bool>(() => (Vessel.state == Vessel.State.DEAD)));
            AddSuffix("STATUS", new Suffix <String>(() => Vessel.situation.ToString()));

            //// Although there is an implementation of lat/long/alt in Orbitible,
            //// it's better to use the methods for vessels that are faster if they're
            //// available:
            AddSuffix("LATITUDE", new Suffix <float>(() => VesselUtils.GetVesselLatitude(Vessel)));
            AddSuffix("LONGITUDE", new Suffix <double>(() => VesselUtils.GetVesselLongitude(Vessel)));
            AddSuffix("ALTITUDE", new Suffix <double>(() => Vessel.altitude));
        }
コード例 #7
0
 private void InitializeSuffixes()
 {
     AddSuffix("NAME", new SetSuffix <StringValue>(() => dockedVesselInfo.name, SetName));
     AddSuffix("UID", new Suffix <StringValue>(() => dockedVesselInfo.rootPartUId.ToString()));
     AddSuffix("VESSEL", new Suffix <VesselTarget>(() => new VesselTarget(parts[0].vessel, shared)));
     AddSuffix("PARTS", new Suffix <ListValue>(() => PartValueFactory.Construct(parts, shared)));
     AddSuffix("DOCKINGPORTS", new Suffix <ListValue>(() => DockingPortValue.PartsToList(parts, shared)));
     AddSuffix("RESOURCES", new Suffix <ListValue>(GetResourceManifest));
 }
コード例 #8
0
ファイル: CrewMember.cs プロジェクト: stephengeorgewest/KOS-1
 private void InitializeSuffixes()
 {
     AddSuffix("NAME", new Suffix <StringValue>(() => Name));
     AddSuffix("TOURIST", new Suffix <BooleanValue>(() => crewMember.type == ProtoCrewMember.KerbalType.Tourist));
     AddSuffix("GENDER", new Suffix <StringValue>(() => Gender));
     AddSuffix("TRAIT", new Suffix <StringValue>(() => Trait));
     AddSuffix("EXPERIENCE", new Suffix <ScalarValue>(() => Experience));
     AddSuffix("PART", new Suffix <PartValue>(() => PartValueFactory.Construct(crewMember.seat.part, shared)));
 }
コード例 #9
0
        private void InitializeSuffixes()
        {
            AddSuffix("PARTSNAMED", new OneArgsSuffix <ListValue, StringValue>(GetPartsNamed));
            AddSuffix("PARTSTITLED", new OneArgsSuffix <ListValue, StringValue>(GetPartsTitled));
            AddSuffix("PARTSDUBBED", new OneArgsSuffix <ListValue, StringValue>(GetPartsDubbed));
            AddSuffix("MODULESNAMED", new OneArgsSuffix <ListValue, StringValue>(GetModulesNamed));
            AddSuffix("PARTSINGROUP", new OneArgsSuffix <ListValue, StringValue>(GetPartsInGroup));
            AddSuffix("MODULESINGROUP", new OneArgsSuffix <ListValue, StringValue>(GetModulesInGroup));
            AddSuffix("PARTSTAGGED", new OneArgsSuffix <ListValue, StringValue>(GetPartsTagged));
            AddSuffix("ALLTAGGEDPARTS", new NoArgsSuffix <ListValue>(GetAllTaggedParts));
            AddSuffix("PARTS", new NoArgsSuffix <ListValue>(GetAllParts));
            AddSuffix("DOCKINGPORTS", new NoArgsSuffix <ListValue>(() => Vessel.PartList("dockingports", Shared)));
            AddSuffix("ELEMENTS", new NoArgsSuffix <ListValue>(() => Vessel.PartList("elements", Shared)));

            AddSuffix("CONTROL", new Suffix <FlightControl>(GetFlightControl));
            AddSuffix("BEARING", new Suffix <ScalarValue>(() => VesselUtils.GetTargetBearing(CurrentVessel, Vessel)));
            AddSuffix("HEADING", new Suffix <ScalarValue>(() => VesselUtils.GetTargetHeading(CurrentVessel, Vessel)));
            AddSuffix("AVAILABLETHRUST", new Suffix <ScalarValue>(() => VesselUtils.GetAvailableThrust(Vessel)));
            AddSuffix("AVAILABLETHRUSTAT", new OneArgsSuffix <ScalarValue, ScalarValue>(GetAvailableThrustAt));
            AddSuffix("MAXTHRUST", new Suffix <ScalarValue>(() => VesselUtils.GetMaxThrust(Vessel)));
            AddSuffix("MAXTHRUSTAT", new OneArgsSuffix <ScalarValue, ScalarValue>(GetMaxThrustAt));
            AddSuffix("FACING", new Suffix <Direction>(() => VesselUtils.GetFacing(Vessel)));
            AddSuffix("ANGULARMOMENTUM", new Suffix <Vector>(() => new Vector(Vessel.angularMomentum)));
            AddSuffix("ANGULARVEL", new Suffix <Vector>(() => RawAngularVelFromRelative(Vessel.angularVelocity)));
            AddSuffix("MASS", new Suffix <ScalarValue>(() => Vessel.GetTotalMass()));
            AddSuffix("VERTICALSPEED", new Suffix <ScalarValue>(() => Vessel.verticalSpeed));
            AddSuffix("GROUNDSPEED", new Suffix <ScalarValue>(GetHorizontalSrfSpeed));
            AddSuffix("SURFACESPEED", new Suffix <ScalarValue>(() => { throw new KOSObsoletionException("0.18.0", "SURFACESPEED", "GROUNDSPEED", ""); }));
            AddSuffix("AIRSPEED", new Suffix <ScalarValue>(() => (Vessel.orbit.GetVel() - FlightGlobals.currentMainBody.getRFrmVel(Vessel.CoMD)).magnitude, "the velocity of the vessel relative to the air"));
            AddSuffix(new[] { "SHIPNAME", "NAME" }, new SetSuffix <StringValue>(() => Vessel.vesselName, RenameVessel, "The KSP name for a craft, cannot be empty"));
            AddSuffix("TYPE", new SetSuffix <StringValue>(() => Vessel.vesselType.ToString(), RetypeVessel, "The Ship's KSP type (e.g. rover, base, probe)"));
            AddSuffix("SENSORS", new Suffix <VesselSensors>(() => new VesselSensors(Vessel)));
            AddSuffix("TERMVELOCITY", new Suffix <ScalarValue>(() => { throw new KOSAtmosphereObsoletionException("17.2", "TERMVELOCITY", "<None>", string.Empty); }));
            AddSuffix(new [] { "DYNAMICPRESSURE", "Q" }, new Suffix <ScalarValue>(() => Vessel.dynamicPressurekPa * ConstantValue.KpaToAtm, "Dynamic Pressure in Atmospheres"));
            AddSuffix("LOADED", new Suffix <BooleanValue>(() => Vessel.loaded));
            AddSuffix("UNPACKED", new Suffix <BooleanValue>(() => !Vessel.packed));
            AddSuffix("ROOTPART", new Suffix <PartValue>(() => PartValueFactory.Construct(Vessel.rootPart, Shared)));
            AddSuffix("CONTROLPART", new Suffix <PartValue>(() => PartValueFactory.Construct(GetControlPart(), Shared)));
            AddSuffix("DRYMASS", new Suffix <ScalarValue>(() => Vessel.GetDryMass(), "The Ship's mass when empty"));
            AddSuffix("WETMASS", new Suffix <ScalarValue>(() => Vessel.GetWetMass(), "The Ship's mass when full"));
            AddSuffix("RESOURCES", new Suffix <ListValue <AggregateResourceValue> >(() => AggregateResourceValue.FromVessel(Vessel, Shared), "The Aggregate resources from every part on the craft"));
            AddSuffix("LOADDISTANCE", new Suffix <LoadDistanceValue>(() => new LoadDistanceValue(Vessel)));
            AddSuffix("ISDEAD", new NoArgsSuffix <BooleanValue>(() => (Vessel.state == Vessel.State.DEAD)));
            AddSuffix("STATUS", new Suffix <StringValue>(() => Vessel.situation.ToString()));

            //// Although there is an implementation of lat/long/alt in Orbitible,
            //// it's better to use the methods for vessels that are faster if they're
            //// available:
            AddSuffix("LATITUDE", new Suffix <ScalarValue>(() => VesselUtils.GetVesselLatitude(Vessel)));
            AddSuffix("LONGITUDE", new Suffix <ScalarValue>(() => VesselUtils.GetVesselLongitude(Vessel)));
            AddSuffix("ALTITUDE", new Suffix <ScalarValue>(() => Vessel.altitude));
            AddSuffix("CREW", new NoArgsSuffix <ListValue>(GetCrew));
            AddSuffix("CREWCAPACITY", new NoArgsSuffix <ScalarValue>(GetCrewCapacity));
            AddSuffix("CONNECTION", new NoArgsSuffix <VesselConnection>(() => new VesselConnection(Vessel, Shared)));
            AddSuffix("MESSAGES", new NoArgsSuffix <MessageQueueStructure>(() => GetMessages()));
        }
コード例 #10
0
 private void InitializeSuffixes()
 {
     AddSuffix("NAME", new SetSuffix <StringValue>(() => dockedVesselInfo.name, SetName));
     AddSuffix("UID", new Suffix <StringValue>(() => dockedVesselInfo.rootPartUId.ToString()));
     AddSuffix("VESSEL", new Suffix <VesselTarget>(() => VesselTarget.CreateOrGetExisting(parts[0].vessel, shared)));
     AddSuffix("PARTS", new Suffix <ListValue>(() => PartValueFactory.Construct(parts, shared)));
     AddSuffix("DOCKINGPORTS", new Suffix <ListValue>(() => DockingPortValue.PartsToList(parts, shared)));
     AddSuffix(new string[] { "DECOUPLERS", "SEPARATORS" }, new Suffix <ListValue>(() => DecouplerValue.PartsToList(parts, shared)));
     AddSuffix("RESOURCES", new Suffix <ListValue>(GetResourceManifest));
 }
コード例 #11
0
        private ListValue GetPartsDubbed(StringValue searchTerm)
        {
            // Get the list of all the parts where the part's API name OR its GUI title or its tag name matches.
            List <global::Part> kspParts = new List <global::Part>();

            kspParts.AddRange(GetRawPartsNamed(searchTerm));
            kspParts.AddRange(GetRawPartsTitled(searchTerm));
            kspParts.AddRange(GetRawPartsTagged(searchTerm));

            // The "Distinct" operation is there because it's possible for someone to use a tag name that matches the part name.
            return(PartValueFactory.Construct(kspParts.Distinct(), Shared));
        }
コード例 #12
0
        private ListValue GetPartsDubbedPattern(StringValue searchPattern)
        {
            // Prepare case-insensivie regex.
            Regex r = new Regex(searchPattern, RegexOptions.IgnoreCase);
            // Get the list of all the parts where the part's API name OR its GUI title or its tag name matches the pattern.
            List <global::Part> kspParts = new List <global::Part>();

            kspParts.AddRange(GetRawPartsNamedPattern(r));
            kspParts.AddRange(GetRawPartsTitledPattern(r));
            kspParts.AddRange(GetRawPartsTaggedPattern(r));

            // The "Distinct" operation is there because it's possible for someone to use a tag name that matches the part name.
            return(PartValueFactory.Construct(kspParts.Distinct(), Shared));
        }
コード例 #13
0
 private void InitializeSuffixesAfterConstruction()
 {
     AddSuffix("NAME", new Suffix <string>(() => partModule.moduleName));
     AddSuffix("PART", new Suffix <PartValue>(() => PartValueFactory.Construct(partModule.part, shared)));
     AddSuffix("ALLFIELDS", new Suffix <ListValue>(() => AllFields("({0}) {1}, is {2}")));
     AddSuffix("HASFIELD", new OneArgsSuffix <bool, string>(HasField));
     AddSuffix("ALLEVENTS", new Suffix <ListValue>(() => AllEvents("({0}) {1}, is {2}")));
     AddSuffix("HASEVENT", new OneArgsSuffix <bool, string>(HasEvent));
     AddSuffix("ALLACTIONS", new Suffix <ListValue>(() => AllActions("({0}) {1}, is {2}")));
     AddSuffix("HASACTION", new OneArgsSuffix <bool, string>(HasAction));
     AddSuffix("GETFIELD", new OneArgsSuffix <object, string>(GetKSPFieldValue));
     AddSuffix("SETFIELD", new TwoArgsSuffix <string, object>(SetKSPFieldValue));
     AddSuffix("DOEVENT", new OneArgsSuffix <string>(CallKSPEvent));
     AddSuffix("DOACTION", new TwoArgsSuffix <string, bool>(CallKSPAction));
 }
コード例 #14
0
ファイル: VesselTarget.cs プロジェクト: pand5461/KOS-1
 public ListValue GetAllParts()
 {
     if (cachedPartsAreStale)
     {
         cachedParts.Clear();
         for (int i = 0; i < Vessel.Parts.Count; ++i)
         {
             var part = Vessel.Parts[i];
             if (part.State != PartStates.DEAD && part.transform != null)
             {
                 cachedParts.Add(PartValueFactory.Construct(Vessel.Parts[i], Shared));
             }
         }
         cachedPartsAreStale = false;
     }
     return(cachedParts);
 }
コード例 #15
0
 private ListValue GetPartsTitledPattern(StringValue partTitlePattern)
 {
     return(PartValueFactory.Construct(Vessel.rootPart, Shared).GetPartsTitledPattern(partTitlePattern));
 }
コード例 #16
0
 private ListValue GetPartsTagged(StringValue tagName)
 {
     return(PartValueFactory.Construct(Vessel.rootPart, Shared).GetPartsTagged(tagName));
 }
コード例 #17
0
 private ListValue GetPartsTagged(StringValue tagName)
 {
     return(PartValueFactory.Construct(GetRawPartsTagged(tagName), Shared));
 }
コード例 #18
0
 private ListValue GetPartsTitled(StringValue partTitle)
 {
     return(PartValueFactory.Construct(GetRawPartsTitled(partTitle), Shared));
 }
コード例 #19
0
 private ListValue GetPartsDubbedPattern(StringValue searchPattern)
 {
     return(PartValueFactory.Construct(Vessel.rootPart, Shared).GetPartsDubbedPattern(searchPattern));
 }
コード例 #20
0
 private ListValue GetPartsTaggedPattern(StringValue tagPattern)
 {
     return(PartValueFactory.Construct(Vessel.rootPart, Shared).GetPartsTaggedPattern(tagPattern));
 }
コード例 #21
0
        private ListValue <PartValue> GetParts()
        {
            var parts = PartValueFactory.Construct(resources.Select(r => r.part), shared);

            return(ListValue <PartValue> .CreateList(parts));
        }
コード例 #22
0
 private ListValue GetPartsDubbed(StringValue searchTerm)
 {
     return(PartValueFactory.Construct(Vessel.rootPart, Shared).GetPartsDubbed(searchTerm));
 }
コード例 #23
0
 /// <summary>
 /// Get all the parts which have at least SOME non-default name:
 /// </summary>
 /// <returns></returns>
 private ListValue GetAllTaggedParts()
 {
     return(PartValueFactory.Construct(Vessel.rootPart, Shared).GetAllTaggedParts());
 }
コード例 #24
0
ファイル: VesselTarget.cs プロジェクト: pgodd/KOS
 private ListValue GetPartsNamed(string partName)
 {
     return(PartValueFactory.Construct(GetRawPartsNamed(partName), Shared));
 }
コード例 #25
0
        private ListValue GetPartsInGroup(StringValue groupName)
        {
            var    matchGroup = KSPActionGroup.None;
            string upperName  = groupName.ToUpper();

            // TODO: later refactor:  put this in a Dictionary lookup instead, and then share it
            // by both this code and the code in ActionGroup.cs:
            if (upperName == "SAS")
            {
                matchGroup = KSPActionGroup.SAS;
            }
            if (upperName == "GEAR")
            {
                matchGroup = KSPActionGroup.Gear;
            }
            if (upperName == "LIGHTS")
            {
                matchGroup = KSPActionGroup.Light;
            }
            if (upperName == "BRAKES")
            {
                matchGroup = KSPActionGroup.Brakes;
            }
            if (upperName == "RCS")
            {
                matchGroup = KSPActionGroup.RCS;
            }
            if (upperName == "ABORT")
            {
                matchGroup = KSPActionGroup.Abort;
            }
            if (upperName == "AG1")
            {
                matchGroup = KSPActionGroup.Custom01;
            }
            if (upperName == "AG2")
            {
                matchGroup = KSPActionGroup.Custom02;
            }
            if (upperName == "AG3")
            {
                matchGroup = KSPActionGroup.Custom03;
            }
            if (upperName == "AG4")
            {
                matchGroup = KSPActionGroup.Custom04;
            }
            if (upperName == "AG5")
            {
                matchGroup = KSPActionGroup.Custom05;
            }
            if (upperName == "AG6")
            {
                matchGroup = KSPActionGroup.Custom06;
            }
            if (upperName == "AG7")
            {
                matchGroup = KSPActionGroup.Custom07;
            }
            if (upperName == "AG8")
            {
                matchGroup = KSPActionGroup.Custom08;
            }
            if (upperName == "AG9")
            {
                matchGroup = KSPActionGroup.Custom09;
            }
            if (upperName == "AG10")
            {
                matchGroup = KSPActionGroup.Custom10;
            }

            ListValue kScriptParts = new ListValue();

            if (matchGroup == KSPActionGroup.None)
            {
                return(kScriptParts);
            }

            foreach (global::Part p in Vessel.parts)
            {
                // See if any of the parts' actions are this action group:
                bool hasPartAction = p.Actions.Any(a => a.actionGroup.Equals(matchGroup));
                if (hasPartAction)
                {
                    kScriptParts.Add(PartValueFactory.Construct(p, Shared));
                    continue;
                }

                var  modules         = p.Modules.Cast <PartModule>();
                bool hasModuleAction = modules.Any(pm => pm.Actions.Any(a => a.actionGroup.Equals(matchGroup)));
                if (hasModuleAction)
                {
                    kScriptParts.Add(PartValueFactory.Construct(p, Shared));
                }
            }
            return(kScriptParts);
        }
コード例 #26
0
 private ListValue GetPartsNamed(StringValue partName)
 {
     return(PartValueFactory.Construct(Vessel.rootPart, Shared).GetPartsNamed(partName));
 }
コード例 #27
0
ファイル: VesselTarget.cs プロジェクト: jonored/KOS
 public ListValue GetAllParts()
 {
     return(PartValueFactory.Construct(Vessel.Parts, Shared));
 }
コード例 #28
0
 public virtual ListValue GetParts()
 {
     return(PartValueFactory.Construct(resources.Select(r => r.part), shared));
 }
コード例 #29
0
 private ListValue GetModulesNamed(StringValue modName)
 {
     return(PartValueFactory.Construct(Vessel.rootPart, Shared).GetModulesNamed(modName));
 }