void ResetQuestStageFields() { stageName = ""; stageShortDesc = ""; stageNum = 0; stageProgDesc = ""; stageFinDesc = ""; stageType = QuestStageType.Dialog; stageTargetID = -1; stageTargetQuant = 0; targetIDList.Clear(); targetQuantityList.Clear(); }
void ShowEditQuestStage() { stageName = EditorGUILayout.TextField("Name: ", stageName, GUILayout.Width(295)); stageNum = EditorGUILayout.IntField("Number: ", stageNum, GUILayout.Width(295)); stageShortDesc = EditorGUILayout.TextField("Short Desc: ", stageShortDesc, GUILayout.Width(295)); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Type and Objectives", EditorStyles.boldLabel); stageType = (QuestStageType)EditorGUILayout.EnumPopup("Type: ", stageType, GUILayout.Width(480)); switch (stageType) { case (QuestStageType.Dialog): break; case (QuestStageType.CollectItem): case (QuestStageType.GiveItem_Single): case (QuestStageType.Kill_Single): stageTargetID = EditorGUILayout.IntField("Item/NPC: ", stageTargetID, GUILayout.Width(295)); break; case (QuestStageType.GiveItem_Multiple): case (QuestStageType.Kill_Multiple): for (int i = 0; i < targetIDList.Count; i++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("X", GUILayout.Width(50))) { targetIDList.RemoveAt(i); targetQuantityList.RemoveAt(i); break; } EditorGUILayout.LabelField(string.Format("Item {0} x{1}", targetIDList[i].ToString(), targetQuantityList[i].ToString())); EditorGUILayout.EndHorizontal(); } stageTargetID = EditorGUILayout.IntField("Item/NPC: ", stageTargetID, GUILayout.Width(295)); stageTargetQuant = EditorGUILayout.IntField("# req: ", stageTargetQuant, GUILayout.Width(295)); if (GUILayout.Button("+", GUILayout.Width(50))) { if (!targetIDList.Contains(stageTargetID)) { targetIDList.Add(stageTargetID); targetQuantityList.Add(stageTargetQuant); } else { Debug.LogError("Cannot add target item/npc: already exists in quest stage."); } stageTargetID = -1; stageTargetQuant = 0; break; } break; } EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Quest Log Text", EditorStyles.boldLabel); EditorGUILayout.LabelField("Progress description:"); stageProgDesc = EditorGUILayout.TextArea(stageProgDesc, GUILayout.Width(350), GUILayout.MinHeight(90)); EditorGUILayout.LabelField("Finished description:"); stageFinDesc = EditorGUILayout.TextArea(stageFinDesc, GUILayout.Width(350), GUILayout.MinHeight(90)); if (GUILayout.Button("Save Changes", GUILayout.Width(300))) { for (int i = 0; i < questStages.Count; i++) { if (questStages[i].StageNumber == stageNum && selectedQuestStage.StageNumber != stageNum) { Debug.LogWarning("Quest already contains a stage with number " + stageNum); return; } } selectedQuestStage.StageName = stageName; selectedQuestStage.StageNumber = stageNum; selectedQuestStage.ShortDescription = stageShortDesc; selectedQuestStage.ProgressDescription = stageProgDesc; selectedQuestStage.FinishedDescription = stageFinDesc; selectedQuestStage.StageType = stageType; if (stageType == QuestStageType.Kill_Multiple || stageType == QuestStageType.GiveItem_Multiple) { List <int> _id = new List <int>(); List <int> _quant = new List <int>(); for (int j = 0; j < targetIDList.Count; j++) { _id.Add(targetIDList[j]); _quant.Add(targetQuantityList[j]); } selectedQuestStage.AddTargets(_id, _quant); } else if (stageType == QuestStageType.Kill_Single || stageType == QuestStageType.GiveItem_Single) { List <int> _id = new List <int>(); _id.Add(stageTargetID); List <int> _quant = new List <int>(); _quant.Add(1); selectedQuestStage.StageTargetID = _id; selectedQuestStage.StageTargetQuantity = _quant; } // Sorts the list by stage number then resets the fields. questStages = questStages.OrderBy(o => o.StageNumber).ToList(); ResetQuestStageFields(); selectedQuestStage = null; showEditQuestStage = false; } if (GUILayout.Button("Cancel", GUILayout.Width(300))) { ResetQuestStageFields(); selectedQuestStage = null; showEditQuestStage = false; } }
void GetQuestStageData() { stageName = EditorGUILayout.TextField("Name: ", selectedQuestStage.StageName); stageNum = EditorGUILayout.IntField("Number: ", selectedQuestStage.StageNumber); stageShortDesc = EditorGUILayout.TextField("Short Desc: ", selectedQuestStage.ShortDescription, GUILayout.Width(295)); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Type and Objectives", EditorStyles.boldLabel); stageType = (QuestStageType)EditorGUILayout.EnumPopup("Type: ", selectedQuestStage.StageType, GUILayout.Width(480)); switch (stageType) { case (QuestStageType.Dialog): break; case (QuestStageType.CollectItem): case (QuestStageType.GiveItem_Single): case (QuestStageType.Kill_Single): stageTargetID = EditorGUILayout.IntField("Item/NPC: ", selectedQuestStage.StageTargetID[0], GUILayout.Width(295)); break; case (QuestStageType.GiveItem_Multiple): case (QuestStageType.Kill_Multiple): targetIDList = selectedQuestStage.StageTargetID; targetQuantityList = selectedQuestStage.StageTargetQuantity; for (int i = 0; i < targetIDList.Count; i++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("X", GUILayout.Width(50))) { targetIDList.RemoveAt(i); targetQuantityList.RemoveAt(i); break; } EditorGUILayout.LabelField(string.Format("Item {0} x{1}", targetIDList[i].ToString(), targetQuantityList[i].ToString())); EditorGUILayout.EndHorizontal(); } stageTargetID = EditorGUILayout.IntField("Item/NPC: ", stageTargetID, GUILayout.Width(295)); stageTargetQuant = EditorGUILayout.IntField("# req: ", stageTargetQuant, GUILayout.Width(295)); if (GUILayout.Button("+", GUILayout.Width(50))) { if (!targetIDList.Contains(stageTargetID)) { targetIDList.Add(stageTargetID); targetQuantityList.Add(stageTargetQuant); } else { Debug.LogError("Cannot add target item/npc: already exists in quest stage."); } stageTargetID = -1; stageTargetQuant = 0; break; } break; } EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Quest Log Text", EditorStyles.boldLabel); EditorGUILayout.LabelField("Progress description:"); stageProgDesc = EditorGUILayout.TextArea(selectedQuestStage.ProgressDescription, GUILayout.Width(350), GUILayout.MinHeight(90)); EditorGUILayout.LabelField("Finished description:"); stageFinDesc = EditorGUILayout.TextArea(selectedQuestStage.FinishedDescription, GUILayout.Width(350), GUILayout.MinHeight(90)); }
public QuestStage(string _name, string _short, string _progDesc, string _finDesc, int _num, QuestStageType _type) { this.StageName = _name; this.ShortDescription = _short; this.ProgressDescription = _progDesc; this.FinishedDescription = _finDesc; this.StageNumber = _num; this.StageType = _type; }