Files
Hasebe/Assets/Code/OfficeGame/BattleMode/Actions/BattleActionWait.cs
T
2026-11-06 19:40:08 +03:00

59 lines
2.1 KiB
C#

using Code.Infrastructure.Utils;
using Code.OfficeGame.BattleMode.Actions.Deciders;
using Code.OfficeGame.BattleMode.Timeline;
using UnityEngine;
namespace Code.OfficeGame.BattleMode.Actions
{
public class BattleActionWait : BattleAction
{
private int EntryStateHash => Animator.StringToHash("WalkBlend");
public override void Tick(float tickDelta,
EntityProperties entity,
BattleActionDecisionResult battleActionDecisionResult,
BattleActionData battleActionData)
{
if (battleActionData is not WaitBattleActionData waitActionData)
{
battleActionData.Finished = true;
return;
}
if (!waitActionData.StartedWaiting)
{
waitActionData.StartedWaiting = true;
var entityAnimator = entity.animator;
float transitionDurationSeconds = 30 * BattleTimeline.TickDelta;
entityAnimator.CrossFadeInFixedTime(EntryStateHash, transitionDurationSeconds);
// entityAnimator.Play(EntryStateHash, 0, 0f); // Создать None State и кинуть эту штуку туда
// entityAnimator.Update(0f);
// TODO С нормальными анимациями не нужен будет рут моушен√
entityAnimator.ResetAnimatorPosition();
}
waitActionData.WaitFrames--;
if (waitActionData.WaitFrames <= 0)
{
battleActionData.Finished = true;
}
}
public override BattleActionType ActionType => BattleActionType.Wait;
public override DeciderType DeciderType => DeciderType.AsIs;
public override BattleActionData MountAndGetFrames(EntityProperties entity, BattleActionDecisionResult result)
{
WaitBattleActionData actionData = new()
{
WaitFrames = 120
};
return actionData;
}
}
}