Level teleporter

This commit is contained in:
MaddoScientisto 2025-02-21 22:48:12 +01:00
commit f6c7f1e3bc
2 changed files with 31 additions and 4 deletions

View file

@ -0,0 +1,26 @@
using System;
using System.Collections;
using System.Threading.Tasks;
using Godot;
namespace Cirno.Scripts.Activables;
public partial class LevelTeleporter : Teleporter
{
[Export]
public new string Target {get; private set;}
protected override async Task Teleport(PlayerMovement player)
{
if (string.IsNullOrWhiteSpace(Target)) return;
player.RequestMovementDisable(true);
await TweenPlayer(player);
_particles.Emitting = true;
await Task.Delay((int)(TeleportAnimationLength * 1000));
GlobalState.Instance.GotoScene(Target);
}
}

View file

@ -31,7 +31,7 @@ public partial class Teleporter : Activable
// [Export]
// public GpuParticles2D Particles { get; set; }
private GpuParticles2D _particles;
protected GpuParticles2D _particles;
public override void _Ready()
{
@ -118,14 +118,15 @@ public partial class Teleporter : Activable
// Teleport player to target if active
if (!IsEnabled) return;
if (Target is null) return;
// Call Teleport here
_ = Teleport(player);
}
private async Task Teleport(PlayerMovement player)
protected virtual async Task Teleport(PlayerMovement player)
{
if (Target is null) return;
player.RequestMovementDisable(true);
await TweenPlayer(player);
@ -140,7 +141,7 @@ public partial class Teleporter : Activable
player.RequestMovementDisable(false);
}
private async Task TweenPlayer(PlayerMovement player)
protected async Task TweenPlayer(PlayerMovement player)
{
// Create a Tween for the teleport animation
Tween tween = GetTree().CreateTween();