2026-06-26 12:46:32 +09:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
// Layer: persistence/schema
|
2026-07-15 14:44:29 +09:00
|
|
|
// Current-format identifiers. Saves are accepted only when their schema exactly matches this build.
|
2026-06-26 12:46:32 +09:00
|
|
|
(function (global) {
|
2026-07-05 18:01:36 +09:00
|
|
|
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");
|
2026-06-26 12:46:32 +09:00
|
|
|
|
2026-07-16 22:12:03 +09:00
|
|
|
const SNAPSHOT_VERSION = 40;
|
|
|
|
|
const BINARY_SCHEMA_VERSION = 49;
|
2026-06-26 12:46:32 +09:00
|
|
|
|
2026-06-29 16:21:58 +09:00
|
|
|
function moodValue(index, fallback = "relaxed") {
|
2026-07-05 18:01:36 +09:00
|
|
|
return ids.canonicalMoodId(ids.enumValue(ids.MOOD_IDS, index, fallback));
|
2026-06-26 12:46:32 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
global.TarinaiSaveSchema = Object.freeze({
|
|
|
|
|
SNAPSHOT_VERSION,
|
|
|
|
|
BINARY_SCHEMA_VERSION,
|
2026-07-05 18:01:36 +09:00
|
|
|
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,
|
2026-06-29 16:21:58 +09:00
|
|
|
moodValue,
|
2026-07-05 18:01:36 +09:00
|
|
|
enumIndex: ids.enumIndex,
|
|
|
|
|
enumValue: ids.enumValue,
|
|
|
|
|
itemTypeIndex: itemCatalog.itemTypeIndex,
|
|
|
|
|
itemTypeValue: itemCatalog.itemTypeValue,
|
2026-06-26 12:46:32 +09:00
|
|
|
});
|
|
|
|
|
})(typeof window !== "undefined" ? window : globalThis);
|