The deletion line lands before RunSave, as the spec orders. Deleted, not demoted: - PlayerSettings.SavedRun (Key 1 stays unclaimed) and the SavedGame constructor that upserted a fresh SavedZone per zone on every save. - ActionGameManager: the PlayerSettings.msgpack getter, file path and writer; the .loadout format (_loadoutPath, Loadouts, SaveLoadout and its default-options serializer, the commented loader); OnApplicationQuit and SaveState; SaveZone, which had no caller. - MainMenu's SavedRun Continue branch and both `SavedRun = null` writes. - InventoryPanel's Save Loadout and Restore Loadout bodies. - InputDisplayLayout's KeyboardLayouts file reader, ParseJson, AssociateInputKeys, SaveLayout and the usings they alone needed. - AetherDb's Cut 9 importer (Import.cs, legacy-census, import). - The three-gates note on loading writes; Cut 3 made loading non-writing. - .gitignore ignores GameData/run.cc and GameData/player.cc instead of PlayerSettings.msgpack. DOES NOT BUILD in Unity: ActionGameManager, MainMenu and InputDisplayLayout still reference the deleted members until the next commit wires RunSave, the settings getter and the catalog layout read. Headless builds. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
101 lines
1.9 KiB
C#
101 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using GameCult.Caching;
|
|
using MessagePack;
|
|
using CultMath;
|
|
using static CultMath.math;
|
|
|
|
[CultDocument("aetheria.savedgame", "1"), CultGlobal, MessagePackObject]
|
|
public class SavedGame
|
|
{
|
|
[Key(0)]
|
|
public CultRecordRef<SavedZone>[] Zones;
|
|
|
|
[Key(1)]
|
|
public CultRecordRef<Faction>[] Factions;
|
|
|
|
[Key(2)]
|
|
public Dictionary<int, int> HomeZones;
|
|
|
|
[Key(3)]
|
|
public Dictionary<int, int> BossZones;
|
|
|
|
[Key(4)]
|
|
public int Entrance;
|
|
|
|
[Key(5)]
|
|
public int Exit;
|
|
|
|
[Key(6)]
|
|
public int CurrentZone;
|
|
|
|
[Key(7)]
|
|
public int CurrentZoneEntity;
|
|
|
|
[Key(8)]
|
|
public SectorBackgroundSettings Background;
|
|
|
|
[Key(9)]
|
|
public int[] DiscoveredZones;
|
|
|
|
[Key(10)]
|
|
public SavedActionBarBinding[] ActionBarBindings;
|
|
|
|
[Key(11)]
|
|
public bool IsTutorial;
|
|
|
|
[Key(12)]
|
|
public FactionRelationship[] Relationships;
|
|
|
|
}
|
|
|
|
[CultDocument("aetheria.savedzone", "1"), MessagePackObject]
|
|
public class SavedZone
|
|
{
|
|
[Key(0)]
|
|
public string Name;
|
|
|
|
[Key(1)]
|
|
public float2 Position;
|
|
|
|
[Key(2)]
|
|
public int[] AdjacentZones;
|
|
|
|
[Key(3)]
|
|
public int[] Factions;
|
|
|
|
[Key(4)]
|
|
public int Owner;
|
|
|
|
[Key(5)]
|
|
public ZonePack Contents;
|
|
}
|
|
|
|
[MessagePackObject,
|
|
Union(0, typeof(SavedActionBarConsumableBinding)),
|
|
Union(1, typeof(SavedActionBarGearBinding)),
|
|
Union(2, typeof(SavedActionBarWeaponGroupBinding))
|
|
]
|
|
public abstract class SavedActionBarBinding
|
|
{
|
|
}
|
|
|
|
[MessagePackObject]
|
|
public class SavedActionBarConsumableBinding : SavedActionBarBinding
|
|
{
|
|
[Key(0)] public CultRecordRef<ConsumableItemData> Target;
|
|
}
|
|
|
|
[MessagePackObject]
|
|
public class SavedActionBarGearBinding : SavedActionBarBinding
|
|
{
|
|
[Key(0)] public int EquipmentIndex;
|
|
[Key(1)] public int BehaviorIndex;
|
|
}
|
|
|
|
[MessagePackObject]
|
|
public class SavedActionBarWeaponGroupBinding : SavedActionBarBinding
|
|
{
|
|
[Key(0)] public int Group;
|
|
}
|