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; } } }