Files
SVSimServer/SVSim.EmulatedEntrypoint/Models/Dtos/Responses/ArenaTwoPick/RunFinishOutcome.cs
gamer147 94622a526d refactor(arena-tk2): FinishAsync returns RunFinishOutcome with WasFullClear signal
Introduces RunFinishOutcome — a semantic record that wraps the wire
FinishResponseDto with the controller-side WasFullClear signal used to fire
the challenge_full_clear mission event. The wire response isn't affected
(controller unwraps the .Response field before returning to the client);
RetireAsync stays returning FinishResponseDto because retire cannot full-clear.

Full-clear detection compares run.WinCount against ResolveMaxBattleCountAsync
rather than hard-coding 5, so a future TK2 rules-config change tracks
automatically. New test covers the full-clear signal explicitly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-04 13:17:23 -04:00

10 lines
493 B
C#

namespace SVSim.EmulatedEntrypoint.Models.Dtos.Responses.ArenaTwoPick;
/// <summary>
/// What <see cref="Services.IArenaTwoPickService.FinishAsync(long)"/> returns to
/// <c>ArenaTwoPickController.Finish</c>. The wire response is <see cref="Response"/>;
/// <see cref="WasFullClear"/> is a controller-side signal for the
/// <c>challenge_full_clear</c> mission emit and is never serialized.
/// </summary>
public sealed record RunFinishOutcome(FinishResponseDto Response, bool WasFullClear);