public bool Selector(out TCAMacro macro) { var ret = false; macro = null; var del = new List <TCAMacro>(); scroll = GUILayout.BeginScrollView(scroll, Styles.white, GUILayout.Height(Globals.Instance.ActionListHeight)); GUILayout.BeginVertical(); for (int i = 0, count = DB.List.Count; i < count; i++) { var m = DB.List[i]; GUILayout.BeginHorizontal(); if (GUILayout.Button("X", Styles.danger_button, GUILayout.Width(20))) { del.Add(m); } if (GUILayout.Button(m.Name, Styles.normal_button, GUILayout.ExpandWidth(true))) { macro = (TCAMacro)m.GetCopy(); ret = true; } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); GUILayout.EndScrollView(); for (int i = 0, count = del.Count; i < count; i++) { DB.List.Remove(del[i]); } return(ret); }
public static bool DrawMacroSelector(VesselConfig cfg, out TCAMacro macro) { macro = null; TCAMacro sel = null; bool ret = false; GUILayout.BeginVertical(); GUILayout.Label("Load Macro form Library", Styles.enabled, GUILayout.ExpandWidth(true)); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); GUILayout.Label("Current Vessel", Styles.active, GUILayout.ExpandWidth(true)); if (cfg.Macros.Selector(out sel)) { ret = true; macro = sel; } GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("Global Database", Styles.active, GUILayout.ExpandWidth(true)); if (TCAScenario.Macros.Selector(out sel)) { ret = true; macro = sel; } GUILayout.EndVertical(); GUILayout.EndHorizontal(); ret |= GUILayout.Button("Cancel", Styles.close_button, GUILayout.ExpandWidth(true)); GUILayout.EndVertical(); return(ret); }
public override void Draw() { GUILayout.BeginHorizontal(); if (CFG.SelectedMacro != null && CFG.MacroIsActive) { GUILayout.Label(new GUIContent("Macro: " + CFG.SelectedMacro.Title, "The macro is executing..."), Styles.warning, GUILayout.ExpandWidth(true)); CFG.MacroIsActive &= !GUILayout.Button("Pause", Styles.enabled_button, GUILayout.Width(70)); if (GUILayout.Button("Stop", Styles.danger_button, GUILayout.ExpandWidth(false))) { CFG.StopMacro(); } GUILayout.Label("Edit", Styles.inactive_button, GUILayout.ExpandWidth(false)); } else if (CFG.SelectedMacro != null) { if (GUILayout.Button(new GUIContent("Macro: " + CFG.SelectedMacro.Title, "Select a macro from databases"), Styles.normal_button, GUILayout.ExpandWidth(true))) { selecting_macro = !selecting_macro; } CFG.MacroIsActive |= GUILayout.Button(CFG.SelectedMacro.Active? "Resume" : "Execute", Styles.active_button, GUILayout.Width(70)); if (GUILayout.Button("Stop", CFG.SelectedMacro.Active? Styles.danger_button : Styles.inactive_button, GUILayout.ExpandWidth(false))) { CFG.SelectedMacro.Rewind(); } if (GUILayout.Button("Edit", Styles.active_button, GUILayout.ExpandWidth(false))) { TCAMacroEditor.Edit(CFG); } } else { if (GUILayout.Button("Select Macro", Styles.normal_button, GUILayout.ExpandWidth(true))) { selecting_macro = !selecting_macro; } if (GUILayout.Button("New Macro", Styles.open_button, GUILayout.ExpandWidth(false))) { TCAMacroEditor.Edit(CFG); } } GUILayout.EndHorizontal(); if (selecting_macro) { TCAMacro macro = null; if (TCAMacroEditor.DrawMacroSelector(CFG, out macro)) { if (macro != null) { CFG.SelectedMacro = macro.GetCopy() as TCAMacro; CFG.MacroIsActive = false; } selecting_macro = false; } } }
public static void SaveMacro(TCAMacro macro) { Macros.SaveMacro(macro, true); var node = new ConfigNode(); Macros.Save(node); node.Save(Globals.Instance.PluginFolder(MACROSNAME)); }
void load_macro(TCAMacro macro) { if (macro != null) { EditMacro(macro); } LoadMacro = false; }
public override void Load(ConfigNode node) { LoadedConfig = node; base.Load(node); var val = node.GetValue(Utils.PropertyName(new { VesselID })); if (!string.IsNullOrEmpty(val)) { VesselID = new Guid(val); } var mcn = node.GetNode("ModuleConfigs"); if (mcn != null) { ModuleConfigs.Clear(); foreach (var n in mcn.GetNodes()) { ModuleConfigs.Add(n.name, n); } } Waypoints.Clear(); var wpn = node.GetNode("Waypoints"); if (wpn == null) { wpn = node; //deprecated: Old config conversion } foreach (var n in wpn.GetNodes(WayPoint.NODE_NAME)) { Waypoints.Enqueue(ConfigNodeObject.FromConfig <WayPoint>(n)); } if (Anchor != null && string.IsNullOrEmpty(Anchor.Name)) { Anchor = null; } if (Target != null && string.IsNullOrEmpty(Target.Name)) { Target = null; } if (SelectedMacro != null && !SelectedMacro.Block.HasSubnodes) { SelectedMacro = null; } //deprecated: Old config conversion val = node.GetValue("VSControlSensitivity"); if (!string.IsNullOrEmpty(val)) { if (!float.TryParse(val, out ControlSensitivity)) { ControlSensitivity = 0.01f; } } }
public override void Load(ConfigNode node) { LoadedConfig = node; base.Load(node); //restore vessel ID var val = node.GetValue(Utils.PropertyName(new { VesselID })); if (!string.IsNullOrEmpty(val)) { VesselID = new Guid(val); } //restore module configs var mcn = node.GetNode("ModuleConfigs"); if (mcn != null) { ModuleConfigs.Clear(); foreach (var n in mcn.GetNodes()) { ModuleConfigs.Add(n.name, n); } } //deprecated: old config conversion var path = node.GetNode("Waypoints"); if (path != null) { Path.Load(path); } /////////////////////////////////// //initialize saved waypoints if (Anchor != null && string.IsNullOrEmpty(Anchor.Name)) { Anchor = null; } if (Target != null && string.IsNullOrEmpty(Target.Name)) { Target = null; } //initialize saved selected macro if (SelectedMacro != null && !SelectedMacro.Block.HasSubnodes) { SelectedMacro = null; } //FIXME: have to save/load HashSet manually until Squad fixes http://bugs.kerbalspaceprogram.com/issues/13670 var parts_node = node.GetNode("EnabledTCAParts"); if (parts_node != null) { EnabledTCAParts.Clear(); parts_node.GetValues().ForEach(pname => EnabledTCAParts.Add(pname)); } }
public bool Selector(out MacroNode macro) { macro = null; TCAMacro m = null; if (Selector(out m)) { macro = m; return(true); } return(false); }
void Update() { if (exit) { CFG = null; Macro = null; SelectAction(null); SelectCondition(null); Show(false); exit = false; } }
public void SaveMacro(TCAMacro macro, bool overwrite = false) { var old_macro = DB.List.FindIndex(m => m.Name == macro.Name); if (old_macro < 0) { DB.Add((TCAMacro)macro.GetCopy()); DB.List.Sort((a, b) => a.Name.CompareTo(b.Name)); } else if (overwrite) { DB[old_macro] = (TCAMacro)macro.GetCopy(); } }
static void EditMacro(TCAMacro macro) { Components.UpdateAvailableComponents(CFG); if (macro == null) { Macro = new TCAMacro(); Macro.Name = "Empty Macro"; } else { Macro = (TCAMacro)macro.GetCopy(); } Macro.SetCFG(CFG); Macro.SetSelector(SelectAction); Macro.SetConditionSelector(SelectCondition); Macro.Edit = true; ShowInstance(true); }
public bool Remove(TCAMacro macro) { return(DB.List.Remove(macro)); }
public bool Selector(out TCAMacro macro) { var ret = false; macro = null; var del = new List<TCAMacro>(); scroll = GUILayout.BeginScrollView(scroll, Styles.white, GUILayout.Height(Globals.Instance.ActionListHeight)); GUILayout.BeginVertical(); for(int i = 0, count = DB.List.Count; i < count; i++) { var m = DB.List[i]; GUILayout.BeginHorizontal(); if(GUILayout.Button("X", Styles.danger_button, GUILayout.Width(20))) del.Add(m); if(GUILayout.Button(m.Name, Styles.normal_button, GUILayout.ExpandWidth(true))) { macro = (TCAMacro)m.GetCopy(); ret = true; } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); GUILayout.EndScrollView(); for(int i = 0, count = del.Count; i < count; i++) DB.List.Remove(del[i]); return ret; }
public void SaveMacro(TCAMacro macro, bool overwrite = false) { var old_macro = DB.List.FindIndex(m => m.Name == macro.Name); if(old_macro < 0) { DB.Add((TCAMacro)macro.GetCopy()); DB.List.Sort((a,b) => a.Name.CompareTo(b.Name)); } else if(overwrite) DB[old_macro] = (TCAMacro)macro.GetCopy(); }
public bool Remove(TCAMacro macro) { return DB.List.Remove(macro); }