init_timer(); //各种定时器的初始化 void Map::init_timer() { //auto tf = GetPlug(TimerFactory); auto tf = m_spTimerFactory; m_updateMovePosTimer.reset(tf->createTimer()); m_updateMovePosTimer->setInterval(50); m_updateMovePosTimer->regTimer(std::bind(&Map::updateMovePosTimer, this));//这个是最重要的定时跟新所有NCP的位置信息,50ms是相当快的 m_updateMovePosTimer->start(); //单人组队定时 m_updateTeamTimer.reset(tf->createTimer()); m_updateTeamTimer->setInterval(15 * 1000); m_updateTeamTimer->regTimer(std::bind(&Map::updateTeamTimer, this)); m_updateTeamTimer->start(); //宝物限时消失 //m_checkPropExistTimer.reset(tf->createTimer()); //m_checkPropExistTimer->setInterval(10 * 6000); //m_checkPropExistTimer->regTimer(std::bind(&Map::checkPropExistTimer, this)); ////m_checkPropExistTimer->start(); //定时器监视buff m_updateStatTimer.reset(tf->createTimer()); m_updateStatTimer->setInterval(1000); m_updateStatTimer->regTimer(std::bind(&Map::updateStatTimer, this)); m_updateStatTimer->start(); //压测复活 m_checkRebornTimer.reset(tf->createTimer()); m_checkRebornTimer->setInterval(2000); m_checkRebornTimer->regTimer(std::bind(&Map::checkRebornTimer, this)); m_checkRebornTimer->start(); //Item 消失 m_updateItemDisappearTimer.reset(tf->createTimer()); m_updateItemDisappearTimer->setInterval(2000); m_updateItemDisappearTimer->regTimer(std::bind(&Map::updateItemDisappearTimer, this)); m_updateItemDisappearTimer->start(); //Spell消失(因玩家而定) + 施法 m_updateSpellWorkTimer.reset(tf->createTimer()); m_updateSpellWorkTimer->setInterval(500); m_updateSpellWorkTimer->regTimer(std::bind(&Map::updateSpellWorkTimer, this)); m_updateSpellWorkTimer->start(); } //-------------------这所有的定时器都是map线程驱动的--------------------------