Level Teleporters

This commit is contained in:
Marco 2025-09-10 16:16:05 +02:00
commit 7a8bb4311b
26 changed files with 581 additions and 410 deletions

View file

@ -0,0 +1,48 @@
using System.Threading.Tasks;
using Cirno.Scripts.Components.FSM._3DPlayer;
using Godot;
using Godot.Collections;
namespace Cirno.Scripts.Activables._3D;
[Tool]
public partial class LevelTeleporter3D : Teleporter3D
{
[Export] public bool SaveInventory { get; set; }
public override void _func_godot_apply_properties(Dictionary<string, Variant> props)
{
// TargetGroup = props["target"].AsString();
//
// TargetName = props["targetname"].AsString();
IsEnabled = props["enabled"].AsBool();
}
protected override async Task Teleport(IsoPlayerStateMachine player)
{
player.SetState(PlayerState.Cutscene);
await TweenPlayer(player.MainObject);
PlayTeleportStartSound();
FireParticles();
player.SetState(PlayerState.Teleporting);
await Task.Delay((int)(0.6f * 1000));
await Task.Delay((int)(TeleportAnimationLength * 1000));
if (SaveInventory)
{
// Save inventory
GlobalState.Instance.SessionSettings.Items = InventoryManager.Instance.Save();
}
else
{
GlobalState.Instance.SessionSettings.EquippedWeaponId = string.Empty;
}
var nextMap = GlobalState.Instance.MapsDatabase.FindNextMap(GlobalState.Instance.SessionSettings.MapId);
GlobalState.Instance.GotoScene(nextMap);
}
}

View file

@ -0,0 +1 @@
uid://c4e21ceehvqap

View file

@ -35,7 +35,7 @@ public partial class Teleporter3D : StaticBody3D, IActivable, ITargetable
[Export] public StringName DefaultAnimationName { get; private set; } = "Default";
public void _func_godot_apply_properties(Dictionary<string, Variant> props)
public virtual void _func_godot_apply_properties(Dictionary<string, Variant> props)
{
TargetGroup = props["target"].AsString();

View file

@ -11,7 +11,7 @@ namespace Cirno.Scripts.Activables;
public partial class LevelTeleporter : Teleporter
{
[Export] public string LevelPath { get; set; }
[Export] public MapResource Map { get; private set; }
[Export] public MapResource Map { get; private set; }
[Export] public bool SaveInventory { get; set; }
@ -47,13 +47,12 @@ public partial class LevelTeleporter : Teleporter
{
GlobalState.Instance.SessionSettings.LevelNumber += 1;
}
GlobalState.Instance.GotoScene(LevelPath);
}
else
{
GlobalState.Instance.GotoScene(Map);
}
}
}