#include "TeamManager.h" #include #include #include #include #include namespace kurator { namespace sim { TeamManager::TeamManager() : teams {}, generator {std::random_device{}()} { } void TeamManager::add(int team, entt::entity entity) { for (int i = teams.size(); i < team + 1; ++i) teams.emplace_back(); teams.at(team).push_back(std::move(entity)); } TeamManager::Team TeamManager::get(int team) const { return teams.at(team); } entt::entity TeamManager::random(int team) { auto& members = teams.at(team); if (members.size() == 0) return entt::null; std::uniform_int_distribution uniform{0, members.size() - 1}; return members.at(uniform(generator)); } void TeamManager::clear(entt::registry& registry) { for (auto& members : teams) { auto is_valid = [®istry](entt::entity entity){ return !registry.valid(entity); }; members.erase(std::remove_if(members.begin(), members.end(), is_valid), members.end()); } } } // namespace sim } // namespace kurator