示例#1
0
        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();
 }