using System.Collections; using System.Collections.Generic; using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif [CreateAssetMenu(fileName = "New General Item", menuName = "Config/Items/New General Item")] public class ItemSO : ScriptableObject { public enum Rarity { Common, Uncommon, Rare, VeryRare, UltimateRare, Strange, Demonic, Godly, Legendary, Brainbusting, GameBreaking } public int ID; public string Name; public int Value; public int Cost; public Sprite Item_Sprite; [TextArea(3, 12)] public string Description; public List<string> HelperEffects; public Rarity Item_Rarity = Rarity.Common; public bool CantBeSold; public bool IsUniqueItem; public enum PossReqs { Stats, Sec_Stats, Item } public bool Has_Requirement; public List<PossReqs> Requirements; // Stats Fields public int Number_Of_Stat_Reqs; [Tooltip("0 - STR | 1 - INT | 2 - CON | 3 - DEX | 4 - CHA | 5 - WIS | 6 - LCK")] public List<Vector3Int> Stats_List; // Secondary Stat Fields public int Number_Of_Sec_Stat_Reqs; [Tooltip("0 - HP | 1 - MP | 2 - Armor")] public List<Vector3Int> Sec_Stats_List; // Item Fields public int Number_Of_Items; public List<string> Item_List; } #if UNITY_EDITOR [CustomEditor(typeof(ItemSO), true)] public class ItemSOEditor : Editor { private ItemSO container; protected const int MaxPrimeStatReqs = 14; protected const int MaxSecondaryStatReqs = 6; protected const int MaxItemRequirement = 10; private void OnEnable() { container = target as ItemSO; } public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.LabelField("General Properties", EditorStyles.boldLabel); container.ID = EditorGUILayout.IntField("ID", container.ID); EditorGUILayout.PropertyField(serializedObject.FindProperty("Name")); EditorGUILayout.PropertyField(serializedObject.FindProperty("Description")); EditorGUILayout.PropertyField(serializedObject.FindProperty("HelperEffects")); EditorGUILayout.PropertyField(serializedObject.FindProperty("Item_Sprite")); EditorGUILayout.Space(10); EditorGUILayout.LabelField("Shop Properties", EditorStyles.boldLabel); container.Value = EditorGUILayout.IntField("Value", container.Value); container.Cost = EditorGUILayout.IntField("Cost", container.Cost); EditorGUILayout.Space(5); EditorGUILayout.PropertyField(serializedObject.FindProperty("Item_Rarity")); EditorGUILayout.PropertyField(serializedObject.FindProperty("CantBeSold")); EditorGUILayout.PropertyField(serializedObject.FindProperty("IsUniqueItem")); serializedObject.ApplyModifiedProperties(); } } #endif