namespace RioJoy.Core.Calibration;

/// <summary>
/// Per-profile axis calibration options. Defaults mirror the legacy
/// <c>JoyStick</c> ini section (riovjoy2.cpp#L345): all inverts off,
/// <see cref="EnableZR"/> on. When <see cref="EnableZR"/> is set, the pedals are
/// mixed into a single rudder axis (Rz) and Rx/Ry are held centered; when clear,
/// the pedals drive Rx/Ry directly and Rz is held centered.
/// </summary>
public sealed record AxisCalibrationConfig
{
    public bool InvertX { get; init; }
    public bool InvertY { get; init; }
    public bool InvertZ { get; init; }
    public bool InvertXR { get; init; }
    public bool InvertYR { get; init; }
    public bool InvertZR { get; init; }

    /// <summary>Mix the two pedals into a rudder axis (Rz). Legacy default: on.</summary>
    public bool EnableZR { get; init; } = true;
}
