using SVSim.Database.Common; namespace SVSim.Database.Models; /// /// One row per basic_puzzle group (puzzle_master_id). Static catalog seeded by /// SVSim.Bootstrap.PuzzleImporter from seeds/puzzle-groups.json. /// See docs/api-spec/endpoints/post-login/basic-puzzle/info.md. /// public class PuzzleGroupEntry : BaseEntity { /// puzzle_master_id on the wire. PK + display order key. public int PuzzleMasterId { get => Id; set => Id = value; } /// SystemText id. "Puzzle_QuestSelect_0301" etc. Client resolves with Data.SystemText.Get. public string BasicTitleTextId { get; set; } = string.Empty; /// Character id for the group portrait. Wire as string but stored as int. public int PuzzleCharaId { get; set; } /// Mission-attribution chara. Usually == PuzzleCharaId but observed group 2 has 3208/2703 split. public int CharaId { get; set; } /// 1 = Special/Expert rounds, 2 = Regular numbered rounds. Drives client display ordering. public int SortType { get; set; } /// Difficulty-name dict serialized as JSON (e.g. {"Beginner":"0","Experienced":"1","Expert":"2"}). public string DifficultyNameListJson { get; set; } = "{}"; // Navigation public List Puzzles { get; set; } = new(); }