From 77be863f4f15d2481a64e4e8dadb4060a6e4e590 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 11 Feb 2018 12:34:52 -0500 Subject: Implemented map rendering and basic collision Only wall and platform collision currently works, and map edges are not currently implemented. --- src/entity_manager.h | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'src/entity_manager.h') diff --git a/src/entity_manager.h b/src/entity_manager.h index 9068fe3..7fd82fc 100644 --- a/src/entity_manager.h +++ b/src/entity_manager.h @@ -106,7 +106,7 @@ public: { if ((entity >= entities.size()) || slotAvailable[entity]) { - throw std::invalid_argument("Cannot delete non-existent entity"); + throw std::invalid_argument("Cannot get non-existent entity"); } EntityData& data = entities[entity]; @@ -138,7 +138,7 @@ public: { if ((entity >= entities.size()) || slotAvailable[entity]) { - throw std::invalid_argument("Cannot delete non-existent entity"); + throw std::invalid_argument("Cannot get non-existent entity"); } EntityData& data = entities[entity]; @@ -167,7 +167,7 @@ public: { if ((entity >= entities.size()) || slotAvailable[entity]) { - throw std::invalid_argument("Cannot delete non-existent entity"); + throw std::invalid_argument("Cannot get non-existent entity"); } EntityData& data = entities[entity]; @@ -181,6 +181,20 @@ public: return *dynamic_cast(data.components[componentType].get()); } + template + bool hasComponent(id_type entity) + { + if ((entity >= entities.size()) || slotAvailable[entity]) + { + throw std::invalid_argument("Cannot get non-existent entity"); + } + + EntityData& data = entities[entity]; + std::type_index componentType = typeid(T); + + return data.components.count(componentType); + } + template std::set getEntitiesWithComponents() { -- cgit 1.4.1