//--------------------------------------------- void World::Update() { if( !m_hero->IsAlive() ) { return; } CreateNewEntities(); NewEnemy(); NewRainDrop(); for( unsigned int i = 0; i < m_enemies.Size(); i++ ) { m_enemies[i]->Update(); } DetectCollisionAndDestroy(); for( unsigned int i = 0; i < m_bullets.Size(); i++ ) { m_bullets[i]->Update(); } for( unsigned int i = 0; i < m_rainDrops.Size(); i++ ) { m_rainDrops[i]->Update(); } m_hero->Update(); DetectCollisionAndDestroy(); }
void __UpdateEnemy(Game* MyGame) { int i=0; static int db = 0; Projectile* iter = MyGame->player->proj_list->eleje->kovetkezo; db++; for(i=0;i<10;i++) { if(db>20) { MyGame->enemy[i]->coord.y += MyGame->enemy[i]->speed; // statikus változó segítségével szabályozzuk a block sebességt } if(MyGame->enemy[i]->coord.y > SCREEN_H) { FreeEnemy(MyGame->enemy[i]); NewEnemy(MyGame,i); //ha egy ellenség eléri a képernyõ alját vesztünk egy életet MyGame->player->life_left--; //és új ellenfél kerül a listára } for(iter = MyGame->player->proj_list->eleje->kovetkezo; iter != MyGame->player->proj_list->vege; iter = iter->kovetkezo) { if(iter->shot == 1) { if(f_abs(iter->coord.x - MyGame->enemy[i]->coord.x) < 70 && //az ütközés vizsgálása (f_abs((iter->coord.y) - MyGame->enemy[i]->coord.y)) < 0.1f && MyGame->enemy[i]->dead != 1) { if( (f_abs(iter->coord.x - MyGame->enemy[i]->coord.x)) < 0.1f && //a találat vizsgálása (f_abs((iter->coord.y) - MyGame->enemy[i]->coord.y)) < 0.1f && (MyGame->enemy[i]->type == iter->type) ) { MyGame->enemy_down++; if(MyGame->enemy_down == 11) // a háttér lebomálásának mûvelete { MyGame->enemy_down = 0; MyGame->next_bgforeground_index++; if(MyGame->next_bgforeground_index == MyGame->MaxBackGround) { MyGame->next_bgforeground_index = MyGame->next_bgbackground_index; // ha vége van a hátterek számának ciklikusan visszatér } // az elejére MyGame->next_bgbackground_index++; if(MyGame->next_bgbackground_index == MyGame->MaxBackGround) { MyGame->next_bgbackground_index = 0; } } if(MyGame->enemy_down == 5 && MyGame->next_bgforeground_index >= 1) { NewSurprise(MyGame->surprise,MyGame->SurprisePath[MyGame->next_bgforeground_index - 1]); } MyGame->enemy[i]->dead = 1; //találat esetén meghal az enemy GameBGLoad(MyGame,MyGame->enemy_down); } if(iter != MyGame->player->proj_list->vege) iter = FreeListedProjectile(iter); //ütközés esetén a projectile elvész NewListedProjectile(MyGame); } } } if(MyGame->enemy[i]->ready_to_free == 1) { FreeEnemy(MyGame->enemy[i]); //dead animation végén felszabadítjuk a resource-t NewEnemy(MyGame,i); } } if(db>20) { db = 0; } }