Exemple #1
0
int Solar::MoveMissils()
{
  int i = 0;

  for (std::list<Part *>::iterator p = this->_enemy.begin(); p != this->_enemy.end(); ++p)
    {
      for (std::list<Part *>::iterator p2 = (*p)->rocket.begin(); p2 != (*p)->rocket.end(); ++p2)
      {
	if (CheckColision(p2) == false)
	  return (-1);
	if (i == 0 && ((*p2)->y) < this->_sizeY)
	  (*p2)->y += (this->_speed)* this->_deltaSeconde;
	else if (i == 1 && ((*p2)->x) < this->_sizeX)
	  (*p2)->x += (this->_speed) * this->_deltaSeconde;
	else if (i == 2 && ((*p2)->y) > 0)
	  (*p2)->y -= (this->_speed) * this->_deltaSeconde;
	else if (i == 3 && ((*p2)->x) > 0)
	  (*p2)->x -= (this->_speed) * this->_deltaSeconde;
	else
	  {
	    (*p)->rocket.erase(p2);
	    break;
	   }
      }
    ++i;
  }
  return (0);
}
void Enemy::DoRectangleColisions(const Time& elapsedTime){
	World* world = World::Instance();
	
	Colision::Type	type;
	bool colisionado = false, isInFloor = false;
	
	for(int i=0; i < world->level->vRectColision->size(); i++){
		if(CheckColision(*world->level->vRectColision->at(i), elapsedTime)){
			
			// Comprobamos tipo de colision, y hacemos lo que debamos
			type = TypeOfColision(*world->level->vRectColision->at(i), elapsedTime);
			OnColision(type,*world->level->vRectColision->at(i), elapsedTime);
			
			if(type==Colision::Type::BOTTOM)
				isInFloor = true;
			
			colisionado = true;
		}
	}
	if(!isInFloor || !colisionado){
		canJump = false;
	}
	affectGravity = !canJump;
}