namespace NeonSprawl.Server.Game.Combat;
/// Maps GET /game/world/ability-definitions (NEO-78).
public static class AbilityDefinitionsWorldApi
{
public static WebApplication MapAbilityDefinitionsWorldApi(this WebApplication app)
{
app.MapGet(
"/game/world/ability-definitions",
(IAbilityDefinitionRegistry registry) =>
{
var defs = registry.GetDefinitionsInIdOrder();
var abilities = new List(defs.Count);
foreach (var d in defs)
{
abilities.Add(
new AbilityDefinitionJson
{
Id = d.Id,
DisplayName = d.DisplayName,
BaseDamage = d.BaseDamage,
CooldownSeconds = d.CooldownSeconds,
AbilityKind = d.AbilityKind,
});
}
return Results.Json(
new AbilityDefinitionsListResponse
{
SchemaVersion = AbilityDefinitionsListResponse.CurrentSchemaVersion,
Abilities = abilities,
});
});
return app;
}
}