namespace NeonSprawl.Server.Game.PositionState;

/// <summary>
/// Binds the <c>Game</c> configuration section (dev player seed for local authority).
/// </summary>
public sealed class GamePositionOptions
{
    public const string SectionName = "Game";

    /// <summary>Logical player id seeded in the in-memory store (URL-safe string).</summary>
    public string DevPlayerId { get; set; } = "dev-local-1";

    /// <summary>When true, maps <c>POST …/__dev/mastery-fixture</c> for Bruno/manual QA state setup (also enabled in Development).</summary>
    public bool EnableMasteryFixtureApi { get; set; }

    /// <summary>World position for the dev player at process start.</summary>
    public DefaultPositionOptions DefaultPosition { get; set; } = new();

    /// <summary>NS-19: per-command step limits and optional district bounds.</summary>
    public MovementValidationOptions MovementValidation { get; set; } = new();
}

/// <summary>Default spawn coordinates for the configured dev player.</summary>
public sealed class DefaultPositionOptions
{
    public double X { get; set; }
    public double Y { get; set; }
    public double Z { get; set; }
}
