This commit is contained in:
2025-09-27 00:22:06 -07:00
parent 2ea96e5933
commit 0bac61a762
13 changed files with 57 additions and 648 deletions

View File

@@ -44,6 +44,8 @@ public partial class Map : Node3D, IMap
public AutoProp<int> CurrentFloorNumber { get; private set; } = new AutoProp<int>(0);
private readonly string _floorFilePath = @"res://src/map/dungeon/floors/";
public void OnResolved()
{
GameChunk.AddChunk(MapChunk);
@@ -56,18 +58,13 @@ public partial class Map : Node3D, IMap
public void InitializeMapData()
{
FloorScenes = ImmutableDictionary<Floor, string>.Empty
.Add(Floor.Overworld, $"res://src/map/overworld/Overworld.tscn")
.Add(Floor.Altar, $"res://src/map/dungeon/floors/Floor00.tscn")
.Add(Floor.BossFloorA, $"res://src/map/dungeon/floors/Special Floors/15. Boss Floor A.tscn")
.Add(Floor.BossFloorB, $"res://src/map/dungeon/floors/Special Floors/34. Boss Floor B.tscn")
.Add(Floor.GoddessOfGuidanceFloor, $"res://src/map/dungeon/floors/Special Floors/35. Goddess of Guidance's Room.tscn")
.Add(Floor.VoidRoom, $"res://src/map/dungeon/floors/Set B/30. Void Room.tscn")
.Add(Floor.FinalFloor, $"res://src/map/dungeon/floors/Special Floors/36. Final Floor.tscn")
.Add(Floor.Floor01, $"res://src/map/dungeon/floors/Floor01.tscn")
.Add(Floor.Floor02, $"res://src/map/dungeon/floors/Floor02.tscn")
.Add(Floor.Floor03, $"res://src/map/dungeon/floors/Floor03.tscn")
.Add(Floor.Floor04, $"res://src/map/dungeon/floors/Floor04.tscn")
.Add(Floor.Floor05, $"res://src/map/dungeon/floors/Floor05.tscn");
.Add(Floor.Overworld, _floorFilePath + "Special Floors/Overworld.tscn")
.Add(Floor.Altar, _floorFilePath + "Special Floors/Altar.tscn")
.Add(Floor.BossFloorA, _floorFilePath + "Special Floors/15. Boss Floor A.tscn")
.Add(Floor.BossFloorB, _floorFilePath + "Special Floors/34. Boss Floor B.tscn")
.Add(Floor.GoddessOfGuidanceFloor, _floorFilePath + "Special Floors/35. Goddess of Guidance's Room.tscn")
.Add(Floor.VoidRoom, _floorFilePath + "Set B/30. Void Room.tscn")
.Add(Floor.FinalFloor, _floorFilePath + "Special Floors/36. Final Floor.tscn");
CurrentFloorNumber.OnNext(0);
}
@@ -91,17 +88,29 @@ public partial class Map : Node3D, IMap
{
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
ClearCurrentMap();
var newFloor = await LoadNewFloor(sceneName);
AddChild(newFloor);
InitializeFloor(newFloor);
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, ("fade_in"));
}
private void InitializeFloor(Node newFloor)
{
CurrentFloor = (IDungeonFloor)newFloor;
SetupDungeonFloor();
CurrentFloor.FloorIsLoaded = true;
CurrentFloorNumber.OnNext(CurrentFloorNumber.Value + 1);
}
private async Task<Node> LoadNewFloor(string sceneName)
{
var sceneLoader = new SceneLoader();
AddChild(sceneLoader);
sceneLoader.LoadSceneRequest(sceneName);
await ToSignal(sceneLoader, SceneLoader.SignalName.SceneLoaded);
AddChild(sceneLoader.LoadedScene);
CurrentFloor = (IDungeonFloor)sceneLoader.LoadedScene;
SetupDungeonFloor();
CurrentFloor.FloorIsLoaded = true;
CurrentFloorNumber.OnNext(CurrentFloorNumber.Value + 1);
var result = sceneLoader.LoadedScene;
sceneLoader.QueueFree();
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, ("fade_in"));
return result;
}
private void ClearCurrentMap()
@@ -119,7 +128,7 @@ public partial class Map : Node3D, IMap
private string[] GetMapFiles()
{
var folderLocation = "res://src/map/dungeon/floors/" + "Floor" + CurrentFloorNumber.Value.ToString("D2");
var folderLocation = _floorFilePath + "Floor" + CurrentFloorNumber.Value.ToString("D2");
return DirAccess.GetFilesAt(folderLocation);
}
}