bool Creature::unregisterCreatureEvent(const std::string& name) { CreatureEvent* event = g_creatureEvents->getEventByName(name); if (!event) { return false; } CreatureEventType_t type = event->getEventType(); if (!hasEventRegistered(type)) { return false; } bool resetTypeBit = true; for (auto it = eventsList.begin(); it != eventsList.end(); ++it) { CreatureEvent* curEvent = *it; if (curEvent == event) { it = eventsList.erase(it); } else if (curEvent->getEventType() == type) { resetTypeBit = false; } } if (resetTypeBit) { scriptEventsBitField &= ~(static_cast<uint32_t>(1) << type); } return true; }
bool Creature::registerCreatureEvent(const std::string& name) { CreatureEvent* event = g_creatureEvents->getEventByName(name); if (!event) { return false; } CreatureEventType_t type = event->getEventType(); if (hasEventRegistered(type)) { //check for duplicates for (CreatureEventList::const_iterator it = eventsList.begin(); it != eventsList.end(); ++it) { if (*it == event) { return false; } } } else { //set the bit scriptEventsBitField = scriptEventsBitField | ((uint32_t)1 << type); } eventsList.push_back(event); return true; }
CreatureEventList Creature::getCreatureEvents(CreatureEventType_t type) { CreatureEventList retList; if(!hasEventRegistered(type)) return retList; for(CreatureEventList::iterator it = eventsList.begin(); it != eventsList.end(); ++it) { if((*it)->getEventType() == type) retList.push_back(*it); } return retList; }
CreatureEventList Creature::getCreatureEvents(CreatureEventType_t type) { CreatureEventList tmpEventList; if (!hasEventRegistered(type)) { return tmpEventList; } for (CreatureEvent* creatureEvent : eventsList) { if (creatureEvent->getEventType() == type) { tmpEventList.push_back(creatureEvent); } } return tmpEventList; }
CreatureEventList Creature::getCreatureEvents(CreatureEventType_t type) { CreatureEventList tmpEventList; if (!hasEventRegistered(type)) { return tmpEventList; } for (CreatureEventList::const_iterator it = eventsList.begin(), end = eventsList.end(); it != end; ++it) { if ((*it)->getEventType() == type) { tmpEventList.push_back(*it); } } return tmpEventList; }
bool Creature::registerCreatureEvent(const std::string& name) { CreatureEvent* event = g_creatureEvents->getEventByName(name); if(!event) //check for existance return false; for(CreatureEventList::iterator it = eventsList.begin(); it != eventsList.end(); ++it) { if((*it) == event) //do not allow registration of same event more than once return false; } if(!hasEventRegistered(event->getEventType())) //there's no such type registered yet, so set the bit in the bitfield scriptEventsBitField |= ((uint32_t)1 << event->getEventType()); eventsList.push_back(event); return true; }
bool Creature::registerCreatureEvent(const std::string& name) { CreatureEvent* event = g_creatureEvents->getEventByName(name); if (!event) { return false; } CreatureEventType_t type = event->getEventType(); if (hasEventRegistered(type)) { for (CreatureEvent* creatureEvent : eventsList) { if (creatureEvent == event) { return false; } } } else { scriptEventsBitField |= static_cast<uint32_t>(1) << type; } eventsList.push_back(event); return true; }