Moving FSM Elevator

This commit is contained in:
Marco 2025-03-06 10:27:06 +01:00
commit 8b378abef3
22 changed files with 349 additions and 16 deletions

View file

@ -0,0 +1,47 @@
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<ElevatorState, ElevatorProxy>
{
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);
}
}