38 lines
1.4 KiB
C++
38 lines
1.4 KiB
C++
// playfield_grid.cpp - Implementació de la grilla de fons
|
|
// © 2026 JailDesigner
|
|
|
|
#include "core/graphics/playfield_grid.hpp"
|
|
|
|
#include "core/defaults.hpp"
|
|
#include "core/rendering/line_renderer.hpp"
|
|
|
|
namespace Graphics {
|
|
|
|
PlayfieldGrid::PlayfieldGrid(Rendering::Renderer* renderer)
|
|
: renderer_(renderer) {}
|
|
|
|
void PlayfieldGrid::draw() const {
|
|
const SDL_FRect& zona = Defaults::Zones::PLAYAREA;
|
|
const float CELL_W = zona.w / static_cast<float>(Defaults::Grid::COLUMNS);
|
|
const float CELL_H = zona.h / static_cast<float>(Defaults::Grid::ROWS);
|
|
|
|
const int X1 = static_cast<int>(zona.x);
|
|
const int Y1 = static_cast<int>(zona.y);
|
|
const int X2 = static_cast<int>(zona.x + zona.w);
|
|
const int Y2 = static_cast<int>(zona.y + zona.h);
|
|
|
|
// Línies verticals interiors (i=1..COLUMNS-1: no repetim el border)
|
|
for (int i = 1; i < Defaults::Grid::COLUMNS; i++) {
|
|
const int X = static_cast<int>(zona.x + (static_cast<float>(i) * CELL_W));
|
|
Rendering::linea(renderer_, X, Y1, X, Y2, Defaults::Grid::BRIGHTNESS);
|
|
}
|
|
|
|
// Línies horitzontals interiors (j=1..ROWS-1: no repetim el border)
|
|
for (int j = 1; j < Defaults::Grid::ROWS; j++) {
|
|
const int Y = static_cast<int>(zona.y + (static_cast<float>(j) * CELL_H));
|
|
Rendering::linea(renderer_, X1, Y, X2, Y, Defaults::Grid::BRIGHTNESS);
|
|
}
|
|
}
|
|
|
|
} // namespace Graphics
|