using System; using BlueWater.Interfaces; using Newtonsoft.Json; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater.Items { public enum ItemCategory { None = 0, FoodIngredient, Currency, Dish, Drink, Quest = 9 } public enum ItemType { None = 0, Meat, Fish, Egg, Fruit, Shellfish, Seasoning } public enum ItemQuality { None = 0, Normal, High } [Serializable] public class ItemData : IIdx { [BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("고유 식별 ID"), BoxGroup("Json 데이터 영역")] public int Idx { get; set; } [field: SerializeField, Tooltip("이름"), BoxGroup("Json 데이터 영역")] public string Name { get; set; } [field: SerializeField, Tooltip("아이템 종류"), BoxGroup("Json 데이터 영역")] public ItemCategory Category { get; set; } [field: SerializeField, Tooltip("재료 종류"), BoxGroup("Json 데이터 영역")] public ItemType Type { get; set; } [field: SerializeField, Tooltip("아이템 품질"), BoxGroup("Json 데이터 영역")] public ItemQuality Quality { get; set; } [field: SerializeField, Tooltip("가격"), BoxGroup("Json 데이터 영역")] public int Price { get; set; } [field: SerializeField, Tooltip("무게"), BoxGroup("Json 데이터 영역")] public int Weight { get; set; } [field: SerializeField, Tooltip("설명"), TextArea(3, 10), BoxGroup("Json 데이터 영역")] public string Description { get; set; } [BoxGroup("직접 추가하는 영역")] [field: SerializeField, BoxGroup("직접 추가하는 영역")] public Sprite Sprite { get; set; } [field: SerializeField, BoxGroup("직접 추가하는 영역")] public Item ItemPrefab { get; set; } [JsonConstructor] public ItemData(int idx, string name, ItemCategory category, ItemType type, ItemQuality quality, int price, int weight, string description, Sprite sprite, Item itemPrefab) { Idx = idx; Name = name; Category = category; Type = type; Quality = quality; Price = price; Weight = weight; Description = description; Sprite = sprite; ItemPrefab = itemPrefab; } public ItemData(ItemData itemData) { Idx = itemData.Idx; Name = itemData.Name; Category = itemData.Category; Type = itemData.Type; Quality = itemData.Quality; Price = itemData.Price; Weight = itemData.Weight; Description = itemData.Description; Sprite = itemData.Sprite; ItemPrefab = itemData.ItemPrefab; } } }