void CreatureManager::Update(float delta) { for (VCharacter::iterator it=m_VEnemyList.begin();it!=m_VEnemyList.end();it++) { if((*it)->GetDead() == true) m_VEnemyDeadList.push_back(*it); else (*it)->Update(delta); } for (VCharacter::iterator it=m_VFriendList.begin();it!=m_VFriendList.end();it++) { if((*it)->GetDead() == true) m_VFriendDeadList.push_back(*it); else (*it)->Update(delta); } //移除死亡单位 for (int i=0;i<m_VEnemyDeadList.size();i++) { RemoveEnemy(m_VEnemyDeadList[i]); } m_VEnemyDeadList.clear(); for (int i=0;i<m_VFriendDeadList.size();i++) { RemoveEnemy(m_VFriendDeadList[i]); } m_VFriendDeadList.clear(); if(m_nActionCreatureNum != -1) { Character* cha = GetEnemy(m_nActionCreatureNum); if(cha->GetFinish()) m_nActionCreatureNum = -1; //测试用 if (cha->GetCamp() == eCamp_Enemy && cha->GetActionStage() == eActionStage_HandleStage) { m_nActionCreatureNum = -1; cha->SetFinish(true); } } SelectCreature(); UnSelectCreature(); ShowCreatureInfo(); }
void MergeHeaps(Heap * &H1, Heap * &H2, int &N1 ,int &N2, int Region) { int NewSize = N1 + N2; N1 = 0; N2 = NewSize; Heap *NewHeap = CreateHeap(NewSize); while (H1->Count>0) { Enemy *Temp = RemoveEnemy(H1); Temp->Region = Region; InsertEnemy(NewHeap, Temp); } while (H2->Count>0) { Enemy *Temp = RemoveEnemy(H2); InsertEnemy(NewHeap, Temp); } delete H2->HeapE; delete H2; H2 = NewHeap; }