#pragma once

#include <SDL3/SDL.h>

// Tamaño de bloque
namespace Tile {
constexpr int SIZE = 8;
constexpr int HALF_SIZE = SIZE / 2;
}  // namespace Tile

namespace GameCanvas {
constexpr int WIDTH = 320;
constexpr int HEIGHT = 240;
constexpr int CENTER_X = WIDTH / 2;
constexpr int FIRST_QUARTER_X = WIDTH / 4;
constexpr int THIRD_QUARTER_X = (WIDTH / 4) * 3;
constexpr int CENTER_Y = HEIGHT / 2;
constexpr int FIRST_QUARTER_Y = HEIGHT / 4;
constexpr int THIRD_QUARTER_Y = (HEIGHT / 4) * 3;
}  // namespace GameCanvas

namespace PlayArea {
// Origen (esquina superior izquierda)
constexpr int X = 0;
constexpr int Y = 0;

// Dimensiones en tiles
constexpr int TILE_COLS = 40;                      // Ancho del mapa en tiles
constexpr int TILE_ROWS = 24;                      // Alto del mapa en tiles
constexpr int TILE_COUNT = TILE_COLS * TILE_ROWS;  // 960 tiles totales

// Dimensiones en pixels
constexpr int WIDTH = TILE_COLS * Tile::SIZE;   // 320
constexpr int HEIGHT = TILE_ROWS * Tile::SIZE;  // 192

// Bordes (derivados, útiles para colisiones)
constexpr int LEFT = X;
constexpr int TOP = Y;
constexpr int RIGHT = X + WIDTH;    // 320
constexpr int BOTTOM = Y + HEIGHT;  // 192

// Puntos de referencia
constexpr int CENTER_X = X + (WIDTH / 2);   // 160
constexpr int CENTER_Y = Y + (HEIGHT / 2);  // 96
constexpr int QUARTER_X = WIDTH / 4;
constexpr int QUARTER_Y = HEIGHT / 4;
}  // namespace PlayArea

namespace ScoreboardArea {
// Origen (justo debajo de PlayArea)
constexpr int X = 0;
constexpr int Y = PlayArea::BOTTOM;  // 192

// Dimensiones
constexpr int WIDTH = GameCanvas::WIDTH;  // 320
constexpr int HEIGHT = (6 * Tile::SIZE);  // 48

// Bordes
constexpr int LEFT = X;
constexpr int TOP = Y;
constexpr int RIGHT = X + WIDTH;
constexpr int BOTTOM = Y + HEIGHT;  // 240
}  // namespace ScoreboardArea

namespace Collision {
constexpr int NONE = -1;
}  // namespace Collision

namespace Flip {
constexpr SDL_FlipMode LEFT = SDL_FLIP_HORIZONTAL;
constexpr SDL_FlipMode RIGHT = SDL_FLIP_NONE;
}  // namespace Flip
