Split typed state path from legacy catalog
This commit is contained in:
parent
64e596d92d
commit
c8fd1d5e22
5 changed files with 22 additions and 10 deletions
Binary file not shown.
|
|
@ -35,7 +35,7 @@ public class ActionGameManager : MonoBehaviour
|
|||
get => _gameDataDirectory ??= new DirectoryInfo(Application.dataPath).Parent.CreateSubdirectory("GameData");
|
||||
}
|
||||
|
||||
public static string AetheriaStateFilePath => LegacyCatalogBoundary.GetStateFilePath(GameDataDirectory);
|
||||
public static string AetheriaStateFilePath => AetheriaStateBoundary.GetStateFilePath(GameDataDirectory);
|
||||
private static string LegacyAetherDatabasePath => LegacyCatalogBoundary.GetLegacyCatalogPath(GameDataDirectory);
|
||||
private static ILegacyCatalogReader LegacyCatalog => LegacyCatalogBoundary.GetCatalog(GameDataDirectory);
|
||||
|
||||
|
|
|
|||
11
Assets/Scripts/Gameplay/AetheriaStateBoundary.cs
Normal file
11
Assets/Scripts/Gameplay/AetheriaStateBoundary.cs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
using System.IO;
|
||||
|
||||
public static class AetheriaStateBoundary
|
||||
{
|
||||
public const string RuntimeStateFileName = "aetheria-world.cc";
|
||||
|
||||
public static string GetStateFilePath(DirectoryInfo gameDataDirectory)
|
||||
{
|
||||
return Path.Combine(gameDataDirectory.FullName, RuntimeStateFileName);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,11 +4,6 @@ public static class LegacyCatalogBoundary
|
|||
{
|
||||
private static LegacyCatalogCache _catalogCache;
|
||||
|
||||
public static string GetStateFilePath(DirectoryInfo gameDataDirectory)
|
||||
{
|
||||
return Path.Combine(gameDataDirectory.FullName, "aetheria-world.cc");
|
||||
}
|
||||
|
||||
public static string GetLegacyCatalogPath(DirectoryInfo gameDataDirectory)
|
||||
{
|
||||
return Path.Combine(gameDataDirectory.FullName, "AetherDB.msgpack");
|
||||
|
|
|
|||
|
|
@ -20,10 +20,13 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted.
|
|||
- Unity client/runtime lives under `Assets/`. Gameplay still reads the legacy
|
||||
item/name catalog through a private `ActionGameManager` boot helper, which is
|
||||
now the only runtime entrypoint that calls `LegacyCatalogBoundary.GetCatalog`.
|
||||
`ActionGameManager` no longer owns a global legacy cache. Local run saves,
|
||||
loadouts, player settings files, zone files, and generated keyboard layout
|
||||
caches no longer write bespoke durable files. The legacy `PlayerSettings`
|
||||
runtime object is no longer decorated as a MessagePack persistence shape.
|
||||
`ActionGameManager` no longer owns a global legacy cache.
|
||||
`AetheriaStateBoundary` owns the Unity runtime path to
|
||||
`GameData/aetheria-world.cc`; `LegacyCatalogBoundary` no longer names or owns
|
||||
typed state paths. Local run saves, loadouts, player settings files, zone
|
||||
files, and generated keyboard layout caches no longer write bespoke durable
|
||||
files. The legacy `PlayerSettings` runtime object is no longer decorated as a
|
||||
MessagePack persistence shape.
|
||||
- Shared domain state is still partly built around `DatabaseEntry`, GUID
|
||||
identity, MessagePack attributes, and static cache references. Newtonsoft,
|
||||
JsonKnownTypes, RethinkDB, LiteNetLib client transport, and the broken
|
||||
|
|
@ -126,6 +129,8 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted.
|
|||
- `GameData/aetheria-world.cc` is now materialized from the importer as the
|
||||
project-local typed state file for the checked-in catalog. The importer stores
|
||||
relative provenance in the state document, not machine-local absolute paths.
|
||||
Unity resolves this path through `AetheriaStateBoundary`, not through the
|
||||
legacy catalog boundary.
|
||||
Import rebuilds clear the generated `.cc`, `.cc.records`, and `.cultmesh`
|
||||
outputs for the selected state path after capturing legacy inputs, so schema
|
||||
evolution can rematerialize typed state instead of being blocked by stale
|
||||
|
|
@ -189,6 +194,7 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted.
|
|||
## Current Authority Map
|
||||
|
||||
- Owner: `Aetheria.State` owns the new typed state spine for durable state.
|
||||
`AetheriaStateBoundary` owns Unity's runtime typed state file path.
|
||||
`LegacyCatalogBoundary` is the only named owner for opening the old catalog
|
||||
and binding legacy `DatabaseLink<T>` resolution until catalog migration lands.
|
||||
`ActionGameManager` has a private boot helper that calls it only to construct
|
||||
|
|
|
|||
Loading…
Reference in a new issue