www.pudn.com > zfxcengine-0.1.0.zip > ceEventTriggerer.cpp
// $Id: ceEventTriggerer.cpp,v 1.1 2005/08/24 23:01:11 florianxx Exp $
////////////////////////////////////////////////////////////////////////////////
//
// Module: Core
// File: ceEventTriggerer.h
// Created: 13.08.2005
// Author: Florian Bauer aka Florianx
// Licence: See licence file in root
// Last Mod: $Id: ceEventTriggerer.cpp,v 1.1 2005/08/24 23:01:11 florianxx Exp $
//
////////////////////////////////////////////////////////////////////////////////
#include "Core/ceEventTriggerer.h"
#include "Core/ceExceptions.h"
using namespace ZFXCE;
using namespace std;
ceEventTriggerer::ceEventTriggerer()
{
// empty
}
ceEventTriggerer::~ceEventTriggerer()
{
// empty
}
void ceEventTriggerer::AddEventListener(const ceEvent& ev, const ceEventFunctor& func)
{
PUSH_FUNCTION;
if (1 == m_EventList.count(ev.m_ID))
m_EventList[ev.m_ID].push_back(func);
else CE_EXCEPTION("Can't add event-listener.\n"+ev.m_ID+" is not triggerable by this controller.", 2);
}
void ceEventTriggerer::RemoveEventListener(const ceEvent& ev, const ceEventFunctor& func)
{
PUSH_FUNCTION;
if (1 == m_EventList.count(ev.m_ID))
{
list::iterator it = find(m_EventList[ev.m_ID].begin(), m_EventList[ev.m_ID].end(), func);
if(it != m_EventList[ev.m_ID].end())
m_EventList[ev.m_ID].erase(it);
}
}
bool ceEventTriggerer::IsEventTriggerable(const ceEvent& ev)
{
PUSH_FUNCTION;
return (m_EventList.count(ev.m_ID)==1);
}
void ceEventTriggerer::AddTriggerableEvent(const ceEvent& ev)
{
PUSH_FUNCTION;
if(m_EventList.count(ev.m_ID) < 1)
m_EventList[ev.m_ID].clear();
}
void ceEventTriggerer::TriggerEvent(const ceEvent& ev, const ceEventData* data)
{
if(m_EventList.count(ev.m_ID)==1)
{
for(std::list::iterator it = m_EventList[ev.m_ID].begin();
it != m_EventList[ev.m_ID].end(); it++)
(*it)(ev, data);
}
}