cd38101f99
Primera sub-fase del naming sweep. Punt era un struct sense
operacions, conservat per compatibilitat amb el Pascal original.
Substituit per Vec2, un aggregate amb operadors aritmetics, dot,
length, normalized i length_squared (camelBack: lengthSquared)
seguint les regles del .clang-tidy del projecte.
Canvis:
- core/types.hpp reescrit: nou struct Vec2 amb +=,-=,*=,/=,
unary -, ==, dot, length, lengthSquared, normalized
- Operadors fora de la classe: +, -, *, / (amb float per ambdues
bandes), - unari, ==
- Vec2 segueix sent aggregate (sense constructors definits):
els 'designated initializers' del codi existent funcionen igual:
Vec2{.x = ..., .y = ...}
- Sed global sobre 35 fitxers: tots els 'Punt' -> 'Vec2'
Net: 35 fitxers tocats, +180 / -114. Compila i enllaça.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
50 lines
1.6 KiB
C++
50 lines
1.6 KiB
C++
// entitat.hpp - Classe base abstracta per a totes les entitats del joc
|
|
// © 2025 Orni Attack - Arquitectura d'entitats
|
|
|
|
#pragma once
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
|
#include <memory>
|
|
|
|
#include "core/graphics/shape.hpp"
|
|
#include "core/types.hpp"
|
|
|
|
namespace Entities {
|
|
|
|
class Entitat {
|
|
public:
|
|
virtual ~Entitat() = default;
|
|
|
|
// Interfície principal (virtual pur)
|
|
virtual void inicialitzar() = 0;
|
|
virtual void actualitzar(float delta_time) = 0;
|
|
virtual void dibuixar() const = 0;
|
|
[[nodiscard]] virtual bool esta_actiu() const = 0;
|
|
|
|
// Interfície de col·lisió (override opcional)
|
|
[[nodiscard]] virtual float get_collision_radius() const { return 0.0F; }
|
|
[[nodiscard]] virtual bool es_collidable() const { return false; }
|
|
|
|
// Getters comuns (inline, sense overhead)
|
|
[[nodiscard]] const Vec2& get_centre() const { return centre_; }
|
|
[[nodiscard]] float get_angle() const { return angle_; }
|
|
[[nodiscard]] float get_brightness() const { return brightness_; }
|
|
[[nodiscard]] const std::shared_ptr<Graphics::Shape>& get_forma() const { return forma_; }
|
|
|
|
protected:
|
|
// Estat comú (accés directe, sense overhead)
|
|
SDL_Renderer* renderer_;
|
|
std::shared_ptr<Graphics::Shape> forma_;
|
|
Vec2 centre_;
|
|
float angle_{0.0F};
|
|
float brightness_{1.0F};
|
|
|
|
// Constructor protegit (classe abstracta)
|
|
Entitat(SDL_Renderer* renderer = nullptr)
|
|
: renderer_(renderer),
|
|
centre_({.x = 0.0F, .y = 0.0F}) {}
|
|
};
|
|
|
|
} // namespace Entities
|