84 lines
3.1 KiB
C#
84 lines
3.1 KiB
C#
using UnityEngine;
|
||
|
||
namespace Vanguard.Battle
|
||
{
|
||
/// <summary>
|
||
/// Длительности боевых анимаций и блокировки ввода. Ассет лежит в
|
||
/// Resources/AnimationConfig; если его нет, используются значения по умолчанию.
|
||
/// </summary>
|
||
[CreateAssetMenu(menuName = "Vanguard/Animation Config", fileName = "AnimationConfig")]
|
||
public sealed class AnimationConfig : ScriptableObject
|
||
{
|
||
[Header("Карты")]
|
||
public float cardMoveSpeed = 14f;
|
||
public float cardRotateSpeed = 12f;
|
||
public float cardMoveDuration = 0.45f;
|
||
public float cardFlipDuration = 0.3f;
|
||
public float callMoveDuration = 0.55f;
|
||
public float retireDuration = 0.8f;
|
||
|
||
[Header("Бой")]
|
||
public float attackDeclare = 1.2f;
|
||
public float guard = 1.9f;
|
||
public float driveCheck = 1.5f;
|
||
public float trigger = 1.4f;
|
||
public float battleResolved = 1.3f;
|
||
public float damage = 1.6f;
|
||
public float heal = 1.4f;
|
||
public float intercept = 1.9f;
|
||
public float perfectGuard = 2.0f;
|
||
|
||
[Header("Ввод")]
|
||
public float inputLockTail = 0.15f;
|
||
|
||
[Header("Стрелка атаки")]
|
||
public float arrowShowDuration = 0.25f;
|
||
public float arrowHideDuration = 0.2f;
|
||
|
||
private static AnimationConfig _default;
|
||
|
||
public static AnimationConfig Default
|
||
{
|
||
get
|
||
{
|
||
if (_default == null)
|
||
{
|
||
_default = CreateInstance<AnimationConfig>();
|
||
_default.name = "AnimationConfig (runtime)";
|
||
_default.hideFlags = HideFlags.DontSave;
|
||
}
|
||
|
||
return _default;
|
||
}
|
||
}
|
||
|
||
public static AnimationConfig LoadOrDefault()
|
||
{
|
||
var loaded = Resources.Load<AnimationConfig>("AnimationConfig");
|
||
return loaded != null ? loaded : Default;
|
||
}
|
||
|
||
private void OnValidate()
|
||
{
|
||
cardMoveSpeed = Mathf.Max(1f, cardMoveSpeed);
|
||
cardRotateSpeed = Mathf.Max(1f, cardRotateSpeed);
|
||
cardMoveDuration = Mathf.Max(0.05f, cardMoveDuration);
|
||
cardFlipDuration = Mathf.Max(0.05f, cardFlipDuration);
|
||
callMoveDuration = Mathf.Max(0.05f, callMoveDuration);
|
||
retireDuration = Mathf.Max(0.05f, retireDuration);
|
||
attackDeclare = Mathf.Max(0.05f, attackDeclare);
|
||
guard = Mathf.Max(0.05f, guard);
|
||
driveCheck = Mathf.Max(0.05f, driveCheck);
|
||
trigger = Mathf.Max(0.05f, trigger);
|
||
battleResolved = Mathf.Max(0.05f, battleResolved);
|
||
damage = Mathf.Max(0.05f, damage);
|
||
heal = Mathf.Max(0.05f, heal);
|
||
intercept = Mathf.Max(0.05f, intercept);
|
||
perfectGuard = Mathf.Max(0.05f, perfectGuard);
|
||
inputLockTail = Mathf.Max(0f, inputLockTail);
|
||
arrowShowDuration = Mathf.Max(0.05f, arrowShowDuration);
|
||
arrowHideDuration = Mathf.Max(0.05f, arrowHideDuration);
|
||
}
|
||
}
|
||
}
|