void WaveManager::Update(const Time& tiElapsed) { if(state != Wave::State::Finished) { // Si no quedan enemigos, se pasa al estado de cargar if(WorldState::Instance()->vEnemies->empty() && state == Wave::State::Waiting) state = Wave::State::Loading; // Se cuenta el tiempo, excepto cuando se está en espera if(state != Wave::State::Waiting) *timeElapsed += tiElapsed; if(state == Wave::State::Loading) // Estado de espera a comenzar a insertar la oleada { if(!cambiado){ waveCounter++; StatusManager::Instance()->IncrementInt(Parameters::countingWaves, 1); cambiado = true; } if(timeElapsed->AsSeconds() >= timeInBetweenWaves->AsSeconds()) { cambiado = false; timeElapsed->SetSeconds(0.f); state = Wave::State::Running; InsertEnemy(); } } else if(state == Wave::State::Running) // Estado de inserción de oleada { if(timeElapsed->AsSeconds() >= timeInBetweenEnemies->AsSeconds()) { *timeElapsed -= *timeInBetweenEnemies; InsertEnemy(); } } } /* if(state == Wave::State::Running) std::cout << "State: Running" << std::endl; else if(state == Wave::State::Waiting) std::cout << "State: Waiting" << std::endl; else if(state == Wave::State::Loading) std::cout << "State: Loading" << std::endl; else if(state == Wave::State::Finished) std::cout << "State: Finished" << std::endl; */ }
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; }