forked from Shardstone/trail-into-darkness
60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
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<CategoryPriority> categoryPriorities = new();
|
|
|
|
[Header("Per-Category Overrides")]
|
|
public List<CategoryDelay> 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;
|
|
}
|
|
}
|