示例#1
0
        public void CreateGroup(MapLua.SaveLua.Army Army, MapLua.SaveLua.Army.UnitsGroup Grp, MapLua.SaveLua.Army.UnitsGroup Parent, Transform Pivot, bool Root = false)
        {
            if (Root)
            {
                Grp.Expanded = true;
            }

            GameObject     NewGroupObject = Instantiate(GroupPrefab, Pivot);
            UnitListObject ulo            = NewGroupObject.GetComponent <UnitListObject>();

            ulo.AddAction    = AddNewGroup;
            ulo.RemoveAction = RemoveGroup;
            ulo.SelectAction = SelectGroup;
            ulo.RenameAction = RenameStart;
            ulo.ExpandAction = ExpandAction;
            ulo.SetGroup(Army, Grp, Parent, Root);
            UnitGroups.Add(ulo);

            if (StoreSelection.Contains(Grp))
            {
                AddToGrpSelection(ulo);
            }

            GenerateGroups(Army, Grp, ulo);
        }
示例#2
0
        public void Generate()
        {
            Clear();

            var ScenarioData = MapLuaParser.Current.ScenarioLuaFile.Data;

            for (int c = 0; c < ScenarioData.Configurations.Length; c++)
            {
                for (int t = 0; t < ScenarioData.Configurations[c].Teams.Length; t++)
                {
                    for (int a = 0; a < ScenarioData.Configurations[c].Teams[t].Armys.Count; a++)
                    {
                        GameObject     NewGroupObject = Instantiate(GroupPrefab, Pivot);
                        UnitListObject ulo            = NewGroupObject.GetComponent <UnitListObject>();
                        ulo.GroupName.text = ScenarioData.Configurations[c].Teams[t].Armys[a].Data.Name;

                        UnitGroups.Add(ulo);

                        GenerateArmy(ScenarioData.Configurations[c].Teams[t].Armys[a], ulo);
                    }
                }
                for (int e = 0; e < ScenarioData.Configurations[c].ExtraArmys.Count; e++)
                {
                    GameObject     NewGroupObject = Instantiate(GroupPrefab, Pivot);
                    UnitListObject ulo            = NewGroupObject.GetComponent <UnitListObject>();
                    ulo.GroupName.text = ScenarioData.Configurations[c].ExtraArmys[e].Data.Name;

                    UnitGroups.Add(ulo);
                }
            }
        }
示例#3
0
        public void RenameGroup(UnitListObject parent)
        {
            string NewValue = NameInputField.text;

            if (parent.Source.Name == NewValue)
            {
                return;                 // No changes
            }
            if (parent.Source.UnitGroups.Count > 1)
            {
                HashSet <string> AllNames = new HashSet <string>();
                foreach (MapLua.SaveLua.Army.UnitsGroup ug in parent.Source.UnitGroups)
                {
                    AllNames.Add(ug.Name);
                }

                if (AllNames.Contains(NewValue))
                {
                    return;                     // Already exist
                }
            }

            RenameUndoApplyied = true;
            Undo.RegisterGroupChange(parent.Source);

            parent.Source.NoPrefixName = NewValue;
            Generate(true);
        }
示例#4
0
        public void PrefixChangeGroup(UnitListObject parent)
        {
            string OldPrefix = parent.Source.PrefixName;
            string NewValue  = PrefixInputField.text;

            if (OldPrefix == NewValue)
            {
                return;                 // No changes
            }
            if (!RenameUndoApplyied)
            {
                Undo.RegisterGroupChange(parent.Source);
            }

            if (!string.IsNullOrEmpty(OldPrefix))
            {
                ChangeAllPrefix(parent.Owner.Units, OldPrefix, NewValue);
                foreach (UnitListObject ulo in UnitGroups)
                {
                    ulo.GroupName.text = ulo.Source.Name;
                }
            }
            else
            {
                parent.Source.PrefixName = NewValue;
                parent.GroupName.text    = parent.Source.Name;
            }
        }
示例#5
0
        public void SelectGroup(UnitListObject parent)
        {
            ClearRename();
            if (Input.GetKey(KeyCode.LeftShift))
            {
                AddToGrpSelection(parent);
            }
            else if (Input.GetKey(KeyCode.LeftControl))
            {
                if (SelectedGroups.Contains(parent))
                {
                    RemoveFromGrpSelection(parent);
                }
                else
                {
                    AddToGrpSelection(parent);
                }
            }
            else
            {
                ClearGrpSelection();
                AddToGrpSelection(parent);
            }

            UpdateGroupSelection();
        }
示例#6
0
        public void RemoveGroup(UnitListObject parent, bool Forced = false)
        {
            if (parent == null || parent.IsRoot || parent.Parent == null)
            {
                return;
            }

            if (!Forced && (parent.Source.Units.Count > 0 || parent.Source.UnitGroups.Count > 0))
            {
                LastRemoveObject = parent;
                GenericPopup.ShowPopup(GenericPopup.PopupTypes.TwoButton, "Remove group", "Group " + parent.Source.Name + " is not empty!\nRemove it anyway?", "Yes", RemoveGroupYes, "No", null);
                return;
            }

            ClearRename();

            Undo.RegisterGroupRemove(parent.Parent);

            StoreSelection.Clear();
            StoreSelection = GetAllSelectedGroups();

            ClearGrpSelection();
            UpdateGroupSelection();


            parent.Source.ClearGroup(true);

            //parent.Parent.UnitGroups.Remove(parent.Source);
            parent.Parent.RemoveGroup(parent.Source);

            Generate(false);
        }
示例#7
0
        public void AddNewGroup(UnitListObject parent)
        {
            ClearRename();

            Undo.RegisterGroupRemove(parent.Source);

            ClearGrpSelection();
            UpdateGroupSelection();

            string NamePrefix = DefaultGroupName;
            int    NameCount  = 0;
            bool   found      = false;

            if (parent.IsRoot && parent.Source.UnitGroups.Count == 0)
            {
                NamePrefix = "INITIAL";
            }
            else if (parent.Source.UnitGroups.Count > 0)
            {
                HashSet <string> AllNames = new HashSet <string>();
                foreach (MapLua.SaveLua.Army.UnitsGroup ug in parent.Source.UnitGroups)
                {
                    AllNames.Add(ug.Name);
                }

                while (!found)
                {
                    if (!AllNames.Contains(NamePrefix + "_" + NameCount.ToString("00")))
                    {
                        found = true;
                        break;
                    }
                    else
                    {
                        NameCount++;
                    }
                }
                NamePrefix = DefaultGroupName + "_" + NameCount.ToString("00");
            }
            else
            {
                NamePrefix = DefaultGroupName + "_00";
            }


            MapLua.SaveLua.Army.UnitsGroup NewGroup = new MapLua.SaveLua.Army.UnitsGroup(parent.Source.Owner);
            NewGroup.Name = NamePrefix;

            //parent.Source.UnitGroups.Add(NewGroup);
            parent.Source.AddGroup(NewGroup);

            StoreSelection.Clear();
            StoreSelection.Add(NewGroup);


            Generate(false);
        }
示例#8
0
        public void SelectGroup(UnitListObject parent, bool onTitle)
        {
            ClearRename();
            if (Input.GetKey(KeyCode.LeftShift))
            {
                AddToGrpSelection(parent);
            }
            else if (Input.GetKey(KeyCode.LeftControl))
            {
                if (SelectedGroups.Contains(parent))
                {
                    RemoveFromGrpSelection(parent);
                }
                else
                {
                    AddToGrpSelection(parent);
                }
            }
            else
            {
                if (SelectedGroups.Count == 1 && SelectedGroups[0] == parent)
                {
                    if (!onTitle && Time.realtimeSinceStartup - LastClickTime < UnitListObject.DoubleClickTime)
                    {
                        SelectionManager.Current.CleanSelection();

                        List <UnitInstance> SelectedInstances = new List <UnitInstance>(128);

                        parent.Source.GetAllUnitInstances(ref SelectedInstances);

                        GameObject[] NewSelection = new GameObject[SelectedInstances.Count];

                        for (int i = 0; i < SelectedInstances.Count; i++)
                        {
                            NewSelection[i] = SelectedInstances[i].gameObject;
                        }

                        SelectionManager.Current.SelectObjects(NewSelection);
                    }
                }
                else
                {
                    ClearGrpSelection();
                    AddToGrpSelection(parent);
                }

                LastClickTime = Time.realtimeSinceStartup;
            }

            UpdateGroupSelection();
        }
示例#9
0
        public void RenameStart(UnitListObject parent)
        {
            ClearRename();

            RenameObject = parent;
            RenameField.SetParent(parent.transform, false);
            RenameField.gameObject.SetActive(true);
            RenameField.GetComponent <LayoutElement>().enabled = true;

            NameInputField.SetValue(parent.Source.NoPrefixName);
            PrefixInputField.SetValue(parent.Source.PrefixName);

            NameInputField.InputFieldUi.ActivateInputField();
        }
示例#10
0
        public void SelectGroupUnits(UnitListObject ulo, bool recursive = true)
        {
            List <UnitInstance> allUnits = new List <UnitInstance>();

            ulo.Source.GetAllUnitInstances(ref allUnits);

            int unitsCount = allUnits.Count;

            if (unitsCount == 0)
            {
                SelectionManager.Current.CleanSelection();
                return;
            }

            GameObject[] allUnitsGameObjects = new GameObject[unitsCount];
            for (int i = 0; i < unitsCount; i++)
            {
                allUnitsGameObjects[i] = allUnits[i].gameObject;
            }

            SelectionManager.Current.SelectObjectsInput(allUnitsGameObjects);
        }
示例#11
0
 public void GenerateArmy(MapLua.ScenarioLua.Army Army, UnitListObject ArmyGroup)
 {
 }
示例#12
0
        public void GenerateGroups(MapLua.SaveLua.Army Army, MapLua.SaveLua.Army.UnitsGroup Grp, UnitListObject ParentGrp)
        {
            int GrpCount = Grp.UnitGroups.Count;

            if (GrpCount == 0)
            {
                return;
            }

            foreach (MapLua.SaveLua.Army.UnitsGroup iGrp in Grp.UnitGroups)
            {
                CreateGroup(Army, iGrp, ParentGrp.Source, ParentGrp.Pivot);
            }
        }
示例#13
0
 static void RemoveFromGrpSelection(UnitListObject ulo)
 {
     SelectedGroups.Remove(ulo);
 }
示例#14
0
 static void AddToGrpSelection(UnitListObject ulo)
 {
     SelectedGroups.Add(ulo);
 }
示例#15
0
 public void ExpandAction(UnitListObject parent)
 {
 }
示例#16
0
 public void RemoveGroup(UnitListObject parent)
 {
     RemoveGroup(parent, false);
 }