#include "World.hpp" namespace LV::Server { World::World(DefWorldId_t defId) : DefId(defId) { } World::~World() { } void World::onUpdate(GameServer *server, float dtime) { } void World::onCEC_RegionsEnter(ContentEventController *cec, const std::vector &enter) { for(const Pos::GlobalRegion &pos : enter) { std::unique_ptr ®ion = Regions[pos]; if(!region) { region = std::make_unique(); NeedToLoad.push_back(pos); } region->CECs.push_back(cec); } } void World::onCEC_RegionsLost(ContentEventController *cec, const std::vector &lost) { for(const Pos::GlobalRegion &pos : lost) { auto region = Regions.find(pos); if(region == Regions.end()) continue; std::vector &CECs = region->second->CECs; for(size_t iter = 0; iter < CECs.size(); iter++) { if(CECs[iter] == cec) { CECs.erase(CECs.begin()+iter); break; } } } } Region* World::forceLoadOrGetRegion(Pos::GlobalRegion pos) { std::unique_ptr ®ion = Regions[pos]; if(!region) region = std::make_unique(); if(!region->IsLoaded) { region->IsLoaded = true; } return region.get(); } }