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:
Meta Vens 2026-09-17 18:22:22 +02:00
commit 0c2da217f3
5 changed files with 30 additions and 9 deletions

View file

@ -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),