Files
projecte_2026/source/game/gameplay/platform_manager.hpp
2026-04-08 14:09:28 +02:00

45 lines
1.4 KiB
C++

#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_;
};