Esempio n. 1
0
        protected override TreeViewItem BuildRoot()
        {
            TreeViewItem root = new TreeViewItem(-9999, -1);
            IReadonlyListX <ShipTypeGroup> shipTypes = GameDatabase.ActiveInstance.GetAssetList <ShipTypeGroup>();

            for (int i = 0; i < shipTypes.Count; i++)
            {
                ShipTypeGroupItem item = new ShipTypeGroupItem(i, shipTypes[i]);
                root.AddChild(item);
                if (shipTypes[i].ships == null)
                {
                    shipTypes[i].ships = new List <ShipType>();
                }
                for (int j = 0; j < shipTypes[i].ships.Count; j++)
                {
                    ShipType shipType = shipTypes[i].ships[j];
                    item.AddChild(new ShipTypeItem(j, shipType));
                }
            }

            if (root.children == null)
            {
                root.children = new List <TreeViewItem>();
            }

            SetupDepthsFromParentsAndChildren(root);
            return(root);
        }
Esempio n. 2
0
        protected override void SelectionChanged(IList <int> selectedIds)
        {
            int               id            = selectedIds.Count > 0 ? selectedIds[0] : -1;
            TreeViewItem      item          = FindItem(id, rootItem);
            ShipTypeGroupItem typeGroupItem = item as ShipTypeGroupItem;
            ShipTypeItem      shipItem      = item as ShipTypeItem;

            selectionChanged?.Invoke(new ShipTreeViewSelection(typeGroupItem?.shipTypeGroup, shipItem?.shipType));
        }
Esempio n. 3
0
        protected override void ContextClickedItem(int id)
        {
            GenericMenu  menu = new GenericMenu();
            TreeViewItem item = FindItem(id, rootItem);

            Debug.Assert(item != null, "item != null");

            ShipTypeGroupItem typeGroupItem = item as ShipTypeGroupItem;

            if (typeGroupItem != null)
            {
                menu.AddItem(new GUIContent("Create Ship Group"), false, () => {
                    SetDataRebuildAndSelect(GameDatabase.ActiveInstance.CreateAsset <ShipTypeGroup>().id);
                });
                menu.AddItem(new GUIContent("Create Ship Type"), false, () => {
                    ShipType shipType = GameDatabase.ActiveInstance.CreateAsset <ShipType>();
                    GameDatabase.ActiveInstance.FindAsset <ShipTypeGroup>(typeGroupItem.shipTypeGroup.id).ships.Add(shipType);
                    SetDataRebuildAndSelect(shipType.id);
                });
                menu.AddSeparator(string.Empty);
                menu.AddItem(new GUIContent($"Delete Ship Group {typeGroupItem.displayName}"), false, () => {
                    GameDatabase.ActiveInstance.DestroyAsset(typeGroupItem.shipTypeGroup);
                    SetDataRebuildAndSelect();
                });
            }
            else if (item is ShipTypeItem)
            {
                menu.AddItem(new GUIContent("Create Ship Type"), false, () => {
                    ShipType shipType = GameDatabase.ActiveInstance.CreateAsset <ShipType>();
                    GameDatabase.ActiveInstance.FindAsset <ShipTypeGroup>(((ShipTypeItem)item).shipType.id).ships.Add(shipType);
                    SetDataRebuildAndSelect(shipType.id);
                });
                menu.AddSeparator(string.Empty);
                menu.AddItem(new GUIContent($"Delete Ship Type {item.displayName}"), false, () => {
                    GameDatabase.ActiveInstance.DestroyAsset(((ShipTypeItem)item).shipType);
                    SetDataRebuildAndSelect();
                });
            }
            menu.ShowAsContext();
            Event.current.Use();
        }