"use strict"; // Layer: persistence/schema // Current-format identifiers. Saves are accepted only when their schema exactly matches this build. (function (global) { const ids = global.TarinaiDomainIds; const itemCatalog = global.TarinaiItemTypeCatalog; if (!ids) throw new Error("TarinaiDomainIds must be loaded before save_schema.js"); if (!itemCatalog) throw new Error("TarinaiItemTypeCatalog must be loaded before save_schema.js"); const SNAPSHOT_VERSION = 40; const BINARY_SCHEMA_VERSION = 49; function moodValue(index, fallback = "relaxed") { return ids.canonicalMoodId(ids.enumValue(ids.MOOD_IDS, index, fallback)); } global.TarinaiSaveSchema = Object.freeze({ SNAPSHOT_VERSION, BINARY_SCHEMA_VERSION, FIELD_IDS: ids.FIELD_IDS, GROUND_IDS: ids.GROUND_IDS, WEATHER_IDS: ids.WEATHER_IDS, MOOD_IDS: ids.MOOD_IDS, STATE_IDS: ids.STATE_IDS, POWER_MODE_IDS: ids.POWER_MODE_IDS, SIZE_MODE_IDS: ids.SIZE_MODE_IDS, LIFE_MODE_IDS: ids.LIFE_MODE_IDS, PIN_STATE_IDS: ids.PIN_STATE_IDS, STAGE_IDS: ids.STAGE_IDS, ITEM_TYPE_IDS: itemCatalog.ITEM_TYPE_IDS, FIELD_INDEX: ids.FIELD_INDEX, GROUND_INDEX: ids.GROUND_INDEX, WEATHER_INDEX: ids.WEATHER_INDEX, MOOD_INDEX: ids.MOOD_INDEX, ITEM_TYPE_INDEX: itemCatalog.ITEM_TYPE_INDEX, canonicalFieldId: ids.canonicalFieldId, canonicalGroundId: ids.canonicalGroundId, canonicalWeatherId: ids.canonicalWeatherId, canonicalMoodId: ids.canonicalMoodId, moodValue, enumIndex: ids.enumIndex, enumValue: ids.enumValue, itemTypeIndex: itemCatalog.itemTypeIndex, itemTypeValue: itemCatalog.itemTypeValue, }); })(typeof window !== "undefined" ? window : globalThis);