59 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|
|
} |