Exemple #1
0
    void ResetQuestStageFields()
    {
        stageName        = "";
        stageShortDesc   = "";
        stageNum         = 0;
        stageProgDesc    = "";
        stageFinDesc     = "";
        stageType        = QuestStageType.Dialog;
        stageTargetID    = -1;
        stageTargetQuant = 0;

        targetIDList.Clear();
        targetQuantityList.Clear();
    }
Exemple #2
0
    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;
        }
    }
Exemple #3
0
    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));
    }
Exemple #4
0
 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;
 }