// service_menu.hpp - Constants del menu de servei (F12)
// © 2026 JailDesigner

#pragma once

#include <SDL3/SDL.h>

namespace Defaults::ServiceMenu {

    // ---- Mides en coordenades logiques del joc (1280×720) ----
    // BOX_WIDTH_MIN es el minim: si el titol o algun item no hi caben, el
    // marc s'expandeix dinamicament amb animacio (cf. WIDTH_RATE).
    constexpr int BOX_WIDTH_MIN = 460;
    constexpr int GAP_Y = 22;
    constexpr int TITLE_HEIGHT = 36;     // scale 0.85 ≈ 34 px de text
    constexpr int SUBTITLE_HEIGHT = 18;  // scale 0.4 ≈ 16 px de text
    constexpr int SEPARATOR_HEIGHT = 1;
    constexpr int ITEM_HEIGHT = 38;  // scale 0.55 ≈ 22 px de text + padding per al highlight
    constexpr int ITEM_GAP_Y = 6;

    // Brackets als 4 cantons (substitueixen la vora completa: estètica sci-fi).
    constexpr int CORNER_ARM_H = 48;
    constexpr int CORNER_ARM_V = 28;
    constexpr int CORNER_THICKNESS = 2;

    // ---- Animacio open/close (mateixos parametres que aee_arcade) ----
    constexpr float OPEN_SPEED = 8.0F;    // ~125 ms a obrir
    constexpr float CLOSE_SPEED = 10.0F;  // ~100 ms a tancar
    constexpr float HEIGHT_RATE = 12.0F;  // smoothing exponencial de l'alçada de la caixa
    constexpr float WIDTH_RATE = 12.0F;   // smoothing per a canvis d'ample entre pagines

    // ---- Animacio del highlight (rectangle del cursor) ----
    // Rate=18 dona settling ~0.17 s al 95% (ease-out exponencial).
    constexpr float HIGHLIGHT_RATE = 18.0F;
    constexpr int HIGHLIGHT_TICK_LEN = 10;  // longitud dels ticks a cada cantonada
    constexpr int HIGHLIGHT_THICKNESS = 1;
    constexpr int HIGHLIGHT_PAD_X = 18;      // padding lateral del rect respecte al text
    constexpr int HIGHLIGHT_PAD_Y = 4;       // padding vertical
    constexpr int TEXT_INSET_X = 16;         // marge intern del text dins del highlight (label esq / valor dre)
    constexpr int MIN_LABEL_VALUE_GAP = 30;  // mínim gap entre label i valor (per al càlcul d'ample dinàmic)

    // ---- Colors RGBA ----
    constexpr SDL_Color BG_COLOR{.r = 0, .g = 12, .b = 24, .a = 215};
    constexpr SDL_Color CORNER_COLOR{.r = 120, .g = 220, .b = 255, .a = 255};  // cian neon
    constexpr SDL_Color TITLE_COLOR{.r = 200, .g = 240, .b = 255, .a = 255};
    constexpr SDL_Color SUBTITLE_COLOR{.r = 110, .g = 170, .b = 210, .a = 220};  // cian apagat
    constexpr SDL_Color SEPARATOR_COLOR{.r = 60, .g = 120, .b = 180, .a = 180};
    constexpr SDL_Color LABEL_COLOR{.r = 170, .g = 210, .b = 240, .a = 255};
    constexpr SDL_Color CURSOR_COLOR{.r = 255, .g = 230, .b = 120, .a = 255};       // groc per al text sel·leccionat
    constexpr SDL_Color HIGHLIGHT_OUTLINE{.r = 255, .g = 230, .b = 120, .a = 255};  // mateix groc, opac
    constexpr SDL_Color HIGHLIGHT_FILL{.r = 255, .g = 230, .b = 120, .a = 36};      // wash translucid

    // ---- Tipografia (VectorText). Scale 1.0 = caracter 20×40 px ----
    constexpr float TITLE_SCALE = 0.85F;     // mateixa escala que el HUD del scoreboard
    constexpr float SUBTITLE_SCALE = 0.40F;  // sota el titol, info decorativa (versio/hash)
    constexpr float ITEM_SCALE = 0.55F;      // mateixa escala que les notificacions
    constexpr float TEXT_SPACING = 2.0F;

    // ---- Sons UI (relatius a data/sounds/), portats d'aee_arcade ----
    constexpr const char* SELECT_SOUND = "ui/menu_select.wav";
    constexpr const char* ACCEPT_SOUND = "ui/menu_accept.wav";

}  // namespace Defaults::ServiceMenu
