Esempio n. 1
0
//查找定时
MAP_TIMER_HANDLER_ITER ScriptTimerMgr::findTimer(OBJID idTimer)
{
	MAP_TIMER_HANDLER_ITER iter = m_mapHandler.find(TimerID(idTimer, true));
	if (iter == m_mapHandler.end())
	{
		iter = m_mapHandler.find(TimerID(idTimer, false));
	}
	return iter;
}
Esempio n. 2
0
//添加一次性的定时
unsigned int ScriptTimerMgr::AddTimerOnce_Callback(ITimerCallback* callback,
		float fInterval)
{
	if (!callback)
		return 0;

	OBJID nId = getNextGuid();

	m_mapHandler.insert(make_pair(TimerID(nId, true), TimerHandler(callback)));

	m_pkTimerMgr->SetTimer(this, nId, fInterval);

	return nId;
}
Esempio n. 3
0
//添加一次性的脚本定时
unsigned int ScriptTimerMgr::AddTimerOnce_Lua(LuaObject func, float fInterval)
{
	if (!func.IsFunction())
	{
		return 0;
	}

	OBJID nId = getNextGuid();

	m_mapHandler.insert(make_pair(TimerID(nId, true), TimerHandler(func)));

	m_pkTimerMgr->SetTimer(this, nId, fInterval);

	return nId;
}
Esempio n. 4
0
void TimerManager::addTimer(uint32 interval, TimerHandle &handle, const TimerFunc &func) {
	Common::StackLock lock(_mutex);

	removeTimer(handle);

	_timers.push_back(TimerID());

	std::list<TimerID>::iterator id = --_timers.end();

	handle._iterator = id;
	handle._empty    = false;

	id->_func = func;
	id->_id   = SDL_AddTimer(interval, &TimerManager::timerCallback, static_cast<void *>(&handle));
	if (id->_id)
		return;

	handle._iterator = _timers.end();
	handle._empty    = true;

	_timers.erase(id);

	throw Common::Exception("Failed to add timer");
}