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

140 lines
5.9 KiB
C#
Raw Permalink 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.8f;
public float importantMoveDuration = 1.3f;
public float moveDelayBetweenCards = 0.22f;
public float arcHeight = 0.45f;
[Header("Старт боя")]
public float introOverheadHold = 1.5f;
public float introCameraMoveDuration = 1f;
public float introMainHold = 1.5f;
public float introDrawDuration = 0.6f;
[Header("3D UX: камера")]
public float cameraZoomDuration = 0.5f;
public float vanguardRevealDuration = 0.8f;
public float triggerRevealDuration = 0.35f;
public float triggerRevealHold = 0.75f;
public float cameraReturnDuration = 0.5f;
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 eventPause = 1.5f;
public float postDrivePause = 1.5f;
public float postTriggerPause = 1.5f;
public float postDamagePause = 1.5f;
[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);
introOverheadHold = Mathf.Max(0f, introOverheadHold);
introCameraMoveDuration = Mathf.Max(0.05f, introCameraMoveDuration);
introMainHold = Mathf.Max(0f, introMainHold);
introDrawDuration = Mathf.Max(0.05f, introDrawDuration);
cameraZoomDuration = Mathf.Max(0.05f, cameraZoomDuration);
vanguardRevealDuration = Mathf.Max(0.05f, vanguardRevealDuration);
triggerRevealDuration = Mathf.Max(0.05f, triggerRevealDuration);
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);
eventPause = Mathf.Max(0f, eventPause);
postDrivePause = Mathf.Max(0f, postDrivePause);
postTriggerPause = Mathf.Max(0f, postTriggerPause);
postDamagePause = Mathf.Max(0f, postDamagePause);
arrowShowDuration = Mathf.Max(0.05f, arrowShowDuration);
arrowHideDuration = Mathf.Max(0.05f, arrowHideDuration);
}
}
}