"use strict"; // Layer: data/domain-ids // Owns current domain identifier order shared by UI, simulation labels, and save schema. // Old save compatibility is intentionally not preserved; current encode/decode only need // to agree within the same app build. (function (global) { const FIELD_IDS = Object.freeze(["garden", "cage", "park"]); const GROUND_IDS = Object.freeze(["soil", "dirt", "concrete", "blanket", "foot_massage", "ice", "laboratory"]); const WEATHER_IDS = Object.freeze(["sunny", "cloudy", "light_rain"]); const MOOD_IDS = Object.freeze(["relaxed", "devastation", "crisis", "confusion", "fearful", "disease_spread", "weakened", "breeding", "happy", "overcrowded", "isolated"]); const STATE_IDS = Object.freeze(["idle", "sleep"]); const POWER_MODE_IDS = Object.freeze(["", "protein", "niteropu"]); const SIZE_MODE_IDS = Object.freeze(["", "giant_drug", "dwarf_drug"]); const LIFE_MODE_IDS = Object.freeze(["", "mercury"]); const PIN_STATE_IDS = Object.freeze(["loose", "lodged", "falling", "stuck"]); const STAGE_IDS = Object.freeze(["fresh", "aging", "old", "dry"]); function indexMap(list) { return Object.freeze(Object.fromEntries(list.map((id, index) => [id, index]))); } const FIELD_INDEX = indexMap(FIELD_IDS); const GROUND_INDEX = indexMap(GROUND_IDS); const WEATHER_INDEX = indexMap(WEATHER_IDS); const MOOD_INDEX = indexMap(MOOD_IDS); function enumIndex(list, value, fallback = 0) { const i = list.indexOf(String(value ?? "")); return i >= 0 ? i : fallback; } function enumValue(list, index, fallback = "") { const i = Number(index) | 0; return list[i] ?? fallback ?? list[0] ?? ""; } function canonicalFrom(list, value, fallback) { const id = String(value || fallback || list[0] || ""); return list.includes(id) ? id : (fallback || list[0] || ""); } function canonicalFieldId(value = "garden") { return canonicalFrom(FIELD_IDS, value, "garden"); } function canonicalGroundId(value = "soil") { return canonicalFrom(GROUND_IDS, value, "soil"); } function canonicalWeatherId(value = "sunny") { return canonicalFrom(WEATHER_IDS, value, "sunny"); } function canonicalMoodId(value = "relaxed") { return canonicalFrom(MOOD_IDS, value, "relaxed"); } global.TarinaiDomainIds = Object.freeze({ FIELD_IDS, GROUND_IDS, WEATHER_IDS, MOOD_IDS, STATE_IDS, POWER_MODE_IDS, SIZE_MODE_IDS, LIFE_MODE_IDS, PIN_STATE_IDS, STAGE_IDS, FIELD_INDEX, GROUND_INDEX, WEATHER_INDEX, MOOD_INDEX, enumIndex, enumValue, canonicalFieldId, canonicalGroundId, canonicalWeatherId, canonicalMoodId, }); })(typeof window !== "undefined" ? window : globalThis);