using System.Text.Json.Serialization;
using MessagePack;
using SVSim.EmulatedEntrypoint.Models.Dtos.Common;
using SVSim.EmulatedEntrypoint.Models.Dtos.Common.BasicPuzzle;
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Responses.BasicPuzzle;
[MessagePackObject]
public class FinishResponse
{
[JsonPropertyName("add_point")] [Key("add_point")]
public int? AddPoint { get; set; } = null;
/// STRING "1" on wins, NUMBER 0 on losses — both observed in prod. Per-call wire type
/// quirk; controller writes the right one based on is_win.
[JsonPropertyName("win_count")] [Key("win_count")]
public object WinCount { get; set; } = 0;
[JsonPropertyName("class_experience")] [JsonConverter(typeof(StringifiedIntConverter))] [Key("class_experience")]
public int ClassExperience { get; set; } = 0;
[JsonPropertyName("class_level")] [JsonConverter(typeof(StringifiedIntConverter))] [Key("class_level")]
public int ClassLevel { get; set; } = 1;
[JsonPropertyName("achieved_info")] [Key("achieved_info")]
public AchievedInfoResponse AchievedInfo { get; set; } = new();
[JsonPropertyName("reward_list")] [Key("reward_list")]
public List RewardList { get; set; } = new();
[JsonPropertyName("class_bonus_point")] [Key("class_bonus_point")]
public int ClassBonusPoint { get; set; } = 0;
[JsonPropertyName("format_bonus_point")] [Key("format_bonus_point")]
public int FormatBonusPoint { get; set; } = 0;
[JsonPropertyName("required_win_count_for_win_bonus_point")] [Key("required_win_count_for_win_bonus_point")]
public int RequiredWinCountForWinBonusPoint { get; set; } = 0;
[JsonPropertyName("win_bonus_point")] [Key("win_bonus_point")]
public int WinBonusPoint { get; set; } = 0;
[JsonPropertyName("win_bonus_point_status")] [Key("win_bonus_point_status")]
public int WinBonusPointStatus { get; set; } = 0;
[JsonPropertyName("get_class_experience")] [Key("get_class_experience")]
public int GetClassExperience { get; set; } = 0;
[JsonPropertyName("clear_mission_list")] [Key("clear_mission_list")]
public ClearMissionListResponse ClearMissionList { get; set; } = new();
[JsonPropertyName("spot_point_data")] [Key("spot_point_data")]
public SpotPointDataResponse SpotPointData { get; set; } = new();
[JsonPropertyName("puzzle_list")] [Key("puzzle_list")]
public List PuzzleList { get; set; } = new();
}
[MessagePackObject]
public class AchievedInfoResponse
{
[JsonPropertyName("achieved_mission_list")] [Key("achieved_mission_list")]
public List AchievedMissionList { get; set; } = new();
[JsonPropertyName("achieved_mission_reward_list")] [Key("achieved_mission_reward_list")]
public List AchievedMissionRewardList { get; set; } = new();
[JsonPropertyName("mission_start_data")] [Key("mission_start_data")]
public List MissionStartData { get; set; } = new();
[JsonPropertyName("battle_pass_reward_list")] [Key("battle_pass_reward_list")]
public List