Use item keys only in runtime commits

This commit is contained in:
Meta Vens 2026-06-15 01:49:45 +01:00
commit e9372ce4c4
8 changed files with 11 additions and 54 deletions

Binary file not shown.

View file

@ -171,7 +171,6 @@ try
CorporationLegacyId = "smoke:faction",
Hull = new AetheriaRuntimeLoadoutItemCommit
{
ItemDefinitionLegacyId = "stale:hull",
ItemKey = "aetheria.item_definition:legacy:smoke:hull",
Quality = 0.7,
Durability = 0.6
@ -184,7 +183,6 @@ try
Y = 2,
Item = new AetheriaRuntimeLoadoutItemCommit
{
ItemDefinitionLegacyId = "stale:weapon",
ItemKey = "aetheria.item_definition:legacy:smoke:weapon",
Quality = 0.9,
Durability = 0.8,
@ -204,7 +202,6 @@ try
Y = 4,
Item = new AetheriaRuntimeLoadoutItemCommit
{
ItemDefinitionLegacyId = "stale:ore",
ItemKey = "aetheria.item_definition:legacy:smoke:ore",
Quantity = 5
}
@ -237,7 +234,6 @@ try
{
ControlPath = "<Keyboard>/2",
Kind = "gear",
ItemDefinitionLegacyId = "stale:weapon",
ItemKey = "aetheria.item_definition:legacy:smoke:weapon",
EquipmentIndex = 0,
BehaviorIndex = 1
@ -287,7 +283,6 @@ try
{
new AetheriaRuntimeBodyResourceCommit
{
ItemDefinitionLegacyId = "stale:ore",
ItemKey = "aetheria.item_definition:legacy:smoke:ore",
Amount = 3.5
}
@ -339,7 +334,6 @@ try
TractorPower = 12.5,
Heatstroke = 0.25,
Hypothermia = 0.125,
HullItemDefinitionLegacyId = "stale:hull",
HullItemKey = "aetheria.item_definition:legacy:smoke:hull",
Equipment = new[]
{
@ -349,7 +343,6 @@ try
Y = 0,
Item = new AetheriaRuntimeLoadoutItemCommit
{
ItemDefinitionLegacyId = "stale:weapon",
ItemKey = "aetheria.item_definition:legacy:smoke:weapon",
Quality = 0.9,
Durability = 0.8,
@ -369,7 +362,6 @@ try
Y = 3,
Item = new AetheriaRuntimeLoadoutItemCommit
{
ItemDefinitionLegacyId = "stale:ore",
ItemKey = "aetheria.item_definition:legacy:smoke:ore",
Quantity = 7
}
@ -395,7 +387,6 @@ try
{
new AetheriaRuntimeActiveConsumableCommit
{
ItemDefinitionLegacyId = "stale:consumable",
ItemKey = "aetheria.item_definition:legacy:smoke:consumable",
Quality = 0.75,
RemainingDuration = 3.0,

View file

@ -164,7 +164,7 @@ public static class AetheriaRuntimeCommitLogApplier
item ??= new AetheriaRuntimeLoadoutItemCommit();
return new AetheriaLoadoutItem
{
ItemKey = ReferenceKey(item.ItemKey, "aetheria.item_definition", item.ItemDefinitionLegacyId ?? ""),
ItemKey = item.ItemKey ?? "",
Quality = item.Quality,
Durability = item.Durability,
Quantity = item.Quantity,
@ -332,7 +332,7 @@ public static class AetheriaRuntimeCommitLogApplier
return (resources ?? Array.Empty<AetheriaRuntimeBodyResourceCommit>())
.Select(resource => new AetheriaBodyResource
{
ItemKey = ReferenceKey(resource.ItemKey, "aetheria.item_definition", resource.ItemDefinitionLegacyId ?? ""),
ItemKey = resource.ItemKey ?? "",
Amount = resource.Amount
})
.ToArray();
@ -464,7 +464,7 @@ public static class AetheriaRuntimeCommitLogApplier
Heatstroke = entity.Heatstroke,
Hypothermia = entity.Hypothermia,
FactionKey = ReferenceKey("aetheria.corporation", entity.CorporationLegacyId ?? ""),
HullItemKey = ReferenceKey(entity.HullItemKey, "aetheria.item_definition", entity.HullItemDefinitionLegacyId ?? ""),
HullItemKey = entity.HullItemKey ?? "",
Equipment = ToEntityItemSlots(entity.Equipment),
CargoBays = ToEntityItemSlots(entity.CargoBays),
DockingBays = ToEntityItemSlots(entity.DockingBays),
@ -624,7 +624,7 @@ public static class AetheriaRuntimeCommitLogApplier
return (consumables ?? Array.Empty<AetheriaRuntimeActiveConsumableCommit>())
.Select(consumable => new AetheriaActiveConsumableSnapshot
{
ItemKey = ReferenceKey(consumable.ItemKey, "aetheria.item_definition", consumable.ItemDefinitionLegacyId ?? ""),
ItemKey = consumable.ItemKey ?? "",
Quality = consumable.Quality,
RemainingDuration = consumable.RemainingDuration,
Duration = consumable.Duration
@ -666,7 +666,7 @@ public static class AetheriaRuntimeCommitLogApplier
{
ControlPath = binding.ControlPath ?? "",
Kind = binding.Kind ?? "",
TargetKey = ReferenceKey(binding.ItemKey, "aetheria.item_definition", binding.ItemDefinitionLegacyId ?? ""),
TargetKey = binding.ItemKey ?? "",
EquipmentIndex = binding.EquipmentIndex,
BehaviorIndex = binding.BehaviorIndex,
WeaponGroup = binding.WeaponGroup

View file

@ -15,7 +15,7 @@ The typed runtime state model is split into player settings, loadout templates,
run state, zone state, entity snapshots, item slots, weapon groups, action-bar
bindings, stat grids, and runtime session documents. Runtime checkpoints
include current action-bar bindings as stable typed targets: input control
path, binding kind, item definition reference, equipment index, behavior index,
path, binding kind, item key, equipment index, behavior index,
or weapon-group index. They also include current faction relationship rows as
typed corporation references plus relationship tokens and numeric standings.
Zone checkpoints include typed orbit and body rows for generated celestial

View file

@ -97,8 +97,6 @@ public class ActionBarConsumableBinding : ActionBarBinding
public string TargetItemKey =>
Guid.TryParse(Target?.LegacyId, out var legacyId) ? AetheriaRuntimeItemReference.FromLegacyId(legacyId) : "";
public string TargetItemDefinitionLegacyId => Target?.LegacyId ?? "";
}
public class ActionBarGearBinding : ActionBarBinding
@ -112,16 +110,6 @@ public class ActionBarGearBinding : ActionBarBinding
public int BehaviorIndex => Item?.Behaviors == null ? -1 : Array.IndexOf(Item.Behaviors, Behavior);
public string TargetItemDefinitionLegacyId
{
get
{
return AetheriaRuntimeItemReference.ToLegacyId(TargetItemKey) is var legacyId && legacyId != Guid.Empty
? legacyId.ToString("D")
: "";
}
}
public string TargetItemKey => Item?.EquippableItem?.ItemKey ?? "";
public ActionBarGearBinding(Entity entity, ActionBarSlot slot, EquippedItem item, IActivatedBehavior behavior) : base(entity, slot)

View file

@ -521,7 +521,6 @@ public class ActionGameManager : MonoBehaviour
return new AetheriaRuntimeLoadoutItemCommit
{
ItemDefinitionLegacyId = item.ItemId == Guid.Empty ? "" : item.ItemId.ToString("D"),
ItemKey = item.ItemKey,
Quality = item is CraftedItemInstance crafted ? crafted.Quality : 1.0,
Durability = item is EquippableItem equippable ? equippable.Durability : 1.0,
@ -569,7 +568,6 @@ public class ActionGameManager : MonoBehaviour
{
ControlPath = slot.ControlPath ?? "",
Kind = "consumable",
ItemDefinitionLegacyId = consumable.TargetItemDefinitionLegacyId,
ItemKey = consumable.TargetItemKey
};
case ActionBarGearBinding gear:
@ -577,7 +575,6 @@ public class ActionGameManager : MonoBehaviour
{
ControlPath = slot.ControlPath ?? "",
Kind = "gear",
ItemDefinitionLegacyId = gear.TargetItemDefinitionLegacyId,
ItemKey = gear.TargetItemKey,
EquipmentIndex = gear.EquipmentIndex,
BehaviorIndex = gear.BehaviorIndex
@ -677,7 +674,6 @@ public class ActionGameManager : MonoBehaviour
.OrderBy(pair => pair.Key)
.Select(pair => new AetheriaRuntimeBodyResourceCommit
{
ItemDefinitionLegacyId = LegacyId(pair.Key),
ItemKey = AetheriaRuntimeItemReference.FromLegacyId(pair.Key),
Amount = pair.Value
})
@ -709,7 +705,6 @@ public class ActionGameManager : MonoBehaviour
.OrderBy(pair => pair.Key)
.Select(pair => new AetheriaRuntimeBodyResourceCommit
{
ItemDefinitionLegacyId = LegacyId(pair.Key),
ItemKey = AetheriaRuntimeItemReference.FromLegacyId(pair.Key),
Amount = pair.Value
})
@ -824,7 +819,6 @@ public class ActionGameManager : MonoBehaviour
Heatstroke = entity.Heatstroke,
Hypothermia = entity.Hypothermia,
CorporationLegacyId = entity.Faction?.ID.ToString("D") ?? "",
HullItemDefinitionLegacyId = entity.Hull?.ItemId == Guid.Empty ? "" : entity.Hull.ItemId.ToString("D"),
HullItemKey = entity.Hull?.ItemKey ?? "",
Equipment = ProjectEquippedSlots(entity.Equipment),
CargoBays = ProjectEquippedSlots(entity.CargoBays),
@ -1187,7 +1181,6 @@ public class ActionGameManager : MonoBehaviour
return entity.ActiveConsumables?
.Select(effect => new AetheriaRuntimeActiveConsumableCommit
{
ItemDefinitionLegacyId = effect.Item?.ItemId == Guid.Empty ? "" : effect.Item.ItemId.ToString("D"),
ItemKey = effect.Item?.ItemKey ?? "",
Quality = effect.Item?.Quality ?? 1.0,
RemainingDuration = effect.RemainingDuration,
@ -1340,7 +1333,7 @@ public class ActionGameManager : MonoBehaviour
{
item ??= new AetheriaRuntimeLoadoutItemCommit();
return new AetheriaRuntimeLoadoutItemSnapshot(
ReferenceKey(item.ItemKey, "aetheria.item_definition", item.ItemDefinitionLegacyId ?? ""),
item.ItemKey ?? "",
item.Quality,
item.Durability,
item.Quantity,

View file

@ -173,9 +173,6 @@ namespace GameCult.Aetheria.State.Unity
[MessagePackObject]
public sealed class AetheriaRuntimeLoadoutItemCommit
{
[Key(0)]
public string ItemDefinitionLegacyId { get; set; } = "";
[Key(1)]
public double Quality { get; set; } = 1.0;
@ -258,9 +255,6 @@ namespace GameCult.Aetheria.State.Unity
[Key(1)]
public string Kind { get; set; } = "";
[Key(2)]
public string ItemDefinitionLegacyId { get; set; } = "";
[Key(3)]
public int EquipmentIndex { get; set; } = -1;
@ -389,9 +383,6 @@ namespace GameCult.Aetheria.State.Unity
[MessagePackObject]
public sealed class AetheriaRuntimeBodyResourceCommit
{
[Key(0)]
public string ItemDefinitionLegacyId { get; set; } = "";
[Key(1)]
public double Amount { get; set; }
@ -542,9 +533,6 @@ namespace GameCult.Aetheria.State.Unity
[Key(8)]
public string CorporationLegacyId { get; set; } = "";
[Key(9)]
public string HullItemDefinitionLegacyId { get; set; } = "";
[Key(10)]
public IReadOnlyList<AetheriaRuntimeLoadoutItemSlotCommit> Equipment { get; set; } = Array.Empty<AetheriaRuntimeLoadoutItemSlotCommit>();
@ -659,9 +647,6 @@ namespace GameCult.Aetheria.State.Unity
[MessagePackObject]
public sealed class AetheriaRuntimeActiveConsumableCommit
{
[Key(0)]
public string ItemDefinitionLegacyId { get; set; } = "";
[Key(1)]
public double Quality { get; set; } = 1.0;

View file

@ -496,11 +496,11 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted.
- The dead Unity `NameFile` projection class has been deleted. Runtime name
generation reads `AetheriaRuntimeNameFile` records from the typed catalog
facade; legacy `GameData/NameFile/*.msgpack` remains migration input only.
- Pending Unity runtime commit envelopes now carry typed item keys for loadout
items, action-bar targets, body resources, entity hulls, and active
- Pending Unity runtime commit envelopes now carry typed item keys only for
loadout items, action-bar targets, body resources, entity hulls, and active
consumables. The older `ItemDefinitionLegacyId` and
`HullItemDefinitionLegacyId` fields remain compatibility import/export
fields; the applier prefers `ItemKey`/`HullItemKey` whenever present.
`HullItemDefinitionLegacyId` fields have been deleted from the pending commit
contract; the applier no longer reconstructs item keys from legacy item GUIDs.
Corporation legacy IDs still translate to typed corporation record keys at
the commit boundary.
- Entity restore and loadout manufacturer-distance weighting no longer read