Solo pollers park (3001 RETRY); two concurrent pollers pair and both receive 3004 + same BattleId. Cache hits on the first arriver's next poll. ?scripted=1 retains today's solo Scripted path for dev work. Response DTO's BattleId/NodeServerUrl become nullable so 3001 omits them on the wire (WhenWritingNull policy drops them). ASP.NET's default bool binder rejects "1" as a value, so the scripted opt-in is bound as string? and parsed permissively (accepts "1" and "true"/"True"/etc.) rather than relying on built-in bool binding.
41 lines
1.7 KiB
C#
41 lines
1.7 KiB
C#
using System.Text.Json.Serialization;
|
|
using MessagePack;
|
|
using SVSim.EmulatedEntrypoint.Models.Dtos.Common;
|
|
|
|
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Responses.ArenaTwoPick;
|
|
|
|
[MessagePackObject]
|
|
public sealed class DoMatchingResponseDto
|
|
{
|
|
[JsonPropertyName("matching_state")] [Key("matching_state")]
|
|
public int MatchingState { get; set; } = 3004; // SUCCEEDED
|
|
|
|
[JsonPropertyName("timeout_period")] [JsonConverter(typeof(StringifiedIntConverter))] [Key("timeout_period")]
|
|
public int TimeoutPeriod { get; set; } = 30;
|
|
|
|
[JsonPropertyName("retry_period")] [JsonConverter(typeof(StringifiedIntConverter))] [Key("retry_period")]
|
|
public int RetryPeriod { get; set; } = 3;
|
|
|
|
[JsonPropertyName("battle_id")] [Key("battle_id")]
|
|
public string? BattleId { get; set; }
|
|
|
|
[JsonPropertyName("node_server_url")] [Key("node_server_url")]
|
|
public string? NodeServerUrl { get; set; }
|
|
|
|
// Required by the client when matching_state ∈ {3004, 3007, 3011} —
|
|
// DoMatchingBase.SettingCardMasterId does jsonData["card_master_id"].ToInt()
|
|
// with no Keys.Contains guard, so omitting it throws KeyNotFoundException.
|
|
// Value matches what /load/index returns (the "current battle card master").
|
|
[JsonPropertyName("card_master_id")] [Key("card_master_id")]
|
|
public int CardMasterId { get; set; } = 1;
|
|
|
|
[JsonPropertyName("room_param")] [Key("room_param")]
|
|
public string RoomParam { get; set; } = "";
|
|
|
|
[JsonPropertyName("mission_parameter")] [Key("mission_parameter")]
|
|
public Dictionary<string, string> MissionParameter { get; set; } = new()
|
|
{
|
|
["follower_play_count_for_mission"] = "{me.game_play_cards_other_self.unit.count}",
|
|
};
|
|
}
|