예제 #1
0
파일: World.cpp 프로젝트: CarlosCasVen/UTad
//---------------------------------------------
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();	
}
예제 #2
0
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;
	}
}