Improvements to save and loading

Improvements to Chinthe animation logic
Fix broken Godot Tool system and just use a more manual approach to setting map nodes
Remove ItemDatabase from individual room scenes
This commit is contained in:
2025-10-24 01:33:18 -07:00
parent f5360adbf1
commit 286c221530
93 changed files with 497 additions and 678 deletions

View File

@@ -3,6 +3,7 @@ using Chickensoft.Collections;
using Chickensoft.Introspection;
using Chickensoft.SaveFileBuilder;
using Godot;
using Godot.Collections;
using System.Linq;
using System.Threading.Tasks;
using Zennysoft.Ma.Adapter;
@@ -23,18 +24,9 @@ public partial class Map : Node3D, IMap
[Node]
public Node MapOrder { get; set; } = default!;
#region Save
public ISaveChunk<MapInfo> MapChunk { get; set; } = default!;
ISaveChunk<MapInfo> IProvide<ISaveChunk<MapInfo>>.Value() => MapChunk;
[Node]
public AnimationPlayer AnimationPlayer { get; set; } = default!;
[Dependency]
public ISaveChunk<GameData> GameChunk => this.DependOn<ISaveChunk<GameData>>();
#endregion
public IDungeonFloor CurrentFloor { get; private set; }
public AutoProp<int> CurrentFloorNumber { get; private set; } = new AutoProp<int>(0);
@@ -43,8 +35,6 @@ public partial class Map : Node3D, IMap
public void OnResolved()
{
GameChunk.AddChunk(MapChunk);
this.Provide();
InitializeMapData();
@@ -66,11 +56,11 @@ public partial class Map : Node3D, IMap
public async Task LoadFloor()
{
var floor = MapOrder.GetChildren().OfType<LayoutType>().ElementAt(CurrentFloorNumber.Value);
var floor = MapOrder.GetChildren().OfType<FloorNode>().ElementAt(CurrentFloorNumber.Value);
var sceneToLoad = LayoutToScenePathConverter.Convert(floor);
await LoadFloor(sceneToLoad);
if (CurrentFloor is DungeonFloor dungeonFloor && floor is DungeonFloorLayout dungeonFloorLayout)
dungeonFloor.SpawnEnemies(dungeonFloorLayout.EnemySpawnRates);
if (CurrentFloor is DungeonFloor dungeonFloor && floor is DungeonFloorNode dungeonFloorNode)
dungeonFloor.SpawnEnemies(dungeonFloorNode);
}
public async Task LoadFloor(string sceneName)