#ifndef MAP_COLLISION_H #define MAP_COLLISION_H #include "entity.h" #include class Map; class Game; class MapCollisionComponent : public Component { public: MapCollisionComponent(const Map& map); void detectCollision(Game& game, Entity& entity, Entity& collider, std::pair old_position); private: enum class Direction { up, left, down, right }; struct Collision { enum class Type { wall, wrap, teleport, reverse, platform, danger }; double axis; double lower; double upper; Type type; }; void addCollision(double axis, double lower, double upper, Direction dir, Collision::Type type); void processCollision(Game& game, Entity& collider, Collision collision, Direction dir, std::pair old_position); std::list left_collisions; std::list right_collisions; std::list up_collisions; std::list down_collisions; const Map& map; }; #endif