示例#1
0
    void OnGUI()
    {
        selectedQuestTreeId = EditorGUILayout.IntPopup("Quest tree", selectedQuestTreeId, questTreeNames, questTreeIds);
        if (selectedQuestTreeId == qt.QuestTrees.Count)
        {
            qt.QuestTrees.Add(new QuestTree());
            qt.QuestTrees [selectedQuestTreeId].Name = "Unnamed quest tree";
            reloadQuestTrees();
            loadQuests(selectedQuestTreeId);
            reloadQuestTrees();
            addNewQuest();
            changed = true;
        }

        if (prevQuestTreeId != selectedQuestTreeId)
        {
            changeQuestTreeName = qt.QuestTrees[selectedQuestTreeId].Name;
            loadQuests(selectedQuestTreeId);
        }

        changeQuestTreeName = EditorGUILayout.TextField("Change name", changeQuestTreeName);
        if (GUILayout.Button("Apply"))
        {
            qt.QuestTrees[selectedQuestTreeId].Name = changeQuestTreeName;
            questTreeNames[selectedQuestTreeId]     = qt.QuestTrees[selectedQuestTreeId].Name + " (Quest tree-ID " + selectedQuestTreeId + ")";
        }

        EditorGUILayout.Space();
        selectedQuestId = EditorGUILayout.IntPopup("Quest", selectedQuestId, questNames, questIds);
        if (prevQuestId != selectedQuestId)
        {
            if (selectedQuestId == qt.QuestTrees[selectedQuestTreeId].Quests.Count)
            {
                addNewQuest();
                changed = true;
            }
            changeQuestName  = qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Name;
            questDescription = qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Description;
        }

        changeQuestName  = EditorGUILayout.TextField("Change name", changeQuestName);
        questDescription = EditorGUILayout.TextArea(questDescription, GUILayout.Height(80));
        if (GUILayout.Button("Apply"))
        {
            qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Name        = changeQuestName;
            qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Description = questDescription;
            questNames[selectedQuestId] = qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Name + " (Quest-ID " + qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Id + ")";
        }

        EditorGUILayout.Space();
        scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
        if (qt.QuestTrees[selectedQuestTreeId].Quests.Count > 0)
        {
            for (int i = 0; i < qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives.Count; i++)
            {
                int typeindex = new int();
                switch (qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives[i].Type)
                {
                case "Boolean":
                    typeindex = 0;
                    break;

                case "Counter":
                    typeindex = 1;
                    break;
                }

                typeindex = EditorGUILayout.Popup("Objective type", typeindex, objectiveTypes);
                qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives[i].Type = objectiveTypes[typeindex];

                if (qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives[i].Type == "Counter")
                {
                    qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives[i].GoalCount = EditorGUILayout.IntField("Goal count",
                                                                                                                                  qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives[i].GoalCount);
                }

                qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives[i].Text = EditorGUILayout.TextField("Objective",
                                                                                                                          qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives[i].Text);
                if (GUILayout.Button("Delete"))
                {
                    qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives.RemoveAt(i);
                }

                EditorGUILayout.Space();
            }
        }
        EditorGUILayout.EndScrollView();

        if (GUI.changed &&
            prevQuestId == selectedQuestId &&
            prevQuestTreeId == selectedQuestTreeId)
        {
            changed = true;
        }

        prevQuestTreeId = selectedQuestTreeId;
        prevQuestId     = selectedQuestId;

        if (GUILayout.Button("Add Objective"))
        {
            qt.QuestTrees[selectedQuestTreeId].Quests[selectedQuestId].Objectives.Add(new Objective());
        }

        if (GUILayout.Button("Save"))
        {
            qt.Save(Path.Combine(Application.streamingAssetsPath, "quest.xml"));
            changed = false;
        }
    }