using System; using System.Collections.Generic; using Cielonos.MainGame.Characters; using Sirenix.OdinInspector; using SLSFramework.General; using UnityEngine; namespace Cielonos.MainGame.Inventory { [CreateAssetMenu(fileName = "FunctionData", menuName = "Cielonos/Items/FunctionData")] public partial class FunctionData : SerializedScriptableObject { [DictionaryDrawerSettings(KeyLabel = "Attack Unit", DisplayMode = DictionaryDisplayOptions.ExpandedFoldout)] [Searchable] public Dictionary functionUnits = new Dictionary(); [OnInspectorGUI("UpdateUnits")] public void UpdateUnits() { foreach (var unit in functionUnits.Values) { unit.parentData = this; } } } public partial class FunctionData { public enum IntervalReductionType { None = 0, Cooldown = 1, AttackSpeed = 10 } [Serializable] public class FunctionUnit { [ReadOnly] public FunctionData parentData; [TitleGroup("Information")] public bool shownInUI; [TitleGroup("Information")] public Sprite icon; [TitleGroup("Information")] public List operation; [TitleGroup("Costs")] public float energyCost; [TitleGroup("Costs")] public int ammoCost; [TitleGroup("Interval")] public float interval; [TitleGroup("Interval")] public float intervalLowerLimit; [TitleGroup("Interval")] public IntervalReductionType intervalReductionType; } } }