//not in used
        void ConfigureSpawnItemList()
        {
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField(new GUIContent("Spawn Item List:", ""), GUILayout.MaxWidth(100), GUILayout.ExpandWidth(true));
            if (GUILayout.Button("+", GUILayout.Width(40), GUILayout.MaxHeight(14)))
            {
                instance.spawnItemList.Add(new CollectibleSpawnInfo());
            }
            if (GUILayout.Button("-", GUILayout.Width(40), GUILayout.MaxHeight(14)))
            {
                instance.spawnItemList.RemoveAt(instance.spawnItemList.Count - 1);
            }
            EditorGUILayout.EndHorizontal();

            //~ EditorGUILayout.BeginHorizontal();
            //~ SpaceH(20);
            //~ EditorGUILayout.LabelField("Item", GUILayout.Width(130));
            //~ EditorGUILayout.LabelField("chance", GUILayout.Width(50));
            //~ EditorGUILayout.LabelField("cd:", GUILayout.Width(30));
            //~ EditorGUILayout.EndHorizontal();

            for (int i = 0; i < instance.spawnItemList.Count; i++)
            {
                CollectibleSpawnInfo spInfo = instance.spawnItemList[i];

                EditorGUILayout.BeginHorizontal();
                //~ EditorGUILayout.LabelField("  -", GUILayout.MaxWidth(25));

                SpaceH(10);

                int itemIdx = spInfo.item != null?TDSEditor.GetCollectibleIndex(spInfo.item.ID) : 0;

                EditorGUILayout.LabelField("-", GUILayout.MaxWidth(10));
                itemIdx = EditorGUILayout.Popup(itemIdx, collectibleLabel, GUILayout.Width(130));
                if (itemIdx == 0)
                {
                    spInfo.item = null;
                }
                else if (itemIdx > 0)
                {
                    spInfo.item = collectibleDB.collectibleList[itemIdx - 1];
                }

                spInfo.chance = EditorGUILayout.FloatField(spInfo.chance, GUILayout.Width(30));
                //SpaceH(10);
                spInfo.cooldown = EditorGUILayout.FloatField(spInfo.cooldown, GUILayout.Width(30));
                //~ spInfo.currentCD=EditorGUILayout.FloatField(spInfo.currentCD, GUILayout.Width(30));

                EditorGUILayout.EndHorizontal();
            }
        }
Ejemplo n.º 2
0
        void DrawObjective(ObjectiveTracker objective)
        {
            if (objective == null)
            {
                return;
            }


            EditorGUILayout.Space();


            //cont=new GUIContent("Main Objective:", "Check if this is the main objective of the level. Completing this will end the level");
            //objective.mainObjective=EditorGUILayout.Toggle(cont, objective.mainObjective);

            cont = new GUIContent("Wait For Timer:", "Enable to wait for the timer to run out before trigger a level complete state");
            objective.waitForTimer = EditorGUILayout.Toggle(cont, objective.waitForTimer);


            EditorGUILayout.Space();


            cont = new GUIContent("EnableTargetScore:", "Check if the objective is to gain a certain amount of score");
            objective.enableScoring = EditorGUILayout.Toggle(cont, objective.enableScoring);

            cont = new GUIContent("Target Score:", "The target score the player needs to gain to complete the objective");
            if (objective.enableScoring)
            {
                objective.targetScore = EditorGUILayout.FloatField(cont, objective.targetScore);
            }
            else
            {
                EditorGUILayout.LabelField(cont, new GUIContent("-", ""));
            }


            EditorGUILayout.Space();


            cont = new GUIContent("Clear All Hostile:", "Check if all active hostile unit in the level has to be destroyed before the objective is completed");
            objective.clearAllHostile = EditorGUILayout.Toggle(cont, objective.clearAllHostile);

            if (!objective.clearAllHostile)
            {
                cont         = new GUIContent("Unit List:", "Unit in the scene that need to be destroyed to complete the objective");
                showUnitList = EditorGUILayout.Foldout(showUnitList, cont);
                if (showUnitList)
                {
                    int count = objective.unitList.Count;

                    EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(15));
                    count = EditorGUILayout.IntField("Count", count);
                    EditorGUILayout.EndHorizontal();

                    while (count > objective.unitList.Count)
                    {
                        objective.unitList.Add(null);
                    }
                    while (count < objective.unitList.Count)
                    {
                        objective.unitList.RemoveAt(objective.unitList.Count - 1);
                    }

                    for (int i = 0; i < objective.unitList.Count; i++)
                    {
                        EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(20));
                        objective.unitList[i] = (Unit)EditorGUILayout.ObjectField("Element " + i, objective.unitList[i], typeof(Unit), true);
                        EditorGUILayout.EndHorizontal();
                    }
                }
            }


            EditorGUILayout.Space();


            //public List<Collectible> collectibleList=new List<Collectible>();	//collectible that exist in the scene
            cont = new GUIContent("Collectible List:", "Collectible item in the scene that need to be collected to complete the objective");
            showCollectibleList = EditorGUILayout.Foldout(showCollectibleList, cont);
            if (showCollectibleList)
            {
                int count = objective.collectibleList.Count;

                EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(15));
                count = EditorGUILayout.IntField("Count", count);
                EditorGUILayout.EndHorizontal();

                while (count > objective.collectibleList.Count)
                {
                    objective.collectibleList.Add(null);
                }
                while (count < objective.collectibleList.Count)
                {
                    objective.collectibleList.RemoveAt(objective.collectibleList.Count - 1);
                }

                for (int i = 0; i < objective.collectibleList.Count; i++)
                {
                    EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(20));
                    objective.collectibleList[i] = (Collectible)EditorGUILayout.ObjectField("Element " + i, objective.collectibleList[i], typeof(Collectible), true);
                    EditorGUILayout.EndHorizontal();
                }
            }


            EditorGUILayout.Space();


            cont = new GUIContent("Clear All Spawner:", "Check if all active unit spawner in the level has to be destroyed/cleared before the objective is completed");
            objective.clearAllSpawner = EditorGUILayout.Toggle(cont, objective.clearAllSpawner);

            if (!objective.clearAllSpawner)
            {
                cont            = new GUIContent("Unit Spawner List:", "Unit Spawner in the scene that need to be cleared to complete the objective");
                showSpawnerList = EditorGUILayout.Foldout(showSpawnerList, cont);
                if (showSpawnerList)
                {
                    int count = objective.spawnerList.Count;

                    EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(15));
                    count = EditorGUILayout.IntField("Count", count);
                    EditorGUILayout.EndHorizontal();

                    while (count > objective.spawnerList.Count)
                    {
                        objective.spawnerList.Add(null);
                    }
                    while (count < objective.spawnerList.Count)
                    {
                        objective.spawnerList.RemoveAt(objective.spawnerList.Count - 1);
                    }

                    for (int i = 0; i < objective.spawnerList.Count; i++)
                    {
                        EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(20));
                        objective.spawnerList[i] = (UnitSpawner)EditorGUILayout.ObjectField("Element " + i, objective.spawnerList[i], typeof(UnitSpawner), true);
                        EditorGUILayout.EndHorizontal();
                    }
                }
            }


            EditorGUILayout.Space();

            cont            = new GUIContent("Objective Trigger List:", "");
            showTriggerList = EditorGUILayout.Foldout(showTriggerList, cont);
            if (showTriggerList)
            {
                int count = objective.triggerList.Count;

                EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(15));
                count = EditorGUILayout.IntField("Count", count);
                EditorGUILayout.EndHorizontal();

                while (count > objective.triggerList.Count)
                {
                    objective.triggerList.Add(null);
                }
                while (count < objective.triggerList.Count)
                {
                    objective.triggerList.RemoveAt(objective.triggerList.Count - 1);
                }

                for (int i = 0; i < objective.triggerList.Count; i++)
                {
                    EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(20));
                    objective.triggerList[i] = (Trigger)EditorGUILayout.ObjectField("Element " + i, objective.triggerList[i], typeof(Trigger), true);
                    EditorGUILayout.EndHorizontal();
                }
            }

            EditorGUILayout.Space();


            cont = new GUIContent("Objective Targets:", "Specific numbers of any particular unit that needs to be destroyed before the level is cleared");
            EditorGUILayout.LabelField(cont);

            if (objective.prefabList.Count != objective.prefabCountList.Count)
            {
                //if(objective.targetUnitList.Count>objective.targetUnitCountList.Count)
                while (objective.prefabList.Count > objective.prefabCountList.Count)
                {
                    objective.prefabCountList.Add(1);
                }
                while (objective.prefabList.Count < objective.prefabCountList.Count)
                {
                    objective.prefabCountList.RemoveAt(objective.prefabCountList.Count - 1);
                }
            }


            for (int i = 0; i < objective.prefabList.Count + 1; i++)
            {
                if (i == objective.prefabList.Count && objective.prefabList.Count == unitAIDB.unitList.Count)
                {
                    continue;
                }

                int unitIdx = i < objective.prefabList.Count ? TDSEditor.GetUnitAIIndex(objective.prefabList[i].prefabID) : 0;

                EditorGUILayout.BeginHorizontal();

                EditorGUILayout.LabelField("  -  ", GUILayout.MaxWidth(20));                        //GUILayout.MaxWidth(115));
                unitIdx = EditorGUILayout.Popup(unitIdx, unitAILabel);

                if (i < objective.prefabList.Count)
                {
                    objective.prefabCountList[i] = EditorGUILayout.IntField(objective.prefabCountList[i], GUILayout.MaxWidth(40));
                    objective.prefabCountList[i] = Mathf.Max(1, objective.prefabCountList[i]);
                }
                else
                {
                    EditorGUILayout.LabelField("    ", GUILayout.MaxWidth(40));
                }

                EditorGUILayout.EndHorizontal();

                if (i < objective.prefabList.Count)
                {
                    if (unitIdx == 0)
                    {
                        objective.prefabList.RemoveAt(i);
                    }
                    else if (unitIdx > 0 && !objective.prefabList.Contains(unitAIDB.unitList[unitIdx - 1]))
                    {
                        objective.prefabList[i] = unitAIDB.unitList[unitIdx - 1];
                    }
                }
                else
                {
                    if (unitIdx > 0 && !objective.prefabList.Contains(unitAIDB.unitList[unitIdx - 1]))
                    {
                        objective.prefabList.Add(unitAIDB.unitList[unitIdx - 1]);
                    }
                }
            }


            EditorGUILayout.Space();


            cont = new GUIContent("Objective Collectibles:", "Specific numbers of any particular collectible that needs to be collectible before the level is cleared");
            EditorGUILayout.LabelField(cont);

            if (objective.colPrefabList.Count != objective.colPrefabCountList.Count)
            {
                while (objective.colPrefabList.Count > objective.colPrefabCountList.Count)
                {
                    objective.colPrefabCountList.Add(1);
                }
                while (objective.colPrefabList.Count < objective.colPrefabCountList.Count)
                {
                    objective.colPrefabCountList.RemoveAt(objective.colPrefabCountList.Count - 1);
                }
            }


            for (int i = 0; i < objective.colPrefabList.Count + 1; i++)
            {
                //if(i==objective.colPrefabList.Count && objective.prefabList.Count==unitAIDB.unitList.Count) continue;

                int itemIdx = i < objective.colPrefabList.Count ? TDSEditor.GetCollectibleIndex(objective.colPrefabList[i].ID) : 0;

                EditorGUILayout.BeginHorizontal();

                EditorGUILayout.LabelField("  -  ", GUILayout.MaxWidth(20));                        //GUILayout.MaxWidth(115));
                itemIdx = EditorGUILayout.Popup(itemIdx, collectibleLabel);

                if (i < objective.colPrefabList.Count)
                {
                    objective.colPrefabCountList[i] = EditorGUILayout.IntField(objective.colPrefabCountList[i], GUILayout.MaxWidth(40));
                    objective.colPrefabCountList[i] = Mathf.Max(1, objective.colPrefabCountList[i]);
                }
                else
                {
                    EditorGUILayout.LabelField("    ", GUILayout.MaxWidth(40));
                }

                EditorGUILayout.EndHorizontal();

                if (i < objective.colPrefabList.Count)
                {
                    if (itemIdx == 0)
                    {
                        objective.colPrefabList.RemoveAt(i);
                    }
                    else if (itemIdx > 0 && !objective.colPrefabList.Contains(collectibleDB.collectibleList[itemIdx - 1]))
                    {
                        objective.colPrefabList[i] = collectibleDB.collectibleList[itemIdx - 1];
                    }
                }
                else
                {
                    if (itemIdx > 0 && !objective.colPrefabList.Contains(collectibleDB.collectibleList[itemIdx - 1]))
                    {
                        objective.colPrefabList.Add(collectibleDB.collectibleList[itemIdx - 1]);
                    }
                }
            }

            //~ public List<Collectible> colPrefabList=new List<Collectible>();	//the collectible that need to be collect
            //~ public List<int> colPrefabCountList=new List<int>();		//the count required, editable in editor
        }
Ejemplo n.º 3
0
        void OnSelectionChange()
        {
            if (window == null)
            {
                return;
            }

            srlObj = null;

            selectedCltList = new List <Collectible>();

            UnityEngine.Object[] filtered = Selection.GetFiltered(typeof(Collectible), SelectionMode.Editable);
            for (int i = 0; i < filtered.Length; i++)
            {
                selectedCltList.Add((Collectible)filtered[i]);
            }

            //if no no relevent object is selected
            if (selectedCltList.Count == 0)
            {
                SelectItem();
                if (collectibleDB.collectibleList.Count > 0 && selectID >= 0)
                {
                    UpdateObjectHierarchyList(collectibleDB.collectibleList[selectID].gameObject);
                }
            }
            else
            {
                //only one relevent object is selected
                if (selectedCltList.Count == 1)
                {
                    //if the selected object is a prefab and match the selected item in editor, do nothing
                    if (selectID > 0 && selectedCltList[0] == collectibleDB.collectibleList[selectID])
                    {
                        UpdateObjectHierarchyList(selectedCltList[0].gameObject);
                    }
                    //if the selected object doesnt match...
                    else
                    {
                        //if the selected object existed in DB
                        if (TDSEditor.ExistInDB(selectedCltList[0]))
                        {
                            window.selectID = TDSEditor.GetCollectibleIndex(selectedCltList[0].ID) - 1;
                            UpdateObjectHierarchyList(selectedCltList[0].gameObject);
                            SelectItem();
                        }
                        //if the selected object is not in DB
                        else
                        {
                            selectID = -1;
                            UpdateObjectHierarchyList(selectedCltList[0].gameObject);
                        }
                    }
                }
                //selected multiple editable object
                else
                {
                    selectID = -1;
                    UpdateObjectHierarchyList(selectedCltList[0].gameObject);
                }

                srlObj = new SerializedObject(filtered);
            }

            Repaint();
        }