using UnityEngine; [CreateAssetMenu( fileName = "CannonConfig", menuName = "FORT-BO/Cannon/Cannon Config")] public sealed class CannonConfig : ScriptableObject { [SerializeField, Min(0f)] private float minimumDelay = 0f; [SerializeField, Min(0.1f)] private float maximumDelay = 60f; [SerializeField, Min(0f)] private float defaultDelay = 5f; [SerializeField, Min(0.1f)] private float adjustmentStep = 1f; [SerializeField] private bool acceptDefectiveRockets = true; [SerializeField] private bool acceptCriticallyDamagedRockets; public float MinimumDelay => minimumDelay; public float MaximumDelay => maximumDelay; public float DefaultDelay => ClampDelay(defaultDelay); public float AdjustmentStep => adjustmentStep; public bool AcceptDefectiveRockets => acceptDefectiveRockets; public bool AcceptCriticallyDamagedRockets => acceptCriticallyDamagedRockets; public float ClampDelay(float value) => Mathf.Clamp(value, minimumDelay, Mathf.Max(minimumDelay, maximumDelay)); private void OnValidate() { minimumDelay = Mathf.Max(0f, minimumDelay); maximumDelay = Mathf.Max(minimumDelay, maximumDelay); defaultDelay = ClampDelay(defaultDelay); adjustmentStep = Mathf.Max(0.1f, adjustmentStep); } }