namespace SVSim.Database.Models.Config; /// /// Asset-delivery tunables: where the client looks for the resource CDN (Akamai by default; /// Wizard/SetUp.cs:48 hardcodes shadowverse.akamaized.net/) and what manifest /// version to ask for. Currently a single field, will grow as we self-host content. /// [ConfigSection("ResourceConfig")] public class ResourceConfig { /// /// Pushed to the client as data_headers.required_res_ver. The client writes it to /// PlayerPrefs["RES_VER"] and uses it as the version path component for asset /// manifest lookups: https://<cdn>/dl/Manifest/<RES_VER>/<lang>/<Platform>/. /// /// Default value is the prod-captured version from data_dumps/traffic_prod_tutorial.ndjson /// (2026-05-28) — i.e., a path Akamai actually serves. When this rotates (or Akamai sunsets /// ahead of June 2026), update via DB GameConfigs row, appsettings.json, or this /// shipped default; no code change needed. /// /// /// When the client has no cached RES_VER (e.g., a wiped/fresh install via /// NukeIdentityOnStartup), it defaults to "00000000", which Akamai 404s. The /// fetch failure surfaces as "Connection Error / Reconnect" before any tutorial UI loads, /// so emitting a valid value here is required for fresh-account boot. /// /// public string RequiredResVer { get; set; } = "4670rPsPMVlRTd2"; /// /// Inline-default tier for . Mirrors property initialisers /// — kept as a separate factory because the framework requires every [ConfigSection] POCO to /// expose one (see feedback_config_defaults memory for the collection-defaults rule /// that motivated the convention). /// public static ResourceConfig ShippedDefaults() => new(); }