VanguardReMaster/client/Assets/Vanguard/Runtime/Battle/AnimationConfig.cs

116 lines
4.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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("3D UX: движение")]
public float moveDuration = 0.5f;
public float importantMoveDuration = 0.9f;
public float moveDelayBetweenCards = 0.18f;
public float arcHeight = 0.45f;
[Header("3D UX: камера")]
public float cameraZoomDuration = 0.35f;
public float triggerRevealHold = 1.2f;
public float cameraReturnDuration = 0.4f;
public float cameraRezoomDuration = 0.3f;
[Header("3D UX: стрелки")]
public float growDuration = 0.35f;
public float dashScrollSpeed = 1.5f;
public float boostGrowDuration = 0.3f;
public float boostThickness = 0.8f;
public float arrowFadeDuration = 0.2f;
[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);
moveDuration = Mathf.Max(0.05f, moveDuration);
importantMoveDuration = Mathf.Max(0.05f, importantMoveDuration);
moveDelayBetweenCards = Mathf.Max(0f, moveDelayBetweenCards);
arcHeight = Mathf.Max(0f, arcHeight);
cameraZoomDuration = Mathf.Max(0.05f, cameraZoomDuration);
triggerRevealHold = Mathf.Max(0f, triggerRevealHold);
cameraReturnDuration = Mathf.Max(0.05f, cameraReturnDuration);
cameraRezoomDuration = Mathf.Max(0.05f, cameraRezoomDuration);
growDuration = Mathf.Max(0.05f, growDuration);
dashScrollSpeed = Mathf.Max(0f, dashScrollSpeed);
boostGrowDuration = Mathf.Max(0.05f, boostGrowDuration);
boostThickness = Mathf.Max(0.01f, boostThickness);
arrowFadeDuration = Mathf.Max(0.05f, arrowFadeDuration);
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);
}
}
}