Cut 0: give Entity its own EntitySettings copy, delete the duplicate copies
Entity's constructor now takes a MessagePack round-trip copy of the settings it is given, so no entity can alias GameplaySettings.DefaultEntitySettings. That makes ActionGameManager.NewEntitySettings and EntitySerializer.Unpack's null-coalescing copy redundant; both are deleted, and TradeMenu buys a ship straight off the template (Entity's ctor copies it). EntitiesDoNotShareDefaultEntitySettings pins the invariant: writing ShutdownPerformance on one ship must not move the default for a sibling or the template (settings-globals-cut.md, Cut 0). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
52011771bd
commit
0c2da217f3
5 changed files with 30 additions and 9 deletions
|
|
@ -48,8 +48,6 @@ public static class EntitySerializer
|
|||
|
||||
public static Entity Unpack(ItemManager itemManager, Zone zone, EntityPack pack)
|
||||
{
|
||||
pack.Settings ??= MessagePackSerializer.Deserialize<EntitySettings>(
|
||||
MessagePackSerializer.Serialize(itemManager.GameplaySettings.DefaultEntitySettings));
|
||||
return pack switch
|
||||
{
|
||||
ShipPack shipPack => Unpack(itemManager, zone, shipPack),
|
||||
|
|
|
|||
Loading…
Reference in a new issue