Esempio n. 1
0
        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;
         }
     }
 }
Esempio n. 4
0
        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));
            }
        }
Esempio n. 8
0
        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;
     }
 }
Esempio n. 10
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();
            }
        }
 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 static void SaveMacro(TCAMacro macro)
 {
     Macros.SaveMacro(macro, true);
     var node = new ConfigNode();
     Macros.Save(node);
     node.Save(Globals.Instance.PluginFolder(MACROSNAME));
 }
Esempio n. 13
0
 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);
 }