// rendering.hpp - Opcions de renderització
// © 2026 JailDesigner

#pragma once

#include <array>

namespace Defaults::Rendering {

    constexpr int VSYNC_DEFAULT = 1;      // 0=disabled, 1=enabled
    constexpr int ANTIALIAS_DEFAULT = 1;  // 0=disabled, 1=enabled (AA geomètric a les línies)

    // Grosor global per defecte de les línies. 1.5 dóna línia visible i crujent;
    // 1.0 es veu massa fi en pantalles grans. Configurable via setLineThickness.
    constexpr float LINE_THICKNESS_DEFAULT = 1.5F;

    // Resolució del render target offscreen. El tamany lògic del joc roman a
    // 1280×720 (coordenades dels objectes); aquesta és la resolució física a
    // la qual es rasteritzen les línies abans de la composició final.
    struct ResolutionPreset {
        int w;
        int h;
    };

    constexpr std::array<ResolutionPreset, 5> RESOLUTION_PRESETS{{
        {.w = 1280, .h = 720},   // HD 720p (default)
        {.w = 1600, .h = 900},   // HD+ 900p
        {.w = 1920, .h = 1080},  // Full HD 1080p
        {.w = 2560, .h = 1440},  // QHD 1440p
        {.w = 3840, .h = 2160}   // 4K UHD 2160p
    }};

    constexpr int RENDER_WIDTH_DEFAULT = 1280;
    constexpr int RENDER_HEIGHT_DEFAULT = 720;

    constexpr auto isValidRenderResolution(int w, int h) -> bool {
        for (const auto& preset : RESOLUTION_PRESETS) {
            if (preset.w == w && preset.h == h) {
                return true;
            }
        }
        return false;
    }

}  // namespace Defaults::Rendering
