From e7d33e5e43e2cd3e1cf291c3e97f7beacaa70304 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 13 Jun 2026 17:22:03 +0100 Subject: [PATCH] Demote legacy runtime cache names --- .voidbot/state/aetheria.cc | Bin 41413 -> 42143 bytes Aetheria.State/README.md | 4 +- Assets/Scripts/Gameplay/ActionGameManager.cs | 4 +- .../ServerShared/Agents/Tasks/AgentTask.cs | 2 +- .../ServerShared/Behaviors/ItemUsage.cs | 2 +- .../Scripts/ServerShared/Behaviors/Weapon.cs | 2 +- Assets/Scripts/ServerShared/Corporations.cs | 12 ++--- Assets/Scripts/ServerShared/GlobalData.cs | 2 +- Assets/Scripts/ServerShared/ItemData.cs | 10 ++-- Assets/Scripts/ServerShared/ItemInstance.cs | 2 +- Assets/Scripts/ServerShared/ItemManager.cs | 8 +-- Assets/Scripts/ServerShared/PlayerData.cs | 2 +- ...{CultCache.meta => RuntimeProjection.meta} | 0 .../Attributes.cs | 4 +- .../Attributes.cs.meta | 0 .../CollectionExtensions.cs | 0 .../CollectionExtensions.cs.meta | 0 .../ReflectionExtensions.cs | 0 .../ReflectionExtensions.cs.meta | 0 .../RuntimeCatalogEntry.cs} | 8 +-- .../RuntimeCatalogEntry.cs.meta} | 0 .../Serialization.meta | 0 Assets/Scripts/ServerShared/ZoneData.cs | 4 +- .../{CultCache.meta => UnitySupport.meta} | 0 .../UnityExtensions.cs | 0 .../UnityExtensions.cs.meta | 0 .../{CultCache => UnitySupport}/XKCDColors.cs | 0 .../XKCDColors.cs.meta | 0 docs/aetheria-perfect-machine-map.md | 49 +++++++++++------- 29 files changed, 62 insertions(+), 53 deletions(-) rename Assets/Scripts/ServerShared/{CultCache.meta => RuntimeProjection.meta} (100%) rename Assets/Scripts/ServerShared/{CultCache => RuntimeProjection}/Attributes.cs (96%) rename Assets/Scripts/ServerShared/{CultCache => RuntimeProjection}/Attributes.cs.meta (100%) rename Assets/Scripts/ServerShared/{CultCache => RuntimeProjection}/CollectionExtensions.cs (100%) rename Assets/Scripts/ServerShared/{CultCache => RuntimeProjection}/CollectionExtensions.cs.meta (100%) rename Assets/Scripts/ServerShared/{CultCache => RuntimeProjection}/ReflectionExtensions.cs (100%) rename Assets/Scripts/ServerShared/{CultCache => RuntimeProjection}/ReflectionExtensions.cs.meta (100%) rename Assets/Scripts/ServerShared/{CultCache/DatabaseEntry.cs => RuntimeProjection/RuntimeCatalogEntry.cs} (85%) rename Assets/Scripts/ServerShared/{CultCache/DatabaseEntry.cs.meta => RuntimeProjection/RuntimeCatalogEntry.cs.meta} (100%) rename Assets/Scripts/ServerShared/{CultCache => RuntimeProjection}/Serialization.meta (100%) rename Assets/Scripts/{CultCache.meta => UnitySupport.meta} (100%) rename Assets/Scripts/{CultCache => UnitySupport}/UnityExtensions.cs (100%) rename Assets/Scripts/{CultCache => UnitySupport}/UnityExtensions.cs.meta (100%) rename Assets/Scripts/{CultCache => UnitySupport}/XKCDColors.cs (100%) rename Assets/Scripts/{CultCache => UnitySupport}/XKCDColors.cs.meta (100%) diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index 955929023356a4aac2248e92814f03f229b3641a..b974bbd3d400ddecbbaf00daa72150c83f36431f 100644 GIT binary patch delta 2140 zcmai0%WoS+7+2DwBs?T4NFqWDqoM*5em16vhp0kAP)b@t5>zS5WxV^@J7jlenVGe* zh-4u^2$BP6X{#ck9w@Y+9$G9ea6kz4kXr+nhQEL-S5AC0ySCQ}5+{3S=kfb~k8k$& zZ^Ku1hHrj5eDBH93zd_F>FHphyC zUs`>6aNrdLkRuCRg@~0_eaPaN(OR-(D;|~L7SriVJ;n>f5T!+!_n`rPDgdb= zbx3|q$N;3@vgEpCMk&y$xZ+3_;%}dOW)y14)1EBTOqi4R|J%C;zT%LW;m1+387CN*vC*}gar+O5g}_JQ8iXlq{-UaL)hBb z&2Hbb8{grcuG3Mpmt}pgeS>gK#VYBtm0M znjB=|R)Tc_w`Yz;w6`-K=|}=;3b{d)Cn5x_C7?8ewzG0r<7dX(Xz$d?ger`HL@8Y2 zh#tIRhj`y?wXL4nK(TP1Z}Vmbjsg;1*;Q5dG8FQ}U%;4+OAHnC28f&UP$2~$#t z@>qy9dQ-H)4AH_=8Wg@q$&s36sHw}H$3NN`I&kf$hxu1hCV*BJn?9G**Feakq25~ zy!-mZXd&72#qOTtnLWEX2W7Tuul!$UO3SlNC^I*sSSna=Z==!yWhD? zLfb(}TGvz*1Q>z6^YgZIWExA)h}{-rR@p_ibvRT?hLPlg=Mz^ZEn6ks!-N2XS-1fW z<{Cp79WN&AoOXrg@rTW+_)h7b__L@y^3xKgH-+XT} zp4fi!!Sq@#pIW=BXF|(biUkvV61z`mruoa4n5NS y26+BC`wj5dgHTy;rCc%#I{#eyb*wj3S^F23m?J{~ delta 1483 zcmY*Z&5ImG6lZ2b*cBC5(3n8*o#JJ7c6Z!-n2RinLM{>}iHG%6+x=#`oa(B!s(L1a z!r(y`5-^5FjSao-9+c)Mf9ZTL@pY5_w z*h)d#Oehhq$UZu8(xj=-F&$VL51D)-JjGT>?TR~xFU~0REJw!1j{G#^xayMg!so90 zO{9cOAGd~m)-hYQ8=Ok-aqP7*Q&bIiBrM}nQbrHilGJQH4Wwd6#$tT^tC?v0$b$h# z-d!ZXT`%!=ui!E!v>g?f4_}ydXe^YBQFJsEDMz{TT^@6{zOXyqCe~wCCc_Ca40JqY z){G@UZo1qKM8uo*Y4V(ADh%t8h$7Csqeyt6%&?@7Ay#;4aJ%J!W!Fm@W*wB?4sa>g zBgm?kI?K`(4-Zd6%!P(~0K6xngi9T{`~5pPyKu#$KX)ri05sj?Sb7K)q^vQcX<^<0 zPfck|fRg}q39mzwL`F$NbfXe90T9L3&B!GtSMZui#4)7SeBF~XbnQ|D8%@Z<^d^3& z(UG@8J6S0(ksd=lXpiMs>LFdz(oZ)Wge8%qXYu*!cb@SF=sdg%j&-(XX$}`sG2$Z^ zS{4d!nS7X#H&m$|lE@8_z)LZWn6u`}FypE*Y9xKoRUljwgd2!#uDt{Wqt&zvd<$P@ zWzwrK!e@hH(4cZDc!&@9jKqa4(ByEX_G(HZ%alYDPADGu0MZ)Y{iRa<60#!^m%#S# z*K?mE>Py+DiLs+f_%&qvI)sU<5Qll9p?K6Q^5Ou5r4CE5v;!S%5hTpZeF!VaG_WSc z6m|d$&%)G!fyql490mdOVpPA>r}(`8?2|tT9l^3b58Nm7GauY|q*&-Y3uMEzGEa**Hd_pLhs7)!_j=Wc+P2KtU|YrLsP18VU1~-=|Lf*It)l<# z^TmS?&pcB-qh~K%*#Fv#q5HHre(R07zxCAGTGJ^Wtejk}pW9yX-^z*N_dCBX-qqgu e`nAm$m6x~5%Ff;Qn@aii&i}pp+gejPzyCiJ*&nC? diff --git a/Aetheria.State/README.md b/Aetheria.State/README.md index 8254ce71a..955a9502c 100644 --- a/Aetheria.State/README.md +++ b/Aetheria.State/README.md @@ -83,7 +83,7 @@ rebuild the typed artifact instead of failing on a stale embedded schema catalog `AetheriaCatalogSnapshot` is the typed read surface over materialized catalog documents. It exposes trade items, legacy-ID lookup, manufacturer lookup, corporation prefix lookup, corporation name-file lookup, equipment items, -behavior lookup, and hardpoint lookup without reading `DatabaseEntry` objects. +behavior lookup, and hardpoint lookup without reading runtime projection DTOs. `AetheriaCatalogSurfaceProjector` publishes the first Eve-compatible provider surface from typed catalog state. The importer materializes @@ -98,7 +98,7 @@ equipment, behavior, hardpoint, manufacturer, corporation, and name-file queries, exposes typed item shape masks for layout and fitting consumers, and exposes typed interior masks and hardpoints for equipment/cargo layout consumers, exposes typed behavior payload read models, and can read the -published Eve catalog surface. It does not deserialize legacy `DatabaseEntry` +published Eve catalog surface. It does not deserialize legacy runtime projection objects and does not write state. Unity can use this as the first package boundary once CultLib/Eve runtime packaging is available. `Galaxy` now consumes this package-owned runtime catalog for faction selection diff --git a/Assets/Scripts/Gameplay/ActionGameManager.cs b/Assets/Scripts/Gameplay/ActionGameManager.cs index 303002216..d2648ebf0 100644 --- a/Assets/Scripts/Gameplay/ActionGameManager.cs +++ b/Assets/Scripts/Gameplay/ActionGameManager.cs @@ -1,4 +1,4 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ @@ -485,7 +485,7 @@ public class ActionGameManager : MonoBehaviour } var runtimeItemCatalog = new AetheriaRuntimeItemCatalog(RuntimeCatalog); - DatabaseLinkBase.BindRuntimeItemCatalog(runtimeItemCatalog); + RuntimeCatalogLinkBase.BindRuntimeItemCatalog(runtimeItemCatalog); ItemManager = new ItemManager( runtimeItemCatalog, Settings.GameplaySettings, diff --git a/Assets/Scripts/ServerShared/Agents/Tasks/AgentTask.cs b/Assets/Scripts/ServerShared/Agents/Tasks/AgentTask.cs index f5aad3e20..548147406 100644 --- a/Assets/Scripts/ServerShared/Agents/Tasks/AgentTask.cs +++ b/Assets/Scripts/ServerShared/Agents/Tasks/AgentTask.cs @@ -4,7 +4,7 @@ using System; -public abstract class AgentTask : DatabaseEntry +public abstract class AgentTask : RuntimeCatalogEntry { public int Priority; diff --git a/Assets/Scripts/ServerShared/Behaviors/ItemUsage.cs b/Assets/Scripts/ServerShared/Behaviors/ItemUsage.cs index dac81f838..3fd3de6bf 100644 --- a/Assets/Scripts/ServerShared/Behaviors/ItemUsage.cs +++ b/Assets/Scripts/ServerShared/Behaviors/ItemUsage.cs @@ -7,7 +7,7 @@ using System.Linq; [Inspectable, Order(-5), RuntimeInspectable] public class ItemUsageData : BehaviorData { - [InspectableDatabaseLink(typeof(SimpleCommodityData)), RuntimeCatalogKey(1), RuntimeInspectable] + [InspectableRuntimeCatalogLink(typeof(SimpleCommodityData)), RuntimeCatalogKey(1), RuntimeInspectable] public Guid Item; public override Behavior CreateInstance(EquippedItem item) diff --git a/Assets/Scripts/ServerShared/Behaviors/Weapon.cs b/Assets/Scripts/ServerShared/Behaviors/Weapon.cs index 12ec9f829..7c0c123e0 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Weapon.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Weapon.cs @@ -44,7 +44,7 @@ public abstract class WeaponData : BehaviorData [InspectablePrefab, RuntimeCatalogKey(11), RuntimeInspectable] public PerformanceStat Visibility = new PerformanceStat(); - [InspectableDatabaseLink(typeof(SimpleCommodityData)), RuntimeCatalogKey(12), RuntimeInspectable] + [InspectableRuntimeCatalogLink(typeof(SimpleCommodityData)), RuntimeCatalogKey(12), RuntimeInspectable] public Guid AmmoType; [InspectablePrefab, RuntimeCatalogKey(13)] diff --git a/Assets/Scripts/ServerShared/Corporations.cs b/Assets/Scripts/ServerShared/Corporations.cs index 166df7ea4..5098379f7 100644 --- a/Assets/Scripts/ServerShared/Corporations.cs +++ b/Assets/Scripts/ServerShared/Corporations.cs @@ -8,7 +8,7 @@ using System.Collections.Generic; using Unity.Mathematics; [LegacyCatalogGroup("Galaxy"), Inspectable] -public class Faction : DatabaseEntry, INamedEntry +public class Faction : RuntimeCatalogEntry, INamedEntry { [Inspectable] public string Name; @@ -22,7 +22,7 @@ public class Faction : DatabaseEntry, INamedEntry [InspectableTexture] public string Logo; - [InspectableDatabaseLink(typeof(PersonalityAttribute))] + [InspectableRuntimeCatalogLink(typeof(PersonalityAttribute))] public Dictionary Personality = new Dictionary(); // [Inspectable] @@ -34,16 +34,16 @@ public class Faction : DatabaseEntry, INamedEntry [InspectableColor] public float3 SecondaryColor; - [InspectableDatabaseLink(typeof(NameFile))] + [InspectableRuntimeCatalogLink(typeof(NameFile))] public Guid GeonameFile; - [InspectableDatabaseLink(typeof(HullData))] + [InspectableRuntimeCatalogLink(typeof(HullData))] public Guid BossHull; [Inspectable] public int InfluenceDistance = 4; - [InspectableDatabaseLink(typeof(Faction)), RangedFloat(0, 1)] + [InspectableRuntimeCatalogLink(typeof(Faction)), RangedFloat(0, 1)] public Dictionary Allegiance = new Dictionary(); [InspectableSoundBank] @@ -63,7 +63,7 @@ public class Faction : DatabaseEntry, INamedEntry } [Inspectable] -public class NameFile : DatabaseEntry, INamedEntry +public class NameFile : RuntimeCatalogEntry, INamedEntry { public string Name; public string[] Names; diff --git a/Assets/Scripts/ServerShared/GlobalData.cs b/Assets/Scripts/ServerShared/GlobalData.cs index 7ab7583ac..e2bf5a3aa 100644 --- a/Assets/Scripts/ServerShared/GlobalData.cs +++ b/Assets/Scripts/ServerShared/GlobalData.cs @@ -11,7 +11,7 @@ using static Unity.Mathematics.noise; using static NoiseFbm; [Inspectable, Serializable, LegacyCatalogGroup("Galaxy")] -public class GalaxyMapLayerData : DatabaseEntry, INamedEntry +public class GalaxyMapLayerData : RuntimeCatalogEntry, INamedEntry { [Inspectable] public float CoreBoost = 1.05f; diff --git a/Assets/Scripts/ServerShared/ItemData.cs b/Assets/Scripts/ServerShared/ItemData.cs index 58c45933a..c9824659b 100644 --- a/Assets/Scripts/ServerShared/ItemData.cs +++ b/Assets/Scripts/ServerShared/ItemData.cs @@ -260,7 +260,7 @@ public class Shape } -public abstract class ItemData : DatabaseEntry, INamedEntry +public abstract class ItemData : RuntimeCatalogEntry, INamedEntry { [Inspectable, RuntimeCatalogKey(1)] public string Name; @@ -268,7 +268,7 @@ public abstract class ItemData : DatabaseEntry, INamedEntry [InspectableText, RuntimeCatalogKey(2)] public string Description; - [InspectableDatabaseLink(typeof(Faction)), RuntimeCatalogKey(3)] + [InspectableRuntimeCatalogLink(typeof(Faction)), RuntimeCatalogKey(3)] public Guid Manufacturer; [Inspectable, RuntimeCatalogKey(4)] @@ -303,7 +303,7 @@ public class SimpleCommodityData : ItemData // public BodyType ResourceBodyType; // // // Link to map(s) controlling density of resource, multiplied together when more than one - // [InspectableDatabaseLink(typeof(GalaxyMapLayerData)), RuntimeCatalogKey(7)] + // [InspectableRuntimeCatalogLink(typeof(GalaxyMapLayerData)), RuntimeCatalogKey(7)] // public List ResourceDensity = new List(); // // // Controls the lowest value in the resource distribution curve @@ -330,7 +330,7 @@ public abstract class CraftedItemData : ItemData [LegacyCatalogGroup("Items"), Inspectable] public class CompoundCommodityData : CraftedItemData { - [InspectableDatabaseLink(typeof(PersonalityAttribute)), RuntimeCatalogKey(10)] + [InspectableRuntimeCatalogLink(typeof(PersonalityAttribute)), RuntimeCatalogKey(10)] public Dictionary DemandProfile = new Dictionary(); [Inspectable, RuntimeCatalogKey(11)] @@ -613,7 +613,7 @@ public class PerformanceStat } [LegacyCatalogGroup("Items"), Inspectable] -public class PersonalityAttribute : DatabaseEntry, INamedEntry +public class PersonalityAttribute : RuntimeCatalogEntry, INamedEntry { [Inspectable, RuntimeCatalogKey(1)] public string Name; diff --git a/Assets/Scripts/ServerShared/ItemInstance.cs b/Assets/Scripts/ServerShared/ItemInstance.cs index 677b53c84..014017315 100644 --- a/Assets/Scripts/ServerShared/ItemInstance.cs +++ b/Assets/Scripts/ServerShared/ItemInstance.cs @@ -12,7 +12,7 @@ using static Unity.Mathematics.math; public abstract class ItemInstance { - public DatabaseLink Data; + public RuntimeCatalogLink Data; public ItemRotation Rotation; } diff --git a/Assets/Scripts/ServerShared/ItemManager.cs b/Assets/Scripts/ServerShared/ItemManager.cs index 428852189..0cd297a1b 100644 --- a/Assets/Scripts/ServerShared/ItemManager.cs +++ b/Assets/Scripts/ServerShared/ItemManager.cs @@ -1,4 +1,4 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ @@ -128,7 +128,7 @@ public class ItemManager { var newItem = new SimpleCommodity { - Data = new DatabaseLink{LinkID = item.ID}, + Data = new RuntimeCatalogLink{LinkID = item.ID}, Quantity = count }; //ItemData.Add(newItem); @@ -163,13 +163,13 @@ public class ItemManager { return new EquippableItem { - Data = new DatabaseLink {LinkID = item.ID}, Quality = quality, Durability = equippableItemData.Durability + Data = new RuntimeCatalogLink {LinkID = item.ID}, Quality = quality, Durability = equippableItemData.Durability }; } var newCommodity = new CompoundCommodity { - Data = new DatabaseLink{LinkID = item.ID}, + Data = new RuntimeCatalogLink{LinkID = item.ID}, Quality = quality }; return newCommodity; diff --git a/Assets/Scripts/ServerShared/PlayerData.cs b/Assets/Scripts/ServerShared/PlayerData.cs index 0b7e452ef..10c15d32b 100644 --- a/Assets/Scripts/ServerShared/PlayerData.cs +++ b/Assets/Scripts/ServerShared/PlayerData.cs @@ -5,7 +5,7 @@ using System; [LegacyCatalogGroup("Users")] -public class PlayerData : DatabaseEntry, INamedEntry +public class PlayerData : RuntimeCatalogEntry, INamedEntry { public string Email; diff --git a/Assets/Scripts/ServerShared/CultCache.meta b/Assets/Scripts/ServerShared/RuntimeProjection.meta similarity index 100% rename from Assets/Scripts/ServerShared/CultCache.meta rename to Assets/Scripts/ServerShared/RuntimeProjection.meta diff --git a/Assets/Scripts/ServerShared/CultCache/Attributes.cs b/Assets/Scripts/ServerShared/RuntimeProjection/Attributes.cs similarity index 96% rename from Assets/Scripts/ServerShared/CultCache/Attributes.cs rename to Assets/Scripts/ServerShared/RuntimeProjection/Attributes.cs index 1a281c161..6b1babb10 100644 --- a/Assets/Scripts/ServerShared/CultCache/Attributes.cs +++ b/Assets/Scripts/ServerShared/RuntimeProjection/Attributes.cs @@ -33,11 +33,11 @@ public class InspectableEnumValuesAttribute : PreferredInspectorAttribute } } -public class InspectableDatabaseLinkAttribute : PreferredInspectorAttribute +public class InspectableRuntimeCatalogLinkAttribute : PreferredInspectorAttribute { public readonly Type EntryType; - public InspectableDatabaseLinkAttribute(Type entryType) + public InspectableRuntimeCatalogLinkAttribute(Type entryType) { EntryType = entryType; } diff --git a/Assets/Scripts/ServerShared/CultCache/Attributes.cs.meta b/Assets/Scripts/ServerShared/RuntimeProjection/Attributes.cs.meta similarity index 100% rename from Assets/Scripts/ServerShared/CultCache/Attributes.cs.meta rename to Assets/Scripts/ServerShared/RuntimeProjection/Attributes.cs.meta diff --git a/Assets/Scripts/ServerShared/CultCache/CollectionExtensions.cs b/Assets/Scripts/ServerShared/RuntimeProjection/CollectionExtensions.cs similarity index 100% rename from Assets/Scripts/ServerShared/CultCache/CollectionExtensions.cs rename to Assets/Scripts/ServerShared/RuntimeProjection/CollectionExtensions.cs diff --git a/Assets/Scripts/ServerShared/CultCache/CollectionExtensions.cs.meta b/Assets/Scripts/ServerShared/RuntimeProjection/CollectionExtensions.cs.meta similarity index 100% rename from Assets/Scripts/ServerShared/CultCache/CollectionExtensions.cs.meta rename to Assets/Scripts/ServerShared/RuntimeProjection/CollectionExtensions.cs.meta diff --git a/Assets/Scripts/ServerShared/CultCache/ReflectionExtensions.cs b/Assets/Scripts/ServerShared/RuntimeProjection/ReflectionExtensions.cs similarity index 100% rename from Assets/Scripts/ServerShared/CultCache/ReflectionExtensions.cs rename to Assets/Scripts/ServerShared/RuntimeProjection/ReflectionExtensions.cs diff --git a/Assets/Scripts/ServerShared/CultCache/ReflectionExtensions.cs.meta b/Assets/Scripts/ServerShared/RuntimeProjection/ReflectionExtensions.cs.meta similarity index 100% rename from Assets/Scripts/ServerShared/CultCache/ReflectionExtensions.cs.meta rename to Assets/Scripts/ServerShared/RuntimeProjection/ReflectionExtensions.cs.meta diff --git a/Assets/Scripts/ServerShared/CultCache/DatabaseEntry.cs b/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs similarity index 85% rename from Assets/Scripts/ServerShared/CultCache/DatabaseEntry.cs rename to Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs index fbbd0bb84..a5e807047 100644 --- a/Assets/Scripts/ServerShared/CultCache/DatabaseEntry.cs +++ b/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs @@ -10,7 +10,7 @@ public interface INamedEntry string EntryName { get; set; } } -public abstract class DatabaseEntry +public abstract class RuntimeCatalogEntry { public Guid ID = Guid.NewGuid(); @@ -21,17 +21,17 @@ public abstract class DatabaseEntry public override bool Equals(object obj) { - if (obj is DatabaseEntry entry) return entry.ID == ID; + if (obj is RuntimeCatalogEntry entry) return entry.ID == ID; return false; } } -public class DatabaseLink : DatabaseLinkBase where T : ItemData +public class RuntimeCatalogLink : RuntimeCatalogLinkBase where T : ItemData { public T Value => ResolveRuntimeItemCatalog(LinkID); } -public class DatabaseLinkBase +public class RuntimeCatalogLinkBase { public Guid LinkID; diff --git a/Assets/Scripts/ServerShared/CultCache/DatabaseEntry.cs.meta b/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs.meta similarity index 100% rename from Assets/Scripts/ServerShared/CultCache/DatabaseEntry.cs.meta rename to Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs.meta diff --git a/Assets/Scripts/ServerShared/CultCache/Serialization.meta b/Assets/Scripts/ServerShared/RuntimeProjection/Serialization.meta similarity index 100% rename from Assets/Scripts/ServerShared/CultCache/Serialization.meta rename to Assets/Scripts/ServerShared/RuntimeProjection/Serialization.meta diff --git a/Assets/Scripts/ServerShared/ZoneData.cs b/Assets/Scripts/ServerShared/ZoneData.cs index ad0a737c7..f5c55b7ef 100644 --- a/Assets/Scripts/ServerShared/ZoneData.cs +++ b/Assets/Scripts/ServerShared/ZoneData.cs @@ -21,7 +21,7 @@ public class ZonePack public double Time; } -public abstract class BodyData : DatabaseEntry, INamedEntry +public abstract class BodyData : RuntimeCatalogEntry, INamedEntry { public string Name = ""; @@ -101,7 +101,7 @@ public class Asteroid public float RotationSpeed; } -public class OrbitData : DatabaseEntry +public class OrbitData : RuntimeCatalogEntry { public Guid Parent; diff --git a/Assets/Scripts/CultCache.meta b/Assets/Scripts/UnitySupport.meta similarity index 100% rename from Assets/Scripts/CultCache.meta rename to Assets/Scripts/UnitySupport.meta diff --git a/Assets/Scripts/CultCache/UnityExtensions.cs b/Assets/Scripts/UnitySupport/UnityExtensions.cs similarity index 100% rename from Assets/Scripts/CultCache/UnityExtensions.cs rename to Assets/Scripts/UnitySupport/UnityExtensions.cs diff --git a/Assets/Scripts/CultCache/UnityExtensions.cs.meta b/Assets/Scripts/UnitySupport/UnityExtensions.cs.meta similarity index 100% rename from Assets/Scripts/CultCache/UnityExtensions.cs.meta rename to Assets/Scripts/UnitySupport/UnityExtensions.cs.meta diff --git a/Assets/Scripts/CultCache/XKCDColors.cs b/Assets/Scripts/UnitySupport/XKCDColors.cs similarity index 100% rename from Assets/Scripts/CultCache/XKCDColors.cs rename to Assets/Scripts/UnitySupport/XKCDColors.cs diff --git a/Assets/Scripts/CultCache/XKCDColors.cs.meta b/Assets/Scripts/UnitySupport/XKCDColors.cs.meta similarity index 100% rename from Assets/Scripts/CultCache/XKCDColors.cs.meta rename to Assets/Scripts/UnitySupport/XKCDColors.cs.meta diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index 3ea94a115..ac5aae43c 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -46,8 +46,8 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. the provider-owned Eve command bridge on startup and on a daemon polling loop while hosting the CultMesh state node. `Aetheria.State.ApplyPending` remains a bounded local operator applicator for both pending lanes. -- Shared domain state is still partly built around `DatabaseEntry`, GUID - identity, MessagePack attributes, and static cache references. Newtonsoft, +- Shared domain state is still partly built around `RuntimeCatalogEntry`, GUID + identity, runtime catalog metadata, and static projection references. Newtonsoft, JsonKnownTypes, RethinkDB, LiteNetLib client transport, and the broken `Economy.Shared` wrapper have been removed from live source. The stale `StrategyGameManager.csbak` backup file and unused Unity asset MessagePack @@ -86,11 +86,12 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. remains a UI/session cache, not durable authority. - `ActionGameManager` opens `AetheriaRuntimeCatalogStore` over `aetheria-world.cc`, projects it through `AetheriaRuntimeItemCatalog`, and - binds `DatabaseLinkBase` to that typed runtime item reader before gameplay + binds `RuntimeCatalogLinkBase` to that typed runtime item reader before gameplay objects read `ItemInstance.Data.Value`. The old `LegacyItemCatalogBoundary`, `LegacyItemCatalogCache`, and runtime MessagePack deserializer path have been - deleted. `DatabaseEntry` and `DatabaseLink` are plain runtime identity/link - helpers now, not MessagePack objects or a global union root. + deleted. The old `DatabaseEntry`/`DatabaseLink` names have been demoted to + `RuntimeCatalogEntry`/`RuntimeCatalogLink` runtime projection helpers, not + MessagePack objects or a global union root. - `ItemManager` no longer exposes the raw runtime item catalog reader as public gameplay/UI API. Temporary item instantiation bridges now go through the narrow `ItemManager.GetCatalogEntry` method. `ItemManager` no longer @@ -115,10 +116,10 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. `Faction` DTOs, including allegiance edges, for the existing simulation shape and resolves full name arrays from `aetheria.name_file.v2` records. The runtime no longer opens the old `GameData/NameFile/*.msgpack` directory. -- `DatabaseLink.Value` can resolve legacy links only after +- `RuntimeCatalogLink.Value` can resolve legacy links only after `ActionGameManager` binds the typed runtime item catalog projected from `aetheria-world.cc`. MessagePack catalog construction no longer grabs global - `DatabaseLinkBase` authority. + link-resolution authority. - `Economy.Server` now starts the modern `Aetheria.State` CultMesh node, drains pending Unity runtime commits through the typed state applicator, and no longer owns RethinkDB/LiteNetLib state. @@ -147,14 +148,14 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. - `AetheriaCatalogSnapshot` is the typed catalog read surface over materialized `.cc` records. It exposes trade-item, manufacturer, corporation prefix, and corporation name-file queries, plus equipment, hardpoint, and behavior - queries without touching `DatabaseEntry`. + queries without touching runtime projection DTOs. - The embedded `GameCult.Aetheria.State.Unity` package now owns the Unity-visible immutable catalog read-model contract for trade/equipment/behavior/hardpoint/manufacturer/corporation/name queries, typed item shape masks, typed interior masks, hardpoints, and behavior payloads. It also owns a read-only Unity-compatible CultCache directory-store opener for the known Aetheria catalog schemas, so Unity runtime code can read - `aetheria-world.cc` catalog records without `DatabaseEntry` or a MessagePack + `aetheria-world.cc` catalog records without runtime projection DTOs or a MessagePack catalog cache. The SDK-style `Aetheria.State.Unity` facade includes that package source and owns the full `Aetheria.State` mapper plus Eve surface read path for .NET smokes. Neither is a simulation owner and neither writes @@ -230,9 +231,11 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. not registered as a VoidBot Discord identity yet, so mutations use the repo-local `void-self-state.mjs apply-operation` typed boundary rather than the registered Face MCP path. -- The old IMGUI DB inspector under `Assets/Scripts/CultCache/Editor/` has been - deleted. `NameTools` can still clean/generate names, but legacy NameFile - `.msgpack` export is disabled. +- The old IMGUI DB inspector has been deleted. `NameTools` can still + clean/generate names, but legacy NameFile `.msgpack` export is disabled. The + remaining Unity helper files formerly under `Assets/Scripts/CultCache` now + live under `Assets/Scripts/UnitySupport` because they are color/curve helpers, + not cache authority. - Galaxy generation no longer reads legacy `Faction` or `NameFile` entries through `ItemManager`; it requires the typed runtime catalog opened from `GameData/aetheria-world.cc`. @@ -319,7 +322,7 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. typed state file path plus the boot-time state-file probe, and is the landing zone for future typed catalog boot. `ActionGameManager` opens the package-owned typed runtime catalog snapshot - and binds `DatabaseLink` resolution through `AetheriaRuntimeItemCatalog`. + and binds `RuntimeCatalogLink` resolution through `AetheriaRuntimeItemCatalog`. Runtime code receives narrow `ItemManager` catalog methods where gameplay only needs item lookups. `Galaxy`, entity restore, and faction-distance loadout weighting have been moved off legacy faction catalog reads. @@ -330,9 +333,10 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. contract for full .NET smokes and Eve surface reads. Neither writes state or owns simulation. The runtime no longer has a MessagePack catalog cache. `AetheriaRuntimeItemCatalog` materializes temporary `ItemData` DTOs from typed - item records for the old simulation object model. `DatabaseEntry` no longer - carries MessagePack union metadata, and behavior type selection now uses an - explicit runtime catalog map instead of `UnionAttribute` reflection. + item records for the old simulation object model. `RuntimeCatalogEntry` is a + projection identity helper, not a persistence base, and behavior type + selection now uses an explicit runtime catalog map instead of + `UnionAttribute` reflection. Item/behavior DTO field layout for the temporary projection bridge is now marked with project-owned `RuntimeCatalogKeyAttribute`, not MessagePack metadata. Item properties @@ -365,7 +369,7 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. file save, and migration all need to converge on one typed commit primitive. - Deletion line: no new behavior should be added to old `ItemData` DTO metadata or MessagePack catalog paths except bounded migration readers and the - current typed item projection bridge. `DatabaseEntry` is no longer a + current typed item projection bridge. `RuntimeCatalogEntry` is no longer a persistence owner. ## Target Authority Map @@ -379,10 +383,10 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. - Derived state: Unity scene objects, HUD panels, editor inspectors, debug views, server dashboards, and compatibility DTOs. - Forbidden writers: Unity UI components, RethinkDB, legacy JSON stores, - `DatabaseEntry.ID`, global cache statics, and any compatibility reader. + `RuntimeCatalogEntry.ID`, global cache statics, and any compatibility reader. - Shared paths: gameplay input, editor edits, import/deep-load, replication, simulation ticks, and tests all call the same typed state service. -- Deletion line: replace the remaining `DatabaseEntry`/`ItemData` runtime DTO +- Deletion line: replace the remaining `RuntimeCatalogEntry`/`ItemData` runtime DTO projection with native typed item instances, then remove old MessagePack catalog metadata from live Unity source once import-only migration no longer needs it. @@ -523,6 +527,11 @@ First Aetheria surfaces to publish: `LegacyItemCatalogCache`, and the runtime MessagePack deserializer path. - Done: demote `DatabaseEntry` and `DatabaseLink` from MessagePack union/object shapes to plain runtime identity/link helpers. + - Done: rename live Unity projection helpers from `DatabaseEntry`, + `DatabaseLink`, and `InspectableDatabaseLinkAttribute` to + `RuntimeCatalogEntry`, `RuntimeCatalogLink`, and + `InspectableRuntimeCatalogLinkAttribute`, and move the old + `ServerShared/CultCache` folder to `ServerShared/RuntimeProjection`. - Done: replace behavior union reflection with an explicit runtime catalog behavior map and remove all live `Union(...)` annotations. - Done: demote agent task runtime shapes from MessagePack object/key/union @@ -620,7 +629,7 @@ First Aetheria surfaces to publish: ## Verification - `rg "Newtonsoft|JsonObject|JsonProperty|JsonConvert|JsonKnownTypes|RethinkDb|RethinkTable|DatabaseCache"` is zero outside migration quarantine and docs. -- `rg "DatabaseEntry" Assets Economy.*` shows no live runtime ownership path. +- `rg "DatabaseEntry|DatabaseLink|InspectableDatabaseLink|ServerShared\\\\CultCache" Assets Economy.*` shows no live runtime ownership path. - `dotnet list package --vulnerable --include-transitive` is clean for active maintained projects. - CultCache smoke proves write, flush, reopen, query, and typed reference