예제 #1
0
        public override void Execute(SharedObjects shared)
        {
            string listType = PopValueAssert(shared).ToString();
            var    list     = new ListValue();

            switch (listType)
            {
            case "bodies":
                foreach (CelestialBody cBody in FlightGlobals.fetch.bodies)
                {
                    list.Add(BodyTarget.CreateOrGetExisting(cBody, shared));
                }
                break;

            case "targets":
                foreach (var vessel in FlightGlobals.Vessels)
                {
                    if (vessel == shared.Vessel)
                    {
                        continue;
                    }
                    list.Add(VesselTarget.CreateOrGetExisting(vessel, shared));
                }
                break;

            case "resources":
            case "parts":
            case "engines":
            case "sensors":
            case "elements":
            case "dockingports":
                list = shared.Vessel.PartList(listType, shared);
                break;

            case "files":
                list = ListValue.CreateList(shared.VolumeMgr.CurrentDirectory.ListAsLexicon().Values.ToList());
                break;

            case "volumes":
                list = ListValue.CreateList(shared.VolumeMgr.Volumes.Values.ToList());
                break;

            case "processors":
                list = ListValue.CreateList(shared.ProcessorMgr.processors.Values.ToList().Select(processor => PartModuleFieldsFactory.Construct(processor, shared)));
                break;

            case "fonts":
                foreach (Font f in Resources.FindObjectsOfTypeAll <Font>())
                {
                    list.Add(new StringValue(f.name));
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            AssertArgBottomAndConsume(shared);

            ReturnValue = list;
        }
        public ListValue GetServos()
        {
            var list = new List <IRServoWrapper> ();

            if (IRWrapper.APIReady)
            {
                foreach (IRWrapper.IServo s in cg.Servos)
                {
                    list.Add(new IRServoWrapper(s, shared));
                }
            }

            return(ListValue.CreateList(list));
        }
예제 #3
0
파일: BuildList.cs 프로젝트: gisikw/KOS
        public override void Execute(SharedObjects shared)
        {
            string listType = PopValueAssert(shared).ToString();
            var    list     = new ListValue();

            switch (listType)
            {
            case "bodies":
                foreach (CelestialBody cBody in FlightGlobals.fetch.bodies)
                {
                    list.Add(new BodyTarget(cBody, shared));
                }
                break;

            case "targets":
                foreach (var vessel in FlightGlobals.Vessels)
                {
                    if (vessel == shared.Vessel)
                    {
                        continue;
                    }
                    list.Add(new VesselTarget(vessel, shared));
                }
                break;

            case "resources":
            case "parts":
            case "engines":
            case "sensors":
            case "elements":
            case "dockingports":
                list = shared.Vessel.PartList(listType, shared);
                break;

            case "files":
                list = ListValue.CreateList(shared.VolumeMgr.CurrentVolume.GetFileList());
                break;

            case "volumes":
                list = ListValue.CreateList(shared.VolumeMgr.Volumes.Values.ToList());
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            AssertArgBottomAndConsume(shared);

            ReturnValue = list;
        }
예제 #4
0
        public void EachListConstructor()
        {
            var baseList     = new ListValue();
            var baseDelegate = ((NoArgsSuffix <int> .Del <int>)baseList.GetSuffix("LENGTH"));

            Assert.AreEqual(0, baseDelegate.Invoke());

            var castList     = ListValue.CreateList(new List <object>());
            var castDelegate = ((NoArgsSuffix <int> .Del <int>)castList.GetSuffix("LENGTH"));

            Assert.AreEqual(0, castDelegate.Invoke());

            var copyDelegate = (NoArgsSuffix <ListValue> .Del <ListValue>)baseList.GetSuffix("COPY");
            var copyList     = copyDelegate.Invoke();

            Assert.AreEqual(0, ((NoArgsSuffix <int> .Del <int>)copyList.GetSuffix("LENGTH")).Invoke());
        }
예제 #5
0
파일: BuildList.cs 프로젝트: victorb/KOS
        public override void Execute(SharedObjects shared)
        {
            string listType = shared.Cpu.PopValue().ToString();
            var    list     = new ListValue();

            switch (listType)
            {
            case "bodies":
                list = ListValue.CreateList(FlightGlobals.fetch.bodies);
                break;

            case "targets":
                foreach (var vessel in FlightGlobals.Vessels)
                {
                    if (vessel == shared.Vessel)
                    {
                        continue;
                    }
                    list.Add(new VesselTarget(vessel, shared));
                }
                break;

            case "resources":
            case "parts":
            case "engines":
            case "sensors":
            case "elements":
            case "dockingports":
                list = shared.Vessel.PartList(listType, shared);
                break;

            case "files":
                list = ListValue.CreateList(shared.VolumeMgr.CurrentVolume.GetFileList());
                break;

            case "volumes":
                list = ListValue.CreateList(shared.VolumeMgr.Volumes.Values.ToList());
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            shared.Cpu.PushStack(list);
        }
예제 #6
0
        public void EachListConstructor()
        {
            var cpu = new FakeCpu();

            cpu.PushStack(new KOSArgMarkerType());

            var baseList     = new ListValue();
            var baseDelegate = baseList.GetSuffix("LENGTH");

            cpu.PushStack(null); // dummy push to be popped by ReverseStackArgs
            cpu.PushStack(new KOSArgMarkerType());
            baseDelegate.Invoke(cpu);
            Assert.AreEqual(ScalarIntValue.Zero, baseDelegate.Value);

            var castList     = ListValue.CreateList(new List <object>());
            var castDelegate = castList.GetSuffix("LENGTH");

            cpu.PushStack(null); // dummy push to be popped by ReverseStackArgs
            cpu.PushStack(new KOSArgMarkerType());
            castDelegate.Invoke(cpu);
            Assert.AreEqual(ScalarIntValue.Zero, castDelegate.Value);

            var copyDelegate = baseList.GetSuffix("COPY");

            cpu.PushStack(null); // dummy push to be popped by ReverseStackArgs
            cpu.PushStack(new KOSArgMarkerType());
            copyDelegate.Invoke(cpu);
            var copyList = copyDelegate.Value;

            Assert.AreEqual(baseList, copyList);

            var lengthDelegate = copyList.GetSuffix("LENGTH");

            cpu.PushStack(null); // dummy push to be popped by ReverseStackArgs
            cpu.PushStack(new KOSArgMarkerType());
            lengthDelegate.Invoke(cpu);
            Assert.AreEqual(ScalarIntValue.Zero, lengthDelegate.Value);
        }
예제 #7
0
파일: Box.cs 프로젝트: pand5461/KOS-1
 private void InitializeSuffixes()
 {
     AddSuffix("ADDLABEL", new OneArgsSuffix <Label, StringValue>(AddLabel));
     AddSuffix("ADDTEXTFIELD", new OneArgsSuffix <TextField, StringValue>(AddTextField));
     AddSuffix("ADDBUTTON", new OneArgsSuffix <Button, StringValue>(AddButton));
     AddSuffix("ADDRADIOBUTTON", new TwoArgsSuffix <Button, StringValue, BooleanValue>(AddRadioButton));
     AddSuffix("ADDCHECKBOX", new TwoArgsSuffix <Button, StringValue, BooleanValue>(AddCheckbox));
     AddSuffix("ADDPOPUPMENU", new Suffix <PopupMenu>(AddPopupMenu));
     AddSuffix("ADDHSLIDER", new ThreeArgsSuffix <Slider, ScalarValue, ScalarValue, ScalarValue>(AddHSlider));
     AddSuffix("ADDVSLIDER", new ThreeArgsSuffix <Slider, ScalarValue, ScalarValue, ScalarValue>(AddVSlider));
     AddSuffix("ADDHBOX", new Suffix <Box>(AddHBox));
     AddSuffix("ADDVBOX", new Suffix <Box>(AddVBox));
     AddSuffix("ADDHLAYOUT", new Suffix <Box>(AddHLayout));
     AddSuffix("ADDVLAYOUT", new Suffix <Box>(AddVLayout));
     AddSuffix("ADDSCROLLBOX", new Suffix <ScrollBox>(AddScrollBox));
     AddSuffix("ADDSTACK", new Suffix <Box>(AddStack));
     AddSuffix("ADDSPACING", new OneArgsSuffix <Spacing, ScalarValue>(AddSpace));
     AddSuffix("WIDGETS", new Suffix <ListValue>(() => ListValue.CreateList(Widgets)));
     AddSuffix("RADIOVALUE", new Suffix <StringValue>(() => new StringValue(GetRadioValue())));
     AddSuffix("ONRADIOCHANGE", new SetSuffix <UserDelegate>(() => CallbackGetter(UserOnRadioChange), value => UserOnRadioChange = CallbackSetter(value)));
     AddSuffix("SHOWONLY", new OneArgsSuffix <Widget>(value => ShowOnly(value)));
     AddSuffix("CLEAR", new NoArgsVoidSuffix(Clear));
 }
예제 #8
0
 private void InitializeSuffixes()
 {
     AddSuffix("ADDLABEL", new OptionalArgsSuffix <Label>(AddLabel, new Structure[] { new StringValue("") }));
     AddSuffix("ADDTEXTFIELD", new OptionalArgsSuffix <TextField>(AddTextField, new Structure [] { new StringValue("") }));
     AddSuffix("ADDBUTTON", new OptionalArgsSuffix <Button>(AddButton, new Structure [] { new StringValue("") }));
     AddSuffix("ADDRADIOBUTTON", new OptionalArgsSuffix <Button>(AddRadioButton, new Structure [] { new StringValue(""), new BooleanValue(false) }));
     AddSuffix("ADDCHECKBOX", new OptionalArgsSuffix <Button>(AddCheckbox, new Structure [] { new StringValue(""), new BooleanValue(false) }));
     AddSuffix("ADDPOPUPMENU", new Suffix <PopupMenu>(AddPopupMenu));
     AddSuffix("ADDHSLIDER", new OptionalArgsSuffix <Slider>(AddHSlider, new Structure [] { new ScalarDoubleValue(0), new ScalarDoubleValue(0), new ScalarDoubleValue(1) }));
     AddSuffix("ADDVSLIDER", new OptionalArgsSuffix <Slider>(AddVSlider, new Structure [] { new ScalarDoubleValue(0), new ScalarDoubleValue(0), new ScalarDoubleValue(1) }));
     AddSuffix("ADDHBOX", new Suffix <Box>(AddHBox));
     AddSuffix("ADDVBOX", new Suffix <Box>(AddVBox));
     AddSuffix("ADDHLAYOUT", new Suffix <Box>(AddHLayout));
     AddSuffix("ADDVLAYOUT", new Suffix <Box>(AddVLayout));
     AddSuffix("ADDSCROLLBOX", new Suffix <ScrollBox>(AddScrollBox));
     AddSuffix("ADDSTACK", new Suffix <Box>(AddStack));
     AddSuffix("ADDSPACING", new OptionalArgsSuffix <Spacing>(AddSpace, new Structure [] { new ScalarIntValue(-1) }));
     AddSuffix("ADDTIPDISPLAY", new OptionalArgsSuffix <Label>(AddTipDisplay, new Structure[] { new StringValue("") }));
     AddSuffix("WIDGETS", new Suffix <ListValue>(() => ListValue.CreateList(Widgets)));
     AddSuffix("RADIOVALUE", new Suffix <StringValue>(() => new StringValue(GetRadioValue())));
     AddSuffix("ONRADIOCHANGE", new SetSuffix <UserDelegate>(() => CallbackGetter(UserOnRadioChange), value => UserOnRadioChange = CallbackSetter(value)));
     AddSuffix("SHOWONLY", new OneArgsSuffix <Widget>(value => ShowOnly(value)));
     AddSuffix("CLEAR", new NoArgsVoidSuffix(Clear));
 }
예제 #9
0
        public static ListValue Construct(IEnumerable <global::Part> parts, SharedObjects shared)
        {
            var partList = parts.Select(part => Construct(part, shared)).ToList();

            return(ListValue.CreateList(partList));
        }
예제 #10
0
        public static ListValue Construct(IEnumerable <PartModule> modules, SharedObjects shared)
        {
            var list = modules.Select(mod => Construct(mod, shared)).ToList();

            return(ListValue.CreateList(list));
        }
예제 #11
0
 public static ListValue <PartValue> ConstructGeneric(IEnumerable <global::Part> parts, SharedObjects shared)
 {
     return(ListValue <PartValue> .CreateList(parts.Select(part => Construct(part, shared)).Where(p => p != null)));
 }