made test floor, replaced sara frames, replaced shield frames, set many enemies to shaded and adjusted heights/sizes, added solid mesh doorways, added filth and ballos' vfx,

This commit is contained in:
Pal
2025-10-03 04:43:45 -07:00
parent 3bcb747473
commit 122d0e7794
974 changed files with 17043 additions and 1315 deletions

View File

@@ -46,74 +46,74 @@ public partial class Map : Node3D, IMap
public void OnResolved()
{
GameChunk.AddChunk(MapChunk);
GameChunk.AddChunk(MapChunk);
this.Provide();
this.Provide();
InitializeMapData();
InitializeMapData();
}
public void InitializeMapData()
{
CurrentFloorNumber.OnNext(0);
CurrentFloorNumber.OnNext(0);
}
public IDungeonRoom GetPlayersCurrentRoom()
{
var rooms = CurrentFloor.Rooms;
var playersRoom = rooms.SingleOrDefault(x => x.IsPlayerInRoom);
return playersRoom;
var rooms = CurrentFloor.Rooms;
var playersRoom = rooms.SingleOrDefault(x => x.IsPlayerInRoom);
return playersRoom;
}
public Transform3D GetPlayerSpawnPosition() => CurrentFloor.GetPlayerSpawnPoint();
public async Task LoadFloor()
{
var floor = MapOrder.GetChildren().OfType<LayoutType>().ElementAt(CurrentFloorNumber.Value);
var sceneToLoad = LayoutToScenePathConverter.Convert(floor);
await LoadFloor(sceneToLoad);
if (CurrentFloor is DungeonFloor dungeonFloor && floor is DungeonFloorLayout dungeonFloorLayout)
dungeonFloor.SpawnEnemies(dungeonFloorLayout.EnemySpawnRates);
var floor = MapOrder.GetChildren().OfType<LayoutType>().ElementAt(CurrentFloorNumber.Value);
var sceneToLoad = LayoutToScenePathConverter.Convert(floor);
await LoadFloor(sceneToLoad);
if (CurrentFloor is DungeonFloor dungeonFloor && floor is DungeonFloorLayout dungeonFloorLayout)
dungeonFloor.SpawnEnemies(dungeonFloorLayout.EnemySpawnRates);
}
public async Task LoadFloor(string sceneName)
{
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
ClearCurrentMap();
var newFloor = await LoadNewFloor(sceneName);
AddChild(newFloor);
InitializeFloor(newFloor);
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, ("fade_in"));
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);
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);
var result = sceneLoader.LoadedScene;
sceneLoader.QueueFree();
return result;
var sceneLoader = new SceneLoader();
AddChild(sceneLoader);
sceneLoader.LoadSceneRequest(sceneName);
await ToSignal(sceneLoader, SceneLoader.SignalName.SceneLoaded);
var result = sceneLoader.LoadedScene;
sceneLoader.QueueFree();
return result;
}
private void ClearCurrentMap()
{
CurrentFloor?.CallDeferred(MethodName.QueueFree, []);
CurrentFloor?.CallDeferred(MethodName.QueueFree, []);
}
private void SetupDungeonFloor()
{
CurrentFloor.InitializeDungeon();
var transform = GetPlayerSpawnPosition();
Player.TeleportPlayer(transform);
CurrentFloor.InitializeDungeon();
var transform = GetPlayerSpawnPosition();
Player.TeleportPlayer(transform);
}
}