using System; using System.Collections.Generic; using UnityEngine; namespace Jovian.PopupSystem { [CreateAssetMenu(fileName = "PopupSettings", menuName = "Jovian/Popup System/Popup Settings")] public class PopupSettings : ScriptableObject { [Header("General")] public float popupDelay = 0.4f; public float fadeDuration = 0.2f; public AnchorSide defaultAnchorSide = AnchorSide.Below; public float screenEdgePadding = 10f; public float maxPopupWidth = 400f; public int sortingOrder = 100; [Header("Follow Mouse")] public Vector2 followMouseOffset = new(15f, -15f); [Header("Input")] public float touchHoldDuration = 0.6f; public bool gamepadFocusTrigger = true; [Header("Priority")] public List categoryPriorities = new(); [Header("Per-Category Overrides")] public List categoryDelayOverrides = new(); public int GetPriority(PopupCategory category) { foreach(var cp in categoryPriorities) { if(cp.category == category) { return cp.priority; } } return 0; } public float GetDelay(PopupCategory category) { foreach(var cd in categoryDelayOverrides) { if(cd.category == category) { return cd.delay; } } return popupDelay; } } [Serializable] public sealed class CategoryPriority { public PopupCategory category; public int priority; } [Serializable] public sealed class CategoryDelay { public PopupCategory category; public float delay; } }