polimorfise d'enemics
moving platforms
This commit is contained in:
44
source/game/gameplay/platform_manager.hpp
Normal file
44
source/game/gameplay/platform_manager.hpp
Normal 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_;
|
||||
};
|
||||
Reference in New Issue
Block a user