neon-sprawl/server/NeonSprawl.Server/Game/PositionState/PositionStateApi.cs

28 lines
918 B
C#

namespace NeonSprawl.Server.Game.PositionState;
/// <summary>Maps HTTP routes for authoritative position read API.</summary>
public static class PositionStateApi
{
public static WebApplication MapPositionStateApi(this WebApplication app)
{
app.MapGet(
"/game/players/{id}/position",
(string id, IPositionStateStore store) =>
{
if (!store.TryGetPosition(id, out var snap))
return Results.NotFound();
var body = new PositionStateResponse
{
SchemaVersion = PositionStateResponse.CurrentSchemaVersion,
PlayerId = id,
Position = new PositionVector { X = snap.X, Y = snap.Y, Z = snap.Z },
Sequence = snap.Sequence,
};
return Results.Json(body);
});
return app;
}
}