예제 #1
0
        public void UpdateDisplayItem(Gate gate)
        {
            _currentGate = gate;

            UpdateItemPopupDrawer(gate.Type);

            if (_allowSubgates)
            {
                gate.RefreshSubGates();
                _subGateListAdaptor = new GenericClassListAdaptor <Gate>(gate.SubGates, 20,
                                                                         () => { return(new Gate()); },
                                                                         (position, subGate, index) =>
                {
                    if (index < _subGatesDrawers.Count)
                    {
                        _subGatesDrawers[index].Draw(new Rect(position.x + 10, position.y, position.width * 0.5f, position.height), subGate);
                    }
                    return(subGate);
                },
                                                                         (subGate) =>
                {
                    if (_subGatesDrawers.Count > 0)
                    {
                        return(_subGatesDrawers[0].CalculateHeight(subGate));
                    }
                    return(20);
                });
            }
        }
예제 #2
0
        private void OnRemoveMission(object sender, ItemRemovingEventArgs args)
        {
            GenericClassListAdaptor <Mission> listAdaptor = args.adaptor as GenericClassListAdaptor <Mission>;
            Mission mission = listAdaptor[args.itemIndex];

            if (listAdaptor != null)
            {
                if (EditorUtility.DisplayDialog("Confirm to delete",
                                                "Confirm to delete mission [" + mission.ID + "]?", "OK", "Cancel"))
                {
                    args.Cancel = false;
                    GameKit.Config.UpdateMapsAndTree();
                    GameKitEditorWindow.GetInstance().Repaint();

                    MissionTreeExplorer missionTreeExplorer = GameKitEditorWindow.GetInstance().GetTreeExplorer(
                        GameKitEditorWindow.TabType.Missions) as MissionTreeExplorer;
                    if (missionTreeExplorer.CurrentSelectedItem == mission)
                    {
                        missionTreeExplorer.SelectItem(null);
                    }
                }
                else
                {
                    args.Cancel = true;
                }
            }
        }
예제 #3
0
 protected override void DoOnExplorerSelectionChange(IItem item)
 {
     if (item == null)
     {
         _currentWorldOfMission = null;
     }
     else if (item is Mission)
     {
         Mission mission = item as Mission;
         _currentWorldOfMission = GameKit.Config.FindWorldThatMissionBelongsTo(mission);
         _gateDrawer.UpdateDisplayItem(mission.Gate);
         _listAdaptor = new GenericClassListAdaptor <Reward>((item as Mission).Rewards, 18,
                                                             () =>
         {
             return(new Reward());
         },
                                                             (rect, reward, index) =>
         {
             RewardPropertyView.Draw(rect, reward);
             return(reward);
         },
                                                             (reward) =>
         {
             return(RewardPropertyView.CalculateHeight(reward));
         });
     }
 }
예제 #4
0
        private void OnRemoveSubGate(object sender, ItemRemovingEventArgs args)
        {
            GenericClassListAdaptor <Gate> listAdaptor = args.adaptor as GenericClassListAdaptor <Gate>;
            Gate gate = listAdaptor[args.itemIndex];

            (_currentGate as Gate).SubGatesID.Remove(gate.ID);
            GameKit.Config.SubGates.Remove(gate);
            GameKit.Config.UpdateMapsAndTree();
            UpdateSubGatesPopupDrawers();
        }
예제 #5
0
        protected override void DoOnExplorerSelectionChange(IItem item)
        {
            World world = item as World;

            if (world == null)
            {
                return;
            }

            _gateView.UpdateDisplayItem(world.Gate);

            world.RefreshSubWorlds();
            _subWorldListAdaptor = new GenericClassListAdaptor <World>(world.SubWorlds, 20,
                                                                       () => { return(new World()); },
                                                                       (position, theItem, index) =>
            {
                var size = GUI.skin.GetStyle("label").CalcSize(new GUIContent(theItem.ID));
                GUI.Label(new Rect(position.x, position.y, size.x, position.height), theItem.ID);
                if (GUI.Button(new Rect(position.x + size.x + 10, position.y, 50, position.height), "Edit"))
                {
                    _treeExplorer.SelectItem(theItem);
                }
                return(theItem);
            });
            _scoreListAdaptor = new GenericClassListAdaptor <Score>(world.Scores, 20,
                                                                    () => { return(new Score()); },
                                                                    (position, theItem, index) =>
            {
                var size = GUI.skin.GetStyle("label").CalcSize(new GUIContent(theItem.ID));
                GUI.Label(new Rect(position.x, position.y, size.x, position.height), theItem.ID);
                if (GUI.Button(new Rect(position.x + size.x + 10, position.y, 50, position.height), "Edit"))
                {
                    ScoreTreeExplorer scoreTreeExplorer = (GameKitEditorWindow.GetInstance().GetTreeExplorer(
                                                               GameKitEditorWindow.TabType.Scores) as ScoreTreeExplorer);
                    GameKitEditorWindow.GetInstance().SelectTab(GameKitEditorWindow.TabType.Scores);
                    scoreTreeExplorer.SelectItem(theItem);
                }
                return(theItem);
            });
            _missionListAdaptor = new GenericClassListAdaptor <Mission>(world.Missions, 20,
                                                                        () => { return(new Mission()); },
                                                                        (position, theItem, index) =>
            {
                var size = GUI.skin.GetStyle("label").CalcSize(new GUIContent(theItem.ID));
                GUI.Label(new Rect(position.x, position.y, size.x, position.height), theItem.ID);
                if (GUI.Button(new Rect(position.x + size.x + 10, position.y, 50, position.height), "Edit"))
                {
                    MissionTreeExplorer missionTreeExplorer = (GameKitEditorWindow.GetInstance().GetTreeExplorer(
                                                                   GameKitEditorWindow.TabType.Missions) as MissionTreeExplorer);
                    GameKitEditorWindow.GetInstance().SelectTab(GameKitEditorWindow.TabType.Missions);
                    missionTreeExplorer.SelectItem(theItem);
                }
                return(theItem);
            });
        }
예제 #6
0
        public void UpdateDisplayItem(PurchasableItem item)
        {
            _currentPurchasableItem = item;
            if (item != null)
            {
                _listAdaptor = new GenericClassListAdaptor <Purchase>(item.PurchaseInfo, 18,
                                                                      CreatePurchase, DrawOnePurchase);

                UpdatePurchasePopupDrawers();
            }
        }
예제 #7
0
        public void UpdateDisplayItem(VirtualItemPack pack)
        {
            _currentDisplayedPack = pack;
            if (pack != null)
            {
                _listAdaptor = new GenericClassListAdaptor <PackElement>(pack.PackElements, 18,
                                                                         CreatePackElement, DrawPackElement);

                UpdateItemPopupDrawers();
            }
        }
예제 #8
0
        private void OnInsertUpgradeItem(object sender, ItemInsertedEventArgs args)
        {
            int    upgradeIndex = args.itemIndex + 1;
            string suffix       = upgradeIndex < 10 ? "00" + upgradeIndex :
                                  upgradeIndex < 100 ? "0" + upgradeIndex : upgradeIndex.ToString();
            GenericClassListAdaptor <UpgradeItem> listAdaptor = args.adaptor as GenericClassListAdaptor <UpgradeItem>;
            UpgradeItem upgradeItem = listAdaptor[args.itemIndex];

            upgradeItem.ID            = string.Format("{0}-upgrade{1}", _currentDisplayItem.ID, suffix);
            upgradeItem.RelatedItemID = _currentDisplayItem.ID;
            GameKit.Config.Upgrades.Add(upgradeItem);
            GameKit.Config.UpdateMapsAndTree();
            (_treeExplorer as VirtualItemsTreeExplorer).OnVirtualItemUpgradesChange(_currentDisplayItem as VirtualItem);
        }
예제 #9
0
        private void OnInsertSubworld(object sender, ItemInsertedEventArgs args)
        {
            GenericClassListAdaptor <World> listAdaptor = args.adaptor as GenericClassListAdaptor <World>;
            World world = listAdaptor[args.itemIndex];

            (_currentDisplayItem as World).SubWorldsID.Add(world.ID);
            GameKit.Config.Worlds.Add(world);
            GameKit.Config.UpdateMapsAndTree();
            (_treeExplorer as WorldTreeExplorer).AddWorld(world);
            ScoreTreeExplorer scoreTreeExplorer = (GameKitEditorWindow.GetInstance().GetTreeExplorer(
                                                       GameKitEditorWindow.TabType.Scores) as ScoreTreeExplorer);

            scoreTreeExplorer.AddWorld(world);
        }
예제 #10
0
        public VirtualItemsTreeExplorer()
        {
            _virtualCurrencyListAdaptor = new GenericClassListAdaptor <VirtualCurrency>(GameKit.Config.VirtualCurrencies, 20,
                                                                                        () => { return(new VirtualCurrency()); },
                                                                                        DrawItem <VirtualCurrency>);
            _virtualCurrencyListControl = new ReorderableListControl(ReorderableListFlags.DisableDuplicateCommand);
            _virtualCurrencyListControl.ItemRemoving += OnItemRemoving <VirtualCurrency>;
            _virtualCurrencyListControl.ItemInserted += OnItemInsert <VirtualCurrency>;

            _singleuseItemListAdaptor = new GenericClassListAdaptor <SingleUseItem>(GameKit.Config.SingleUseItems, 20,
                                                                                    () => { return(new SingleUseItem()); },
                                                                                    DrawItem <SingleUseItem>);
            _singleuseItemListControl = new ReorderableListControl(ReorderableListFlags.DisableDuplicateCommand);
            _singleuseItemListControl.ItemRemoving += OnItemRemoving <SingleUseItem>;
            _singleuseItemListControl.ItemInserted += OnItemInsert <SingleUseItem>;

            _lifetimeItemListAdaptor = new GenericClassListAdaptor <LifeTimeItem>(GameKit.Config.LifeTimeItems, 20,
                                                                                  () => { return(new LifeTimeItem()); },
                                                                                  DrawItem <LifeTimeItem>);
            _lifetimeItemListControl = new ReorderableListControl(ReorderableListFlags.DisableDuplicateCommand);
            _lifetimeItemListControl.ItemRemoving += OnItemRemoving <LifeTimeItem>;
            _lifetimeItemListControl.ItemInserted += OnItemInsert <LifeTimeItem>;

            _packListAdaptor = new GenericClassListAdaptor <VirtualItemPack>(GameKit.Config.ItemPacks, 20,
                                                                             () => { return(new VirtualItemPack()); },
                                                                             DrawItem <VirtualItemPack>);
            _packListControl = new ReorderableListControl(ReorderableListFlags.DisableDuplicateCommand);
            _packListControl.ItemRemoving += OnItemRemoving <VirtualItemPack>;
            _packListControl.ItemInserted += OnItemInsert <VirtualItemPack>;

            _categoryListAdaptor = new GenericClassListAdaptor <VirtualCategory>(GameKit.Config.Categories, 20,
                                                                                 () => { return(new VirtualCategory()); },
                                                                                 DrawItem <VirtualCategory>);
            _categoryListControl = new ReorderableListControl(ReorderableListFlags.DisableDuplicateCommand);
            _categoryListControl.ItemInserted += OnItemInsert <VirtualCategory>;
            _categoryListControl.ItemRemoving += OnItemRemoving <VirtualCategory>;

            _upgradesListAdaptors = new Dictionary <VirtualItem, UpgradeItemListAdaptor>();
            _upgradesListControls = new Dictionary <VirtualItem, ReorderableListControl>();
            foreach (var item in GameKit.Config.VirtualItems)
            {
                AddUpgradeListForItem(item);
            }
        }
예제 #11
0
        private void OnItemInsert <T>(object sender, ItemInsertedEventArgs args) where T : SerializableItem
        {
            GenericClassListAdaptor <T> listAdaptor = args.adaptor as GenericClassListAdaptor <T>;

            if (listAdaptor != null)
            {
                if (listAdaptor[args.itemIndex] is UpgradeItem)
                {
                    int    upgradeIndex = args.itemIndex + 1;
                    string suffix       = upgradeIndex < 10 ? "00" + upgradeIndex :
                                          upgradeIndex < 100 ? "0" + upgradeIndex : upgradeIndex.ToString();
                    UpgradeItem upgradeItem = (listAdaptor[args.itemIndex] as UpgradeItem);
                    upgradeItem.RelatedItemID = (listAdaptor[0] as UpgradeItem).RelatedItemID;
                    upgradeItem.ID            = string.Format("{0}-upgrade{1}", upgradeItem.RelatedItemID, suffix);
                    GameKit.Config.Upgrades.Add(upgradeItem);
                }
                SelectItem(listAdaptor[args.itemIndex]);
                GameKitEditorWindow.GetInstance().Repaint();
            }
        }
예제 #12
0
        private void OnRemoveUpgradeItem(object sender, ItemRemovingEventArgs args)
        {
            GenericClassListAdaptor <UpgradeItem> listAdaptor = args.adaptor as GenericClassListAdaptor <UpgradeItem>;
            UpgradeItem upgradeItem = listAdaptor[args.itemIndex];

            if (listAdaptor != null)
            {
                if (EditorUtility.DisplayDialog("Confirm to delete",
                                                "Confirm to delete upgrade [" + upgradeItem.ID + "]?", "OK", "Cancel"))
                {
                    args.Cancel = false;
                    GameKit.Config.Upgrades.Remove(upgradeItem);
                    GameKit.Config.UpdateMapsAndTree();
                    (_treeExplorer as VirtualItemsTreeExplorer).OnVirtualItemUpgradesChange(_currentDisplayItem as VirtualItem);
                }
                else
                {
                    args.Cancel = true;
                }
            }
        }
예제 #13
0
        private void OnRemoveScore(object sender, ItemRemovingEventArgs args)
        {
            GenericClassListAdaptor <Score> listAdaptor = args.adaptor as GenericClassListAdaptor <Score>;
            Score score = listAdaptor[args.itemIndex];

            if (listAdaptor != null)
            {
                ScorePropertyInspector scoreInspector = GameKitEditorWindow.GetInstance().GetPropertyInsepctor(
                    GameKitEditorWindow.TabType.Scores) as ScorePropertyInspector;
                IItem[] items = scoreInspector.GetAffectedItems(score.ID);
                if (items.Length > 0)
                {
                    EditorUtility.DisplayDialog("Warning", "Not allowed to delete becase the item is still used by following items: " +
                                                scoreInspector.GetAffectedItemsWarningString(items), "OK");
                    args.Cancel = true;
                }
                else
                {
                    if (EditorUtility.DisplayDialog("Confirm to delete",
                                                    "Confirm to delete score [" + score.ID + "]?", "OK", "Cancel"))
                    {
                        args.Cancel = false;
                        GameKit.Config.UpdateMapsAndTree();
                        GameKitEditorWindow.GetInstance().Repaint();

                        ScoreTreeExplorer scoreTreeExplorer = GameKitEditorWindow.GetInstance().GetTreeExplorer(
                            GameKitEditorWindow.TabType.Scores) as ScoreTreeExplorer;
                        if (scoreTreeExplorer.CurrentSelectedItem == score)
                        {
                            scoreTreeExplorer.SelectItem(null);
                        }
                    }
                    else
                    {
                        args.Cancel = true;
                    }
                }
            }
        }
예제 #14
0
        private void OnItemRemoving <T>(object sender, ItemRemovingEventArgs args) where T : SerializableItem
        {
            GenericClassListAdaptor <T> listAdaptor = args.adaptor as GenericClassListAdaptor <T>;
            T item = listAdaptor[args.itemIndex];

            if (listAdaptor != null)
            {
                VirtualItemsPropertyInspector virtualItemInspector = GameKitEditorWindow.GetInstance().GetPropertyInsepctor(
                    GameKitEditorWindow.TabType.VirtualItems) as VirtualItemsPropertyInspector;
                IItem[] items = virtualItemInspector.GetAffectedItems(item.ID);
                if (items.Length > 0)
                {
                    EditorUtility.DisplayDialog("Warning", "Not allowed to delete becase the item is still used by following items: " +
                                                virtualItemInspector.GetAffectedItemsWarningString(items), "OK");
                    args.Cancel = true;
                }
                else
                {
                    if (EditorUtility.DisplayDialog("Confirm to delete",
                                                    "Confirm to delete item [" + item.ID + "]?", "OK", "Cancel"))
                    {
                        args.Cancel = false;

                        if (item is UpgradeItem)
                        {
                            GameKit.Config.Upgrades.Remove((item as UpgradeItem));
                        }

                        SelectItem(null);
                        GameKitEditorWindow.GetInstance().Repaint();
                    }
                    else
                    {
                        args.Cancel = true;
                    }
                }
            }
        }
예제 #15
0
        private void OnRemoveSubworld(object sender, ItemRemovingEventArgs args)
        {
            GenericClassListAdaptor <World> listAdaptor = args.adaptor as GenericClassListAdaptor <World>;
            World world = listAdaptor[args.itemIndex];

            if (listAdaptor != null)
            {
                IItem[] items = GetAffectedItems(world.ID);
                if (items.Length > 0)
                {
                    EditorUtility.DisplayDialog("Warning", "Not allowed to delete becase the item is still used by following items: " +
                                                GetAffectedItemsWarningString(items), "OK");
                    args.Cancel = true;
                }
                else
                {
                    if (EditorUtility.DisplayDialog("Confirm to delete",
                                                    "Confirm to delete world [" + world.ID + "]?", "OK", "Cancel"))
                    {
                        args.Cancel = false;

                        (_currentDisplayItem as World).SubWorldsID.Remove(world.ID);
                        RemoveSubWorldAndSubGateRecursivity(world);

                        (_treeExplorer as WorldTreeExplorer).RemoveWorld(world);
                        ScoreTreeExplorer scoreTreeExplorer = (GameKitEditorWindow.GetInstance().GetTreeExplorer(
                                                                   GameKitEditorWindow.TabType.Scores) as ScoreTreeExplorer);
                        scoreTreeExplorer.RemoveWorld(world);
                        GameKit.Config.UpdateMapsAndTree();
                        GameKitEditorWindow.GetInstance().Repaint();
                    }
                    else
                    {
                        args.Cancel = true;
                    }
                }
            }
        }
예제 #16
0
 public void UpdateDisplayItem(VirtualCategory category)
 {
     _currentCategory         = category;
     _categoryItemListAdaptor = new GenericClassListAdaptor <string>(category.ItemIDs, 20, null, DrawItemInCategory);
     UpdateItemsWithoutCategory();
 }