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)); }
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; }
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()); }
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); }
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); }
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)); }
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)); }
public static ListValue Construct(IEnumerable <global::Part> parts, SharedObjects shared) { var partList = parts.Select(part => Construct(part, shared)).ToList(); return(ListValue.CreateList(partList)); }
public static ListValue Construct(IEnumerable <PartModule> modules, SharedObjects shared) { var list = modules.Select(mod => Construct(mod, shared)).ToList(); return(ListValue.CreateList(list)); }
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))); }