bool GlobalEvents::registerEvent(Event* event, const pugi::xml_node&) { GlobalEvent* globalEvent = static_cast<GlobalEvent*>(event); //event is guaranteed to be a GlobalEvent if (globalEvent->getEventType() == GLOBALEVENT_TIMER) { auto result = timerMap.emplace(globalEvent->getName(), globalEvent); if (result.second) { if (timerEventId == 0) { timerEventId = g_scheduler.addEvent(createSchedulerTask(SCHEDULER_MINTICKS, std::bind(&GlobalEvents::timer, this))); } return true; } } else if (globalEvent->getEventType() != GLOBALEVENT_NONE) { auto result = serverMap.emplace(globalEvent->getName(), globalEvent); if (result.second) { return true; } } else { // think event auto result = thinkMap.emplace(globalEvent->getName(), globalEvent); if (result.second) { if (thinkEventId == 0) { thinkEventId = g_scheduler.addEvent(createSchedulerTask(SCHEDULER_MINTICKS, std::bind(&GlobalEvents::think, this))); } return true; } } std::cout << "[Warning - GlobalEvents::configureEvent] Duplicate registered globalevent with name: " << globalEvent->getName() << std::endl; return false; }
bool GlobalEvents::registerEvent(Event* event, const pugi::xml_node&) { GlobalEvent* globalEvent = reinterpret_cast<GlobalEvent*>(event); if (globalEvent->getEventType() == GLOBALEVENT_TIMER) { GlobalEventMap::iterator it = timerMap.find(globalEvent->getName()); if (it == timerMap.end()) { timerMap.insert(std::make_pair(globalEvent->getName(), globalEvent)); if (timerEventId == 0) { timerEventId = g_scheduler.addEvent(createSchedulerTask(SCHEDULER_MINTICKS, std::bind(&GlobalEvents::timer, this))); } return true; } } else if (globalEvent->getEventType() != GLOBALEVENT_NONE) { GlobalEventMap::iterator it = serverMap.find(globalEvent->getName()); if (it == serverMap.end()) { serverMap.insert(std::make_pair(globalEvent->getName(), globalEvent)); return true; } } else { // think event auto it = thinkMap.find(globalEvent->getName()); if (it == thinkMap.end()) { thinkMap.insert(std::make_pair(globalEvent->getName(), globalEvent)); if (thinkEventId == 0) { thinkEventId = g_scheduler.addEvent(createSchedulerTask(SCHEDULER_MINTICKS, std::bind(&GlobalEvents::think, this))); } return true; } } std::cout << "[Warning - GlobalEvents::configureEvent] Duplicate registered globalevent with name: " << globalEvent->getName() << std::endl; return false; }
void GlobalEvents::execute(GlobalEvent_t type) const { for (const auto& it : serverMap) { GlobalEvent* globalEvent = it.second; if (globalEvent->getEventType() == type) { globalEvent->executeEvent(); } } }
void GlobalEvents::execute(GlobalEvent_t type) { for (GlobalEventMap::iterator it = serverMap.begin(); it != serverMap.end(); ++it) { GlobalEvent* globalEvent = it->second; if (globalEvent->getEventType() == type) { globalEvent->executeEvent(); } } }