#pragma once

#include <SDL3/SDL.h>

// Tecles GUI (capa de presentació — finestra, zoom, shaders, etc.)
namespace Defaults::KeysGUI {
    constexpr SDL_Scancode DEC_ZOOM = SDL_SCANCODE_F1;
    constexpr SDL_Scancode INC_ZOOM = SDL_SCANCODE_F2;
    constexpr SDL_Scancode FULLSCREEN = SDL_SCANCODE_F3;
    constexpr SDL_Scancode TOGGLE_SHADER = SDL_SCANCODE_F4;
    constexpr SDL_Scancode TOGGLE_ASPECT_RATIO = SDL_SCANCODE_F5;
    constexpr SDL_Scancode TOGGLE_SUPERSAMPLING = SDL_SCANCODE_F6;
    constexpr SDL_Scancode NEXT_SHADER = SDL_SCANCODE_F7;
    constexpr SDL_Scancode NEXT_SHADER_PRESET = SDL_SCANCODE_F8;
    constexpr SDL_Scancode TOGGLE_STRETCH_FILTER = SDL_SCANCODE_F9;
    constexpr SDL_Scancode TOGGLE_RENDER_INFO = SDL_SCANCODE_F10;
    constexpr SDL_Scancode MENU_TOGGLE = SDL_SCANCODE_F12;
}  // namespace Defaults::KeysGUI

// Tecles de joc (moviment del personatge, accions)
namespace Defaults::KeysGame {
    constexpr SDL_Scancode UP = SDL_SCANCODE_UP;
    constexpr SDL_Scancode DOWN = SDL_SCANCODE_DOWN;
    constexpr SDL_Scancode LEFT = SDL_SCANCODE_LEFT;
    constexpr SDL_Scancode RIGHT = SDL_SCANCODE_RIGHT;
    constexpr SDL_Scancode EXIT = SDL_SCANCODE_ESCAPE;
}  // namespace Defaults::KeysGame

namespace Defaults::Video {
    constexpr bool GPU_ACCELERATION = true;
    constexpr bool SHADER_ENABLED = false;
    constexpr bool SUPERSAMPLING = false;
    constexpr bool INTEGER_SCALE = true;
    constexpr bool ASPECT_RATIO_4_3 = true;        // CRT original estira 200→240
    constexpr bool STRETCH_FILTER_LINEAR = false;  // Filtre per a l'estirament 4:3 (false=NEAREST)
    constexpr int DOWNSCALE_ALGO = 1;              // 0=bilinear, 1=Lanczos2, 2=Lanczos3
    constexpr bool LINEAR_UPSCALE = false;
}  // namespace Defaults::Video

namespace Defaults::Audio {
    constexpr float VOLUME = 1.0F;
    constexpr bool MUSIC_ENABLED = true;
    constexpr float MUSIC_VOLUME = 0.8F;
    constexpr bool SOUND_ENABLED = true;
    constexpr float SOUND_VOLUME = 1.0F;
}  // namespace Defaults::Audio

namespace Defaults::Window {
    constexpr int ZOOM = 3;
    constexpr bool FULLSCREEN = false;
}  // namespace Defaults::Window

namespace Defaults::Game {
    constexpr int HABITACIO_INICIAL = 1;
    constexpr int PIRAMIDE_INICIAL = 255;
    constexpr int VIDES = 5;
}  // namespace Defaults::Game
