dronkowitz

Quest.cs

Nov 9th, 2022 (edited)
1,031
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.77 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5.  
  6. [CreateAssetMenu(fileName = "New Quest")]
  7. public class Quest : ScriptableObject
  8. {
  9.     public string questID;
  10.     public string questDescription;
  11.     public string questName;
  12.     public int rewardXP;
  13.     public Item[] guaranteedRewards;
  14.     public Item[] chosenRewards;
  15.     public QuestTask[] tasks = new QuestTask[1];
  16. }
  17. [System.Serializable]
  18. public struct QuestTask
  19. {
  20.    
  21.     public enum TASKTYPE
  22.     {
  23.         fetch, // To bring an item back to the NPC for example
  24.         kill, // Kill a certain number of enemies
  25.         location, // get to a location
  26.         delivery, // get item and bring it to another person or place
  27.         escort, // to get the NPC to the location safely without dying
  28.     }
  29.     public TASKTYPE type;
  30.     public string taskDescription;
  31.     // Fetch
  32.    
  33.     public Item requiredItem;
  34.     public int numberToCollect;
  35.     public NPCData targetCharacter; // Also use for delivery
  36.  
  37.     // Kill
  38.    
  39.     public NPCData thingsToKill;
  40.    
  41.     public int numberToKill;
  42.     public LocationData targetLocation; // Also used for location quest
  43.  
  44.     // Escort
  45.     public NPCData escortTarget;
  46.  
  47.     public QuestTask(TASKTYPE type, string taskDescription) : this()
  48.     {
  49.         this.type = type;
  50.         this.taskDescription = taskDescription;
  51.     }
  52. }
  53. /*
  54. [CustomEditor(typeof(Quest))]
  55. public class QuestEditor : Editor
  56. {
  57.     public override void OnInspectorGUI()
  58.     {
  59.         Quest myQuest = target as Quest;
  60.  
  61.         myQuest.questID = EditorGUILayout.TextField("Quest ID", myQuest.questID);
  62.         myQuest.questDescription = EditorGUILayout.TextField("Quest Description", myQuest.questDescription);
  63.         myQuest.questName = EditorGUILayout.TextField("Quest Name", myQuest.questName);
  64.         myQuest.rewardXP = EditorGUILayout.IntField("XP Reward", myQuest.rewardXP);
  65.        
  66.  
  67.         foreach (QuestTask task in myQuest.tasks)
  68.         {
  69.             QuestTask currentTask = task;
  70.             switch (task.type)
  71.             {
  72.                 case QuestTask.TASKTYPE.fetch:
  73.                     currentTask.requiredItem = EditorGUILayout.ObjectField("Required Item", task.requiredItem, typeof(Item), true) as Item;
  74.                     currentTask.targetCharacter = EditorGUILayout.ObjectField("Delivery Target Character", task.targetCharacter, typeof(NPCData), true)as NPCData;
  75.                     break;
  76.                 case QuestTask.TASKTYPE.kill:
  77.                     break;
  78.                 case QuestTask.TASKTYPE.location:
  79.                     break;
  80.                 case QuestTask.TASKTYPE.delivery:
  81.                     break;
  82.                 case QuestTask.TASKTYPE.escort:
  83.                     break;
  84.             }
  85.         }
  86.     }
  87. }
  88. */
Advertisement
Add Comment
Please, Sign In to add comment