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

@ -28,6 +28,8 @@ public partial class GlobalState : Node
private readonly StringName _mapsDatabaseResource = "uid://blf2ii0j3fqil";
private MapsDatabase _mapsDatabase;
public MapsDatabase MapsDatabase => _mapsDatabase;
private Texture2D _menuMouseTexture;
private Image _menuMouseImage;
@ -35,7 +37,7 @@ public partial class GlobalState : Node
private Image _reticuleMouseImage;
public bool UseMenuCursor { get; set; } = true;
public override void _Ready()
{
Instance = this;
@ -52,7 +54,7 @@ public partial class GlobalState : Node
_menuMouseTexture = ResourceLoader.Load<Texture2D>(_menuMouseTexturePath);
_menuMouseImage = _menuMouseTexture.GetImage();
_reticuleMouseTexture = ResourceLoader.Load<Texture2D>(_reticuleMouseTexturePath);
_reticuleMouseImage = _reticuleMouseTexture.GetImage();
@ -222,6 +224,7 @@ public partial class GlobalState : Node
{
{ "Items", items },
{ "Level", SessionSettings.LevelNumber },
{ "MapId", SessionSettings.MapId },
{ "Difficulty", (int)SessionSettings.Difficulty }
};
@ -259,9 +262,10 @@ public partial class GlobalState : Node
DifficultyLevel difficulty = (DifficultyLevel)deserializedSaveData["Difficulty"].AsInt32();
int levelNumber = (int)deserializedSaveData["Level"];
int levelNumber = deserializedSaveData["Level"].AsInt32();
StringName mapId = deserializedSaveData["MapId"].AsStringName();
var levelData = _mapsDatabase.Maps.FirstOrDefault(x => x.LevelId == levelNumber);
var levelData = _mapsDatabase.FindMap(mapId);
if (levelData is null)
{
return false;
@ -269,6 +273,7 @@ public partial class GlobalState : Node
this.SessionSettings.NewSession();
SessionSettings.LevelNumber = levelNumber;
SessionSettings.MapId = mapId;
SessionSettings.Items = items;
SessionSettings.Difficulty = difficulty;
@ -283,9 +288,8 @@ public partial class GlobalState : Node
Vector2I size;
if (useMenuCursor)
{
scaled = (Image)_menuMouseImage.Duplicate();
size = (Vector2I)(scale * _menuMouseTexture.GetSize());
scaled = (Image)_menuMouseImage.Duplicate();
size = (Vector2I)(scale * _menuMouseTexture.GetSize());
}
else
{
@ -295,8 +299,9 @@ public partial class GlobalState : Node
scaled.Resize(size.X, size.Y, Image.Interpolation.Nearest);
Input.SetCustomMouseCursor(scaled, Input.CursorShape.Arrow, useMenuCursor ? Vector2.Zero : new Vector2(size.X / 2,size.Y / 2));
Input.SetCustomMouseCursor(scaled, Input.CursorShape.Arrow,
useMenuCursor ? Vector2.Zero : new Vector2(size.X / 2, size.Y / 2));
//DisplayServer.CursorSetCustomImage(scaled);
}