GlobalGameData
Основной сохраняемый контейнер состояния игровой сессии — сложность, значки, посещённые
сцены, последнее место лечения/игрока, счётчик шагов и постоянное состояние
дополнительных систем (спутники, Secret Base, зал игрока, забеги по башне). Это ассет
ScriptableObject, внедряемый через Zenject, который сериализует себя на диск через своё
сохраняемое зеркало SavableGlobalGameData.
Namespace: OpenMon.MCE.Player
Money, DexNumber и RosterPreview в GlobalGameData существуют только для UI
предпросмотра слота сохранения — они снимаются в момент сохранения. Живые значения лежат в
другом месте: деньги — в Bag игрока, реальная команда — в
Roster (PlayerCharacter.PlayerRoster). Для игровой логики читайте их, а
не поля предпросмотра здесь.
Определение
[CreateAssetMenu(menuName = "MCE/Player/GlobalGameData", fileName = "GlobalGameData")]
public class GlobalGameData : GameVariableHolder
{
// Версионирование (записывается при сохранении)
public string LastSaveDate;
public string LastGameVersion;
public string LastMCEVersion;
public string LastMCEAssetsVersion;
// Опции
public GameDifficulty GameDifficulty;
public CatchDifficulty CatchDifficulty;
// Общее
public bool HasDex;
public SceneLocation LastHealLocation;
public uint StepsTaken;
public SerializableDictionary<Region, List<Badge>> ObtainedBadges;
public List<SceneInfoAsset> VisitedScenes;
public Ball LastUsedBall;
// Местоположение игрока
public SceneLocation LastPlayerLocation;
public bool WasPlayerOnBridgeOnLastLocation;
// Только предпросмотр сохранения
public uint DexNumber;
public uint Money;
public List<MonsterPreview> RosterPreview;
// Состояние дополнительных систем (устойчиво к null для старых сохранений)
public FollowerSaveData FollowerData;
public SecretBaseData SecretBase;
public SceneLocation SecretBaseReturn;
public PlayerGymData PlayerGym;
public List<string> EarnedGymBadges;
public TowerRunState TowerRun;
public void AddBadge(Badge badge, Region region);
public bool HasBadge(Badge badge, Region region);
public List<Badge> GetBadges(Region region);
public int GetTotalNumberOfBadges();
public float GetCatchDifficultyMultiplier();
public override string SaveToText(ISerializer<string> serializer, PlayerCharacter playerCharacter);
public override IEnumerator LoadFromText(ISerializer<string> serializer, string data,
MCESettings mceSettings, MonsterDatabaseInstance monsterDatabase);
public override IEnumerator ResetSave();
}
Поля и свойства
GameDifficulty
Сложность прохождения.
Тип: GameDifficulty
CatchDifficulty
Сложность поимки. Питает GetCatchDifficultyMultiplier().
Тип: CatchDifficulty
HasDex
Получил ли игрок Dex.
Тип: bool
LastHealLocation
Последнее место, где игрок лечился — точка возрождения после поражения.
Тип: SceneLocation
LastPlayerLocation
Последнее известное местоположение игрока, записанное при сохранении.
Тип: SceneLocation
WasPlayerOnBridgeOnLastLocation
Стоял ли игрок на мосту в своём последнем местоположении (восстанавливается при загрузке).
Тип: bool
StepsTaken
Всего пройдено шагов игроком (влияет на вылупление яиц, роуминг и т. д.).
Тип: uint
ObtainedBadges
Полученные значки, с ключом по Region. Управляйте через AddBadge / HasBadge /
GetBadges, а не изменяйте напрямую.
Тип: SerializableDictionary<Region, List<Badge>>
VisitedScenes
Сцены, которые посетил игрок (косметическая пометка «был ли я здесь»).
Тип: List<SceneInfoAsset>
LastUsedBall
Последний мяч, брошенный игроком (используется для предвыбора в бою).
Тип: Ball