VOID CActionItem::UpdateCoolDown(VOID) { std::set< tActionReference* >::iterator it; INT nCoolDownID = GetCoolDownID(); //对于没有冷却的Action if(-1 == nCoolDownID) { for(it=m_setReference.begin(); it!=m_setReference.end(); it++) { (*it)->EnterCoolDown(-1, 0.0f); } return; } //取得冷却组数据 const CDataPool::COOLDOWN_GROUP* pCoolDownGroup = CDataPool::GetMe()->CoolDownGroup_Get(nCoolDownID); INT nTimeNow = pCoolDownGroup->nTime; INT nTimeTotal = pCoolDownGroup->nTotalTime; for(it=m_setReference.begin(); it!=m_setReference.end(); it++) { if(nTimeNow <= 0 || nTimeTotal <= 0) { (*it)->EnterCoolDown(-1, 0.0f); } else { (*it)->EnterCoolDown(nTimeTotal, 1.0f - (FLOAT)nTimeNow/(FLOAT)nTimeTotal); } } }
VOID CActionItem::UpdateCommonCoolDown(VOID) { //药品也要走cooldown CObject_Item_Medicine* pItem = (CObject_Item_Medicine*)GetImpl(); if(!pItem) { return; } //针对技能Action if(GetType() != AOT_SKILL /*&& pItem->GetItemClass() != ICLASS_COMITEM*/ ) return; //取得冷却组数据 const CDataPool::COOLDOWN_GROUP* pCoolDownGroup = CDataPool::GetMe()->CoolDownGroup_Get(GetCoolDownID()); if(!pCoolDownGroup) return; //如果处于冷却中 if(pCoolDownGroup->nTime > 0) return; INT nCommonCoolDown = CDataPool::GetMe()->CommonCoolDown_Get(); //通知UI,进入公共冷却 std::set< tActionReference* >::iterator it; for(it=m_setReference.begin(); it!=m_setReference.end(); it++) { (*it)->EnterCoolDown(nCommonCoolDown, 1.0f - (FLOAT)nCommonCoolDown/(FLOAT)COMMONCOOLDOWN_TIME ); } }
BOOL CActionItem_Skill::CoolDownIsOver(VOID) { INT nCoolDownID = GetCoolDownID(); //对于没有冷却的Action if(INVALID_ID == nCoolDownID) return TRUE; //取得冷却组数据 const CDataPool::COOLDOWN_GROUP* pCoolDownGroup = CDataPool::GetMe()->CoolDownGroup_Get(nCoolDownID); if( pCoolDownGroup && pCoolDownGroup->nTime <= 0 && CDataPool::GetMe()->CommonCoolDown_Get() <= 0 ) return TRUE; else return FALSE; }