cirnogodot/Scripts/Activables/PlayerMover.cs
2025-03-02 11:58:46 +01:00

57 lines
No EOL
1.5 KiB
C#

using System.Threading.Tasks;
using Godot;
namespace Cirno.Scripts.Activables;
public partial class PlayerMover : ChainActivable
{
private GameManager _gameManager;
[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;
public override void _Ready()
{
base._Ready();
_gameManager = this.GetGameManager();
}
public override void Activate(ActivationType activationType = ActivationType.Toggle)
{
if (_gameManager.Player is null) return;
_ = MovePlayer();
}
private async Task MovePlayer()
{
//_gameManager.Player.RequestMovementDisable(true);
_gameManager.Player.SetState((int)PlayerState.Cutscene);
Tween tween = 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");
//_gameManager.Player.RequestMovementDisable(false);
_gameManager.Player.SetState((int)PlayerState.Cutscene);
ActivateTargets();
}
}