bool CreatureEvents::registerEvent(Event* event, const pugi::xml_node&)
{
	CreatureEvent* creatureEvent = reinterpret_cast<CreatureEvent*>(event);
	if (creatureEvent->getEventType() == CREATURE_EVENT_NONE) {
		std::cout << "Error: [CreatureEvents::registerEvent] Trying to register event without type!" << std::endl;
		return false;
	}

	CreatureEvent* oldEvent = getEventByName(creatureEvent->getName(), false);
	if (oldEvent) {
		//if there was an event with the same that is not loaded
		//(happens when realoading), it is reused
		if (!oldEvent->isLoaded() && oldEvent->getEventType() == creatureEvent->getEventType()) {
			oldEvent->copyEvent(creatureEvent);
		}

		return false;
	} else {
		//if not, register it normally
		m_creatureEvents[creatureEvent->getName()] = creatureEvent;
		return true;
	}
}
Esempio n. 2
0
bool CreatureEvents::registerEvent(Event* event, xmlNodePtr p)
{
    CreatureEvent* creatureEvent = dynamic_cast<CreatureEvent*>(event);
    if(!creatureEvent)
        return false;

    switch(creatureEvent->getEventType())
    {
    case CREATURE_EVENT_NONE:
        std::cout << "Error: [CreatureEvents::registerEvent] Trying to register event without type!." << std::endl;
        return false;
        break;
    //events are stored in a std::map
    default:
    {
        m_creatureEvents[creatureEvent->getName()] = creatureEvent;
        return true;
    }
    }
}