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 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; } } }
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); }
void DrawMainWindow(int windowID) { if (Macro == null) { return; } GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); LoadMacro |= GUILayout.Button("Load", Styles.active_button, GUILayout.ExpandWidth(false)); if (GUILayout.Button("New", Styles.open_button, GUILayout.ExpandWidth(false))) { EditMacro(null); } GUILayout.Space(20); if (GUILayout.Button(CFG.SelectedMacro != null && CFG.SelectedMacro.Name == Macro.Name? "Apply" : "Use", Styles.active_button, GUILayout.ExpandWidth(false))) { CFG.SelectedMacro = (TCAMacro)Macro.GetCopy(); } if (GUILayout.Button("Save to Vessel DB", Styles.active_button, GUILayout.ExpandWidth(false))) { CFG.Macros.SaveMacro(Macro, true); } if (GUILayout.Button("Save to Global DB", Styles.active_button, GUILayout.ExpandWidth(false))) { TCAScenario.SaveMacro(Macro); } GUILayout.FlexibleSpace(); exit |= GUILayout.Button("Exit", Styles.close_button, GUILayout.ExpandWidth(false)); GUILayout.EndHorizontal(); scroll = GUILayout.BeginScrollView(scroll, GUILayout.ExpandHeight(false)); Macro.Draw(); GUILayout.EndScrollView(); if (SelectingAction) { GUILayout.FlexibleSpace(); GUILayout.BeginVertical(Styles.white); GUILayout.Label("Select Action", Styles.enabled, GUILayout.ExpandWidth(true)); MacroNode action = null; GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); GUILayout.Label("Builtin", Styles.active, GUILayout.ExpandWidth(true)); if (Components.ActionSelector(out action)) { select_action(action); } GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("Current Vessel", Styles.active, GUILayout.ExpandWidth(true)); if (CFG.Macros.Selector(out action)) { select_action(action); } GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("Global Database", Styles.active, GUILayout.ExpandWidth(true)); if (TCAScenario.Macros.Selector(out action)) { select_action(action); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); if (GUILayout.Button("Cancel", Styles.close_button, GUILayout.ExpandWidth(true))) { SelectAction(null); } GUILayout.EndVertical(); } if (SelectingCondition) { GUILayout.FlexibleSpace(); GUILayout.BeginVertical(Styles.white); GUILayout.Label("Select Condition", Styles.enabled, GUILayout.ExpandWidth(true)); Condition cnd = null; if (Components.ConditionSelector(out cnd)) { if (cnd != null && condition_selected != null) { condition_selected(cnd); } SelectCondition(null); } if (GUILayout.Button("Cancel", Styles.close_button, GUILayout.ExpandWidth(true))) { SelectCondition(null); } GUILayout.EndVertical(); } if (LoadMacro) { GUILayout.FlexibleSpace(); TCAMacro macro; if (DrawMacroSelector(CFG, out macro)) { load_macro(macro); } } GUILayout.EndVertical(); TooltipsAndDragWindow(); }
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(); }