namespace NeonSprawl.Server.Game.Crafting; /// Maps GET /game/world/recipe-definitions (NEO-68). public static class RecipeDefinitionsWorldApi { public static WebApplication MapRecipeDefinitionsWorldApi(this WebApplication app) { app.MapGet( "/game/world/recipe-definitions", (IRecipeDefinitionRegistry registry) => { var defs = registry.GetDefinitionsInIdOrder(); var recipes = new List(defs.Count); foreach (var d in defs) { recipes.Add( new RecipeDefinitionJson { Id = d.Id, DisplayName = d.DisplayName, RecipeKind = d.RecipeKind, RequiredSkillId = d.RequiredSkillId, Inputs = MapIoRows(d.Inputs), Outputs = MapIoRows(d.Outputs), }); } return Results.Json( new RecipeDefinitionsListResponse { SchemaVersion = RecipeDefinitionsListResponse.CurrentSchemaVersion, Recipes = recipes, }); }); return app; } private static List MapIoRows(IReadOnlyList rows) { var list = new List(rows.Count); foreach (var row in rows) { list.Add( new RecipeIoJson { ItemId = row.ItemId, Quantity = row.Quantity, }); } return list; } }