using NeonSprawl.Server.Game.PositionState; namespace NeonSprawl.Server.Game.Combat; /// Maps GET /game/players/{id}/combat-health (NEO-95). public static class PlayerCombatHealthApi { public static WebApplication MapPlayerCombatHealthApi(this WebApplication app) { app.MapGet( "/game/players/{id}/combat-health", (string id, IPositionStateStore positions, IPlayerCombatHealthStore playerHealthStore) => { if (!positions.TryGetPosition(id, out _)) { return Results.NotFound(); } if (!playerHealthStore.TryGet(id, out var snapshot)) { return Results.NotFound(); } return Results.Json(BuildResponse(snapshot)); }); return app; } internal static PlayerCombatHealthResponse BuildResponse(in PlayerCombatHealthSnapshot snapshot) => new() { PlayerId = snapshot.PlayerId, MaxHp = snapshot.MaxHp, CurrentHp = snapshot.CurrentHp, Defeated = snapshot.Defeated, }; }