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; } }