using System.Threading; using System.Threading.Tasks; using Cirno.Scripts.Enums; using Godot; using GTweens.Builders; using GTweens.Tweens; using GTweensGodot.Extensions; namespace Cirno.Scripts.Components.FSM.Elevator; public partial class Descending : BaseState { public override ElevatorState StateId => ElevatorState.Descending; private GTween _tween; public override void EnterState() { _tween?.Kill(); MainObject.SetPosition(MainObject.Top); Descend(); } public override void ExitState() { _tween?.Kill(); } private void Descend() { // Grab player if in range //Ascend _ = DescendingAnimation(); } private async Task DescendingAnimation() { _tween = GTweenSequenceBuilder.New() .Append(MainObject.TweenPosition(MainObject.Bottom, MainObject.MovementTime)) .Build(); await _tween.PlayAsync(CancellationToken.None); StateMachine.SetState(ElevatorState.Bottom); } }