namespace NyxCS2.UI;

public class AppSettings
{
    // ---- player ESP ----
    public bool EspEnabled = true;
    public bool Boxes = true;
    public bool HealthBar = true;
    public bool ShowName = true;
    public bool ShowDistance = true;
    public bool Snapline = true;
    public bool EnemiesOnly = false;

    // ---- player text flags (drawn under the name) ----
    public bool ShowPing = true;       // Player.Ping (already read)
    public bool ShowMoney = true;      // m_iAccount read
    public bool ShowAmmo = true;       // m_iClip1 / m_iPrimaryReserveAmmoCount read
    public bool ShowArmor = true;      // Player.Armor (already read)
    public bool ShowHealthText = true; // HP number on the box

    // ---- state flags (one netvar read each) ----
    public bool FlagFlashed = true;    // m_flFlashDuration > 0
    public bool FlagScoped = true;     // m_bIsScoped
    public bool FlagDefusing = true;   // m_bIsDefusing
    public bool FlagReloading = true;  // reloading/m_bReloading approximation
    public bool FlagC4 = true;         // m_bHasC4

    // ---- world ESP ----
    public bool BombEsp = true;        // planted C4 box + screen marker
    public bool BombLocation = true;   // "BOMB A/B" text on the marker
    public bool BombTimer = true;      // countdown under the marker
    public bool DroppedWeapons = true; // ground weapons via the item-def chain
    public bool SpectatorList = true;  // "who is spectating you" panel
    public bool SpectatorDetailed = true; // name + mode (vs just count)

    // ---- overlay extras ----
    public bool Crosshair = true;
    public bool ShowFovCircle = true;    // aim FOV circle at screen center
    public bool ShowPlayerList = true;   // player list panel (top right)
    public bool Skeleton = true;         // bone/skeleton ESP
    public bool WeaponEsp = true;        // weapon name under the box
    public bool ArmorBar = true;         // armor bar next to health bar
    public bool Watermark = true;        // version + fps top-left
    public bool VelocityGraph = true;    // local speed graph (right side)
    public bool Speedometer = true;      // "123 u/s" under crosshair info
    public bool Radar = true;            // 2D minimap, top-left (like reference menus)
    public bool RadarNoRotate = false;   // keep radar north-up
    public float RadarRange = 2000f;     // units (in-game units, ~2000 = 30m)
    public bool StreamProof = false;     // hide overlay while OBS/XSplit is running

    // ---- aim ----
    public bool AimEnabled = true;
    public int AimKey = 3;      // 1=always 2=right mouse 3=alt
    public int AimFov = 15;     // degrees
    public int AimSmooth = 6;   // frames to converge
    public int MaxDistance = 0; // meters, 0 = unlimited
    public int AimPos = 0;      // 0=head 1=chest 2=legs (skeleton bones)
    public int TargetMode = 0;  // 0=crosshair-closest 1=lowest HP 2=nearest
    public bool VisibleCheck = false; // skip targets we cannot see (screen-occlusion)
    public bool Rcs = false;    // subtract m_aimPunchAngle from the angle write
    public bool ShowTarget = false;   // accent the locked target on the overlay

    // ---- trigger ----
    public bool Triggerbot = false;
    public int TriggerKey = 2;  // 1=always 2=right mouse 3=alt
    public int TriggerDelay = 120;

    // ---- misc ----
    public bool AntiFlash = true;   // zero flash duration
    public bool FreeCpu = false;    // slower redraw to free CPU (still ~30fps)
}