cirnogodot/Scripts/Resources/Events/MovePlayerEvent.cs

77 lines
2.2 KiB
C#
Raw Normal View History

2025-03-05 15:38:52 +01:00
using System.Threading;
using System.Threading.Tasks;
using Cirno.Scripts.Components.FSM;
2025-02-13 16:10:22 +01:00
using Godot;
2025-03-05 15:38:52 +01:00
using GTweens.Builders;
using GTweens.Easings;
using GTweensGodot.Extensions;
2025-02-13 16:10:22 +01:00
namespace Cirno.Scripts.Resources.Events;
[GlobalClass]
public partial class MovePlayerEvent : EventResource
{
[Export]
public Vector2 RelativeTargetPosition = Vector2.Zero;
[Export]
public float MovementTime = 1f;
[Export]
public Tween.EaseType EaseType = Tween.EaseType.InOut;
[Export]
public Tween.TransitionType TransitionType = Tween.TransitionType.Linear;
2025-03-05 15:38:52 +01:00
[Export] public GTweens.Easings.Easing GTweenEasing { get; private set; } = Easing.Linear;
2025-02-13 16:10:22 +01:00
private bool _isComplete = false;
2025-06-23 18:30:42 +02:00
public override void Init(Node parent)
2025-02-16 16:26:05 +01:00
{
2025-06-23 18:30:42 +02:00
2025-02-16 16:26:05 +01:00
}
2025-06-23 18:30:42 +02:00
public override void Start(Node parentNode)
2025-02-13 16:10:22 +01:00
{
_isComplete = false;
_ = MovePlayer();
}
protected async Task MovePlayer()
{
2025-03-05 10:55:14 +01:00
GameManager.Instance.Player.SetState(PlayerState.Cutscene);
2025-03-02 11:58:30 +01:00
//_gameManager.Player.RequestMovementDisable(true);
2025-02-13 16:10:22 +01:00
2025-03-05 15:38:52 +01:00
var gtween = GTweenSequenceBuilder.New()
2025-06-23 18:30:42 +02:00
.Append(GameManager.Instance.Player.MainObject.TweenGlobalPosition(
GameManager.Instance.Player.MainObject.GlobalPosition + RelativeTargetPosition, MovementTime)
2025-03-05 15:38:52 +01:00
.SetEasing(GTweenEasing)
//.
)
.Build();
await gtween.PlayAsync(CancellationToken.None);
// Tween tween = _gameManager.GetTree().CreateTween();
// tween.SetEase(EaseType);
// tween.SetTrans(TransitionType);
// tween.TweenProperty(_gameManager.Player, "global_position", _gameManager.Player.GlobalPosition + RelativeTargetPosition, MovementTime);
//
// // Wait for the tween to finish
// await ToSignal(tween, "finished");
2025-02-13 16:10:22 +01:00
2025-03-05 10:55:14 +01:00
GameManager.Instance.Player.SetState(PlayerState.Active);
2025-03-02 11:58:30 +01:00
//_gameManager.Player.RequestMovementDisable(false);
2025-02-13 16:10:22 +01:00
_isComplete = true;
}
public override void UpdateEvent(double delta) { }
public override bool IsComplete()
{
return _isComplete;
}
}