Example #1
0
 void cMushroom::Handle_Collision_Box(ObjectDirection cdirection, GL_rect* r2)
 {
     if (cdirection == DIR_DOWN)
     {
         m_vely = -30.0f;
         
         if (m_pos_x > r2->m_x && m_velx < 0.0f)
         {
             Turn_Around(DIR_LEFT);
         }
         else if (m_pos_x < r2->m_x && m_velx > 0.0f)
         {
             Turn_Around(DIR_RIGHT);
         }
     }
     else if (cdirection == DIR_LEFT || cdirection == DIR_RIGHT)
     {
         m_vely = -13.0f;
         Turn_Around(cdirection);
     }
     else
     {
         return;
     }
     
     Reset_On_Ground();
 }
Example #2
0
void cSpikeball :: Handle_Collision_Enemy( cObjectCollision *collision )
{
	if( collision->m_direction == DIR_RIGHT || collision->m_direction == DIR_LEFT )
	{
		Turn_Around( collision->m_direction );
	}

	Send_Collision( collision );
}
Example #3
0
 void cPowerUp::Handle_out_of_Level(ObjectDirection dir)
 {
     if (dir == DIR_LEFT)
     {
         m_pos_x = pActive_Camera->limit_rect.m_x;
     }
     else if (dir == DIR_RIGHT)
     {
         m_pos_x = pActive_Camera->limit_rect.m_x + pActive_Camera->limit_rect.m_w - m_col_pos.m_x - m_col_rect.m_w - 0.01f;
     }
     
     Turn_Around(dir);
 }
Example #4
0
void cSpikeball :: Handle_Collision_Player( cObjectCollision *collision )
{
	// invalid
	if( collision->m_direction == DIR_UNDEFINED )
	{
		return;
	}

	pLevel_Player->DownGrade_Player();

	if( collision->m_direction == DIR_RIGHT || collision->m_direction == DIR_LEFT )
	{
		Turn_Around( collision->m_direction );
	}
}
Example #5
0
void cSpikeball :: Handle_Collision_Massive( cObjectCollision *collision )
{
	if( m_state == STA_OBJ_LINKED )
	{
		return;
	}

	Send_Collision( collision );

	// get colliding object
	cSprite *col_object = m_sprite_manager->Get_Pointer( collision->m_number );

	if( col_object->m_type == TYPE_BALL )
	{
		return;
	}

	if( collision->m_direction == DIR_TOP )
	{
		if( m_vely < 0.0f )
		{
			m_vely = 0.0f;
		}
	}
	else if( collision->m_direction == DIR_BOTTOM )
	{
		if( m_vely > 0.0f )
		{
			m_vely = 0.0f;
		}
	}
	else if( collision->m_direction == DIR_RIGHT || collision->m_direction == DIR_LEFT )
	{
		Turn_Around( collision->m_direction );
	}
}
Example #6
0
 void cMushroom::Handle_Collision_Massive(cObjectCollision* collision)
 {
     Turn_Around(collision->direction);
 }