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); }
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); }
public void Generate(bool HoldSelection = true) { if (HoldSelection) { StoreSelection.Clear(); StoreSelection = GetAllSelectedGroups(); } 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++) { CreateGroup(ScenarioData.Configurations[c].Teams[t].Armys[a].Data, ScenarioData.Configurations[c].Teams[t].Armys[a].Data.Units, null, Pivot, true); } } for (int e = 0; e < ScenarioData.Configurations[c].ExtraArmys.Count; e++) { CreateGroup(ScenarioData.Configurations[c].ExtraArmys[e].Data, ScenarioData.Configurations[c].ExtraArmys[e].Data.Units, null, Pivot, true); } } UpdateGroupSelection(); }
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); }