using Cirno.Scripts.Actors; using Godot; namespace Cirno.Scripts.Resources; [GlobalClass] public partial class SimpleMovementPattern : AttackPattern { [Export] private Vector2 relativeTargetPosition; [Export] private float moveDuration = 2f; [Export] private Tween.TransitionType transitionType = Tween.TransitionType.Linear; [Export] private Tween.EaseType easeType = Tween.EaseType.InOut; private Tween tween; private bool isComplete = false; public override void Start(Boss boss) { Boss = boss; tween = boss.CreateTween(); isComplete = false; Vector2 targetPosition = (Boss?.HomePosition ?? boss.GlobalPosition) + relativeTargetPosition; boss.ChangeSpriteDirection(-(boss.GlobalPosition - targetPosition)); tween.TweenProperty(Boss, "global_position", targetPosition, moveDuration) .SetTrans(transitionType) .SetEase(easeType) .Finished += () => { isComplete = true; boss.ChangeSpriteDirection(Vector2.Zero); }; } public override void UpdatePattern(double delta) { } public override bool IsComplete() { return isComplete; } }