diff --git a/guecs.cpp b/guecs.cpp index 9b1aebe..5fb2029 100644 --- a/guecs.cpp +++ b/guecs.cpp @@ -80,23 +80,24 @@ namespace guecs { dbc::check(good, "LEL parsing failed."); for(auto& [name, cell] : $parser.cells) { - auto ent = entity(name); + auto ent = init_entity(name); $world.set(ent, cell); } } + DinkyECS::Entity UI::init_entity(std::string name) { + auto entity = $world.entity(); + // this lets you look up an entity by name + $name_ents.insert_or_assign(name, entity); + // this makes it easier to get the name during querying + $world.set(entity, {name}); + return entity; + } + DinkyECS::Entity UI::entity(std::string name) { - if($name_ents.contains(name)) { - // already exists so just return it - return $name_ents.at(name); - } else { - auto entity = $world.entity(); - // this lets you look up an entity by name - $name_ents.insert_or_assign(name, entity); - // this makes it easier to get the name during querying - $world.set(entity, {name}); - return entity; - } + dbc::check($name_ents.contains(name), + fmt::format("GUECS entity {} does not exist. Forgot to init_entity?", name)); + return $name_ents.at(name); } void UI::init() { diff --git a/guecs.hpp b/guecs.hpp index 841dc03..79262c5 100644 --- a/guecs.hpp +++ b/guecs.hpp @@ -114,6 +114,7 @@ namespace guecs { void position(int x, int y, int width, int height); void layout(std::string grid); + DinkyECS::Entity init_entity(std::string name); DinkyECS::Entity entity(std::string name); inline lel::CellMap& cells() {