feat(grid): graella verda fosca de fons al playfield (16x8)
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include "core/defaults/entities.hpp"
|
||||
#include "core/defaults/floating_score.hpp"
|
||||
#include "core/defaults/game.hpp"
|
||||
#include "core/defaults/grid.hpp"
|
||||
#include "core/defaults/hud.hpp"
|
||||
#include "core/defaults/math.hpp"
|
||||
#include "core/defaults/notifier.hpp"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
// grid.hpp - Configuració de la grilla de fons del playfield
|
||||
// © 2026 JailDesigner
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace Defaults::Grid {
|
||||
|
||||
constexpr int COLUMNS = 16; // cel·les omplen tota la PLAYAREA: cell_w = w/16
|
||||
constexpr int ROWS = 8; // cel·les omplen tota la PLAYAREA: cell_h = h/8 (≈2% més altes que amples)
|
||||
constexpr float BRIGHTNESS = 0.20F; // intensitat respecte al color global (border = 1.0)
|
||||
|
||||
} // namespace Defaults::Grid
|
||||
@@ -0,0 +1,37 @@
|
||||
// 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
|
||||
@@ -0,0 +1,23 @@
|
||||
// playfield_grid.hpp - Grilla de fons del playfield (línies verdes fosques)
|
||||
// © 2026 JailDesigner
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/rendering/render_context.hpp"
|
||||
|
||||
namespace Graphics {
|
||||
|
||||
// Pinta una graella interior dins de Defaults::Zones::PLAYAREA.
|
||||
// Cel·les quadrades; el nombre de columnes és fix (Defaults::Grid::COLUMNS),
|
||||
// les files es deriven del que cap dins de l'altura.
|
||||
// Color: oscil·lador global (mateix to que el border); brightness fixa al 25%.
|
||||
class PlayfieldGrid {
|
||||
public:
|
||||
explicit PlayfieldGrid(Rendering::Renderer* renderer);
|
||||
void draw() const;
|
||||
|
||||
private:
|
||||
Rendering::Renderer* renderer_;
|
||||
};
|
||||
|
||||
} // namespace Graphics
|
||||
@@ -30,7 +30,8 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context)
|
||||
firework_manager_(sdl.getRenderer()),
|
||||
floating_score_manager_(sdl.getRenderer()),
|
||||
trail_manager_(sdl.getRenderer()),
|
||||
text_(sdl.getRenderer()) {
|
||||
text_(sdl.getRenderer()),
|
||||
playfield_grid_(sdl.getRenderer()) {
|
||||
// Recuperar configuración de match des del context
|
||||
match_config_ = context_.getMatchConfig();
|
||||
|
||||
@@ -595,6 +596,7 @@ void GameScene::drawInitHudState() {
|
||||
}
|
||||
|
||||
void GameScene::drawLevelStartState() {
|
||||
playfield_grid_.draw();
|
||||
drawMargins();
|
||||
trail_manager_.draw();
|
||||
drawActiveShipsAlive();
|
||||
@@ -607,6 +609,7 @@ void GameScene::drawLevelStartState() {
|
||||
}
|
||||
|
||||
void GameScene::drawPlayingState() {
|
||||
playfield_grid_.draw();
|
||||
drawMargins();
|
||||
trail_manager_.draw();
|
||||
drawActiveShipsAlive();
|
||||
@@ -619,6 +622,7 @@ void GameScene::drawPlayingState() {
|
||||
}
|
||||
|
||||
void GameScene::drawLevelCompletedState() {
|
||||
playfield_grid_.draw();
|
||||
drawMargins();
|
||||
trail_manager_.draw();
|
||||
drawActiveShipsAlive();
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "core/graphics/playfield_grid.hpp"
|
||||
#include "core/graphics/vector_text.hpp"
|
||||
#include "core/physics/physics_world.hpp"
|
||||
#include "core/rendering/sdl_manager.hpp"
|
||||
@@ -80,6 +81,9 @@ class GameScene final : public Scene {
|
||||
// Text vectorial
|
||||
Graphics::VectorText text_;
|
||||
|
||||
// Grilla de fons del playfield
|
||||
Graphics::PlayfieldGrid playfield_grid_;
|
||||
|
||||
// [NEW] Stage system
|
||||
std::unique_ptr<StageSystem::StageSystemConfig> stage_config_;
|
||||
std::unique_ptr<StageSystem::StageManager> stage_manager_;
|
||||
|
||||
Reference in New Issue
Block a user