Files
SVSimServer/SVSim.EmulatedEntrypoint/Matching/AIBotProfile.cs
gamer147 a55187e10e feat(matching): IBotRoster + hardcoded BotRoster fixture (8 bots, one per class)
AIBotProfile carries the cosmetic metadata the AI rank-battle start
endpoint composes into oppo_info. BotRoster.Pick is deterministic per
MatchContext so mid-flight retries get the same opponent. ai_id values
4001..4008 are placeholders per the existing ai-start.md TODO — we have
no live capture of the prod catalog.

Future improvement: migrate Roster to a bot-roster.json seed under
SVSim.Bootstrap/Data/seeds/ for editability without rebuilds.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-02 01:15:41 -04:00

24 lines
670 B
C#

namespace SVSim.EmulatedEntrypoint.Matching;
/// <summary>
/// Cosmetic + identity metadata for an AI opponent. Used to compose
/// <c>oppo_info</c> in the <c>/ai_&lt;fmt&gt;_rank_battle/start</c> response.
/// The wire keys are camelCase (sleeveId, emblemId, etc.) — the DTO handles
/// the JSON serialization; this record is the internal-facing shape.
/// </summary>
public sealed record AIBotProfile(
int AiId,
string CountryCode,
string UserName,
int SleeveId,
int EmblemId,
int DegreeId,
int FieldId,
int IsOfficial,
int ClassId,
int CharaId,
int Rank,
int BattlePoint,
int IsMasterRank,
int MasterPoint);