polimorfise d'enemics

moving platforms
This commit is contained in:
2026-04-08 14:09:28 +02:00
parent 5e02854e7a
commit 73a520bf3c
20 changed files with 632 additions and 106 deletions

View File

@@ -0,0 +1,44 @@
#pragma once
#include <SDL3/SDL.h>
#include <memory> // Para shared_ptr
#include <vector> // Para vector
#include "game/entities/moving_platform.hpp" // Para MovingPlatform, MovingPlatform::Data
class PlatformManager {
public:
PlatformManager() = default;
~PlatformManager() = default;
// Prohibir copia y movimiento
PlatformManager(const PlatformManager&) = delete;
auto operator=(const PlatformManager&) -> PlatformManager& = delete;
PlatformManager(PlatformManager&&) = delete;
auto operator=(PlatformManager&&) -> PlatformManager& = delete;
// Gestión de plataformas
void addPlatform(std::shared_ptr<MovingPlatform> platform);
void clear();
[[nodiscard]] auto isEmpty() const -> bool;
// Actualización y renderizado
void update(float delta_time);
void render();
// Detección de plataforma bajo el jugador
// Devuelve puntero a la plataforma sobre la que está el jugador, o nullptr
auto checkPlayerOnPlatform(const SDL_FRect& player_collider, float player_vy) -> MovingPlatform*;
#ifdef _DEBUG
void updateAnimations(float delta_time);
void resetPositions(const std::vector<MovingPlatform::Data>& platform_data);
[[nodiscard]] auto getCount() const -> int;
auto getPlatform(int index) -> std::shared_ptr<MovingPlatform>&;
void removeLastPlatform();
#endif
private:
std::vector<std::shared_ptr<MovingPlatform>> platforms_;
};