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; }