namespace Tornado3_2026Election.Domain;

public enum CutDebugOverrideMode
{
    None,
    Replace
}

public readonly record struct CutDebugOverride(
    CutDebugOverrideMode Mode,
    string? StringValue,
    double? NumberValue,
    bool? BooleanValue,
    byte R,
    byte G,
    byte B,
    byte A)
{
    public static CutDebugOverride None => new(CutDebugOverrideMode.None, null, null, null, 0, 0, 0, byte.MaxValue);

    public static CutDebugOverride ForString(string value)
    {
        return new(CutDebugOverrideMode.Replace, value, null, null, 0, 0, 0, byte.MaxValue);
    }

    public static CutDebugOverride ForNumber(double value)
    {
        return new(CutDebugOverrideMode.Replace, null, value, null, 0, 0, 0, byte.MaxValue);
    }

    public static CutDebugOverride ForVisibility(bool value)
    {
        return new(CutDebugOverrideMode.Replace, null, null, value, 0, 0, 0, byte.MaxValue);
    }

    public static CutDebugOverride ForColor(byte r, byte g, byte b, byte a = byte.MaxValue)
    {
        return new(CutDebugOverrideMode.Replace, null, null, null, r, g, b, a);
    }
}
