#include "CWorldsManager.h" #include worldid_t CWorldsManager::CreateWorld() { worldid_t id = GetNextFreeID(); Items.insert({ id, std::make_unique(id) }); return id; //TODO maybe net event? } CWorld* CWorldsManager::GetWorld(worldid_t id) { auto it = Items.find(id); return (Items.find(id) != Items.end() ? (*it).second.get() : nullptr); } void CWorldsManager::DeleteWorld(worldid_t id) { auto it = Items.find(id); if(it != Items.end()) { Items.erase(it); } } bool CWorldsManager::IsWorldExist(worldid_t id) const { return Items.find(id) != Items.end(); } size_t CWorldsManager::Count() const { return Items.size(); } worldid_t CWorldsManager::GetNextFreeID() const { for(worldid_t i = 0; i < std::numeric_limits::max(); i++) { if (Items.find(i) == Items.end()) { return i; } } return std::numeric_limits::max(); } void CWorldsManager::Update() { for(auto& kv : Items) { kv.second->Update(); } }