using System.Text.Json.Serialization;
using MessagePack;
using SVSim.EmulatedEntrypoint.Models.Dtos.Common.ArenaTwoPick;
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Responses.ArenaTwoPick;
[MessagePackObject]
public class FinishResponseDto
{
///
/// Per-grant deltas — drives the "+N received" popup. Parsed by the client via
/// ReceivedReward(JsonData) (Shadowverse_Code/ReceivedReward.cs:25) which expects
/// the {reward_type, reward_detail_id, item_type, reward_count?, is_usable} shape — distinct
/// from the RewardEntryDto shape used by .
///
[JsonPropertyName("rewards")] [Key("rewards")]
public List Rewards { get; set; } = new();
/// Post-state totals — drives PlayerStaticData.UpdateHaveUserGoodsNumByJsonData.
[JsonPropertyName("reward_list")] [Key("reward_list")]
public List RewardList { get; set; } = new();
}
///
/// Wire shape parsed by Shadowverse_Code/ReceivedReward.cs ctor. Used in the
/// rewards arrays of /arena_two_pick/{retire,finish}.
///
[MessagePackObject]
public class TwoPickRewardReceivedDto
{
[JsonPropertyName("reward_type")] [Key("reward_type")]
public int RewardType { get; set; }
[JsonPropertyName("reward_detail_id")] [Key("reward_detail_id")]
public long RewardDetailId { get; set; }
[JsonPropertyName("reward_count")] [Key("reward_count")]
public int RewardCount { get; set; }
///
/// Item-master item_type enum (1=challenge ticket, 2=card-pack ticket, …) for Item-typed
/// rewards. 0 for currencies (Crystal/Rupy/RedEther) — the client only reads this for Items.
///
[JsonPropertyName("item_type")] [Key("item_type")]
public int ItemType { get; set; }
[JsonPropertyName("is_usable")] [Key("is_usable")]
public bool IsUsable { get; set; } = true;
}