void collidePlayerWallX(Player &p, int obstacles [16][16]) { //int debugCollisions = 1; for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { if (bounding_box_collision(p.getX() + p.getWallOffsetW(), p.getY() + p.getWallOffsetH(), p.getWallW(), p.getWallH(), i * tileSize, j * tileSize, tileSize, tileSize)) { if (obstacles[j][i] > 0) { if ( p.getX() < i * tileSize) { if (debugCollisions) printf("left collision: %d, %d, %d\n", i, j, obstacles[j][i]); p.setX(i * tileSize - (p.getWallW() + p.getWallOffsetW())); } if ( p.getX() > i * tileSize) { if (debugCollisions) printf("right collision: %d, %d, %d\n", i, j, obstacles[j][i]); p.setX(i * tileSize + tileSize - p.getWallOffsetW()); } } } } } }
// Update game state of the npc object // Do any non movement or collision detection updates // (weapons and the like) void NPCSniperSoldier::update(float deltaTime, Handlers* handlers){ NPCBasicCollision::update(deltaTime, handlers); if (alive){ // Allways update weapon if (direcX > 0) weapon->update(deltaTime, locX - originX + armOffsetX, locY - originY + armOffsetY); else weapon->update(deltaTime, locX - originX + (width - armOffsetX), locY - originY + armOffsetY); if (!beingAbducted){ // Update weapon Player* player = (Player*)handlers->player; // Try and attack player if (!player->isInUFO() && dist(locX, locY, player->getCenterX(), player->getCenterY()) < weaponRange && ((player->getX() > locX && direcX > 0.0f) || (player->getX() < locX && direcX < 0.0f) )){ // Aquire Target playerInRange = true; caquireTime += deltaTime; // Fire when target aquired if (caquireTime >= aquireTime){ // Try to fire at player weapon->npcFire(player->getCenterX(), player->getCenterY(), handlers); } else { // These need to be called, otherwise the weapon will glitch // while the npc is aquiring target. weapon->setRotation(0.0f); weapon->setFacingDirec(direcX > 0.0f); weapon->setRotationByTarget(player->getCenterX(), player->getCenterY()); } } else { // Reset gun if can't find target weapon->setRotation(0.0f); weapon->setFacingDirec(direcX > 0.0f); playerInRange = false; caquireTime = 0.0f; } armRotation = weapon->getRotation(); } } }
/** @param a_ms timse (in milliseconds) since the last update. updates the game logic */ void Game::update(int a_ms) { Player * p; Enemy * e; for(int i = 0; i < m_playerList.getSize(); ++i) { p = (Player*)m_playerList.get(i); if(p != (Player*)m_playerList.get(0)) { e = (Enemy*)p; if(m_powerUpTimeLeft > 0) e->setIcon(1); else e->setIcon(2); e->ai(a_ms); } int nextMove = p->getNextMove(); if(nextMove == PLAYER_MOVE_UP && (p->getY() <= 0 || m_map.getAt(p->getX(),p->getY()-1) == '#')) p->setNextMove(PLAYER_MOVE_NONE); if(nextMove == PLAYER_MOVE_DOWN && (p->getY() >= m_map.getHeight() - 1 || m_map.getAt(p->getX(),p->getY()+1) == '#')) p->setNextMove(PLAYER_MOVE_NONE); if(nextMove == PLAYER_MOVE_LEFT && (p->getX() <= 0 || m_map.getAt(p->getX() - 1, p->getY()) == '#')) p->setNextMove(PLAYER_MOVE_NONE); if(nextMove == PLAYER_MOVE_RIGHT && (p->getX() >= m_map.getWidth() - 1 || m_map.getAt(p->getX() + 1,p->getY()) == '#')) p->setNextMove(PLAYER_MOVE_NONE); if(p != (Player*)m_playerList.get(0)) e->move(); else p->update(a_ms); if(m_map.getAt(p->getX(),p->getY()) == 'O') { if(p == (Player*)m_playerList.get(0)) m_running = -1; else if(p == (Player*)m_playerList.get(1)) m_running = -2; } } timeTilRotation -= a_ms; if(timeTilRotation <= 0) { rotateMap(); int rotationTime = rand() % 6 + 1; timeTilRotation += rotationTime * 1000; } }
void Game::rotateMap() { Player * p = (Player*)m_playerList.get(0); Enemy * e = (Enemy*)m_playerList.get(1); int rotationSelection = rand() % 3 + 1; switch(rotationSelection) { case 1: m_map.setAt(p->getX(), p->getY(),p->getIcon()); m_map.setAt(e->getX(), e->getY(),e->getIcon()); m_map.flipCCW(); p->setX(m_map.getCharXPos(p->getIcon())); p->setY(m_map.getCharYPos(p->getIcon())); e->setX(m_map.getCharXPos(e->getIcon())); e->setY(m_map.getCharYPos(e->getIcon())); m_map.setAt(p->getX(), p->getY(), '.'); m_map.setAt(e->getX(), e->getY(), '.'); break; case 2: m_map.setAt(p->getX(), p->getY(),p->getIcon()); m_map.setAt(e->getX(), e->getY(),e->getIcon()); m_map.flipCW(); p->setX(m_map.getCharXPos(p->getIcon())); p->setY(m_map.getCharYPos(p->getIcon())); e->setX(m_map.getCharXPos(e->getIcon())); e->setY(m_map.getCharYPos(e->getIcon())); m_map.setAt(p->getX(), p->getY(), '.'); m_map.setAt(e->getX(), e->getY(), '.'); break; case 3: break; } if(m_map.getAt(11,1) == 'O') GAME_ROTATION = DEGREES::ZERO; else if(m_map.getAt(1,11) == 'O') GAME_ROTATION = DEGREES::TWO_SEVENTY; else if(m_map.getAt(11,21) == 'O') GAME_ROTATION = DEGREES::ONE_EIGHTY; else if(m_map.getAt(21,11) == 'O') GAME_ROTATION = DEGREES::NINETY; }
std::string lab3::Map::player_move_down() { Player * player = get_current_player(); int x = player->getX(); int y = player->getY(); return player_move_to(player, ++x, y); }
std::string lab3::Map::player_do_stuff_to_tile() { Player * p = get_current_player(); std::string out; bool found_stuff = false; for (std::vector<Object *>::iterator it = objects.begin(); it != objects.end(); ++it) { if ( (*it)->getX() == p->getX() && (*it)->getY() == p->getY() && (*it)->type_id() != p->type_id()) { if ((*it)->inventorable()) { found_stuff = true; out += "Found: "; out += ((*it)->description().c_str() ); out += ". "; p->add_to_inventory( (*it) ); objects.erase( it ); return out; // fix for segfault } else if ((*it)->actionable()) { if ( (*it)->can_do_action() ){ Object * o = (*it)->perform_action(); if (o->change_level > 0) { set_level = o->change_level; } else { add_object_to_map(o); } } out += "You " + (*it)->action_description() + " the " + (*it)->description(); } } } if (found_stuff) { return out; } return out; }
void Hunter::moveToPlayer() { Player * playerInstance = Player::getInstance(); float xPos = playerInstance->getX(); float yPos = playerInstance->getY(); float zPos = playerInstance->getZ(); moveToPosition(xPos, yPos, zPos); }
void PlanCutScene::logic() { if (mHasRun) return; Actor *vapor = mRoom->getLordVapor(); Player* player = mRoom->getPlayer(); player->setPosition(vapor->getX() + 16, 0); mRoom->addActorStateCutScene(vapor, "standdown"); mRoom->addDialogCutScene("Stranger: Now lets see. How does this milk work...", false); mRoom->addWaitCutScene(50); mRoom->addAddEntityCutScene(new Portal(vapor->getX() + 16, 32)); mRoom->addWaitCutScene(50); mRoom->addActorStateCutScene(player, "walkdown"); mRoom->addWaitForActorPostitionCutScene(player, player->getX(), 100); mRoom->addActorStateCutScene(player, "standdown"); mRoom->addWaitCutScene(50); mRoom->addDialogCutScene("Stranger: Milk is the last ingredient in my WORLD domination device!", false); mRoom->addDialogCutScene("Stranger: Milk is so powerful, and now it is mine!", false); mRoom->addDialogCutScene("Stranger: Hahahaha!", false); mRoom->addWaitCutScene(50); mRoom->addDialogCutScene("Ted: Hey you, my milk!", false); mRoom->addActorStateCutScene(vapor, "standup"); mRoom->addWaitCutScene(50); mRoom->addDialogCutScene("Stranger: You!!?", false); mRoom->addDialogCutScene("Stranger: I will easily get rid of you with this milk!", false); mRoom->addZoomCutScene(true); mRoom->addChangeRoomCutScene("overworld.txt", 0, true, 307, 142); mRoom->startCutScenes(); mHasRun = true; }
void seekMonsters (Monster m[], Player p) { float pX = p.getX() + p.getW() / 2; float pY = p.getY() + p.getH() / 2; //printf("Player X: %f\n",pX); //printf("Player Y: %f\n",pY); for (int i = 0; i < numMonsters; i ++) { if (m[i].isLive && m[i].canMove) { float mX = m[i].getX() + m[i].getW() / 2; float mY = m[i].getY() + m[i].getH() / 2; float diffX = pX - mX; float diffY = pY - mY; float distance = sqrt(diffX * diffX + diffY * diffY); float divider = m[i].getMaxSpeed() / distance; float mDx = divider * diffX; float mDy = divider * diffY; /* if (abs(mDx) < .2) { if (mDx < 0) mDx = -.21; if (mDx > 0) mDx = .21; } */ m[i].setDx(mDx); m[i].setDy(mDy); //printf("Monster %d X: %f\n",i,mX); //printf("Monster %d Y: %f\n",i,mY); //printf("Distance %d: %f\n",i,distance); //printf("DX %d: %f\n",i,mDx); //printf("DY %d: %f\n",i,mDy); } } }
std::string lab3::Map::player_move_left() { Player * player = get_current_player(); int x = player->getX(); int y = player->getY(); return player_move_to(player, x, --y); }
void TestInput::keyDown(int keycode) { if(keycode == SDLK_DOWN) context->camera.y += context->camMoveY; if(keycode == SDLK_UP) context->camera.y -= context->camMoveY; if(keycode == SDLK_RIGHT) context->camera.x += context->camMoveX; if(keycode == SDLK_LEFT) context->camera.x -= context->camMoveX; Player* player = context->player; context->cachedPlayerX = player->getX(); context->cachedPlayerY = player->getY(); if(keycode == SDLK_w) player->walk(WALK_UP); if(keycode == SDLK_a) player->walk(WALK_LEFT); if(keycode == SDLK_s) player->walk(WALK_DOWN); if(keycode == SDLK_d) player->walk(WALK_RIGHT); }
bool logicEngine::snake_picked(Pickable *p ,Player snake) { for(int i = 0; i < (int)snake.snake.size(); i++) { if(p->getX() == snake.getX() && p->getY() == snake.getY()) return true; } return false; }
void Bat::update(int elapsedTime, Player &player) { this->_direction = player.getX() > this->_x ? RIGHT : LEFT; this->playAnimation(this->_direction == RIGHT ? "FlyRight" : "FlyLeft"); //Move up or down this->_y += this->_shouldMoveUp ? -0.1 : 0.1; if (this->_y > (this->_startingY + 30) || this->_y < (this->_startingY - 30)) { this->_shouldMoveUp = !this->_shouldMoveUp; } Enemy::update(elapsedTime, player); }
void showXY() { char xcor[10]; char ycor[10]; //printf("t1\n"); sprintf(xcor, "x: %d", p1.getX()); sprintf(ycor, "y: %d", p1.getY()); //printf("t2\n"); game_graphics->drawText(xcor, 12, 500, 300, 200, 0, 0, 0, 0, 0); game_graphics->drawText(ycor, 12, 500, 320, 200, 0, 0, 0, 0, 0); }
void gameInit(){ (&player)->~Player(); new (&player) Player(116,76); for(int i = 0; i < enemies.size(); i++){ enemies.at(i).setDead(true); } for(int i = 0; i < bullets.size(); i++){ bullets.at(i).setDead(true); } (&crate)->~Crate(); new (&crate) Crate(0,0,0); weapon = 1; score = 0; //Set-up Objects ClearObjects(); //Weapon int shape = 0; if(weapon == 8)shape = 1; SetObject(0, ATTR0_SHAPE(shape) | ATTR0_8BPP | ATTR0_REG | ATTR0_Y(player.getY()+1), ATTR1_SIZE(0) | ATTR1_X(player.getX()+4), ATTR2_ID8(22+weapon)); //Crate SetObject(1, ATTR0_SHAPE(0) | ATTR0_8BPP | ATTR0_REG | ATTR0_Y(crate.getY()), ATTR1_SIZE(0) | ATTR1_X(crate.getX()), ATTR2_ID8(14)); //Player SetObject(2, ATTR0_SHAPE(0) | ATTR0_8BPP | ATTR0_REG | ATTR0_Y(player.getY()), ATTR1_SIZE(0) | ATTR1_X(player.getX()), ATTR2_ID8(1)); }
void Obstacle::Run(Weapon &weapon1,Player &player1,Weapon &weapon2,Player &player2) { double b1x=weapon1.GetBullet()->x(); double b1y=weapon1.GetBullet()->y(); int p1x=player1.getX(); int p1y=player1.getY(); double b2x=weapon2.GetBullet()->x(); double b2y=weapon2.GetBullet()->y(); int p2x=player2.getX(); int p2y=player2.getY(); Draw(p1x,p1y,p2x,p2y); Move(); CheckCollision(b1x,b1y,b2x,b2y); if (hstate1==1) { player1.health-=0.2; hstate1=0; } if (hstate2==1) { player2.health-=0.2; hstate2=0; } if (state1==1) { countdown+=0.9; if (countdown>1.2) { state1=0; countdown=0; } } if (state2==1) { countdown+=0.9; if (countdown>1.2) { state2=0; countdown=0; } } }
void Engine::render() { SDL_FillRect(screen, NULL, 0x000000); display->render(screen); player->render(WIDTH/2, HEIGHT/2, screen); player->renderAttrib(screen, display); int xR = (WIDTH/2) + (rando->getX() - player->getX()); int yR = (HEIGHT/2) + (rando->getY() - player->getY()); rando->render(xR, yR, screen); //textWriter->write(display->getCurrentTile(), 50, 50, screen); //textWriter->write(display->getOffsets(), 50, 50, screen); //display->getOffsets(); SDL_Flip(screen); }
void movePlayerLeft(Player &p) { if(p.getX() >= (p.getMaxSpeed() + 1)) { if (p.canMove) { p.setDx( p.getDx() - p.getSpeed()); if (p.canRotate == true) { p.setDir(LEFT); } } } }
void movePlayerRight(Player &p) { if(p.getX() <= screenW - squareSize - (p.getMaxSpeed() + 1)) { if (p.canMove) { p.setDx( p.getDx() + p.getSpeed()); if (p.canRotate == true) { p.setDir(RIGHT); } } } }
bool playerAttack(Level &level, Player &player, vector<Enemy> &enemies){ int pX = player.getX(); int pY = player.getY(); bool fight = false; cout << "Player Health: " << player.getHealth() << " Level: " << player.getLevel() << " Exp: " << player.getExp() << endl; for (int i = 0; i < enemies.size(); i++){ int eX = enemies[i].getX(); int eY = enemies[i].getY(); if ((eX == pX + 1 && eY == pY) || (eX == pX - 1 && eY == pY) || (eX == pX && eY == pY + 1) || (eX == pX && eY == pY - 1)){ fight = true; cout << "************BATTLE**************" << endl; cout << "Enemy Level : " << enemies[i].getLevel() << " Health: " << enemies[i].getHealth() << endl; enemies[i].defence(player.attack()); player.defence(enemies[i].attack()); if (player.getHealth() >= 1 && enemies[i].getHealth() >= 1){ } else if (player.getHealth() >= 1 && enemies[i].getHealth() <= 0){ cout << "Enemy Killed!" << endl; cout << player.getExp() << endl; player.addExp(enemies[i].getLevel() * 50); cout << player.getExp() << endl; level.setThing(eX, eY, '.'); enemies[i] = enemies[enemies.size() - 1]; enemies.pop_back(); } else{ cout << "You have died, game over"; return false; } } else{ } } if (!fight){ cout << "No Nearby Enemies" << endl; } return true; }
void Enemy::stalkPlayer(Player p) { int yDifference = p.getY() - getY(); int xDifference = p.getX() - getX(); if(abs(yDifference) > abs(xDifference)) { //Move the farther one if(yDifference < 0) //E moves NORTH move(NORTH); else if(yDifference > 0) move(SOUTH); } else { if(xDifference < 0) move(WEST); else if (xDifference > 0) move(EAST); } }
int spawnBullet(int type){ int i = 0; int count = 0; if(bullets.size() < MAX_BULLETS){ bullets.push_back(Bullet(player.getX(), player.getY(), type, weapon)); i = bullets.size()-1; }else{ for(int k = 0; k < MAX_BULLETS; k++){ if(bullets.at(k).getType() == 7)count++; if(bullets.at(k).isDead()){ if(type == 7){ if(player.getDir())bullets[k] = Bullet(player.getX()+(count*8),player.getY(),type, weapon); else bullets[k] = Bullet(player.getX()-(count*8),player.getY(),type, weapon); i = k; }else{ bullets[k] = Bullet(player.getX(),player.getY(),type, weapon); i = k; } break; } } } SetObject(i+24, ATTR0_SHAPE(0) | ATTR0_8BPP | ATTR0_REG | ATTR0_Y(bullets.at(i).getY()), ATTR1_SIZE(0) | ATTR1_X(bullets.at(i).getX()), ATTR2_ID8(bullets.at(i).getFrame())); bullets.at(i).setDir(player.getDir()); if(!bullets.at(i).getDir()){ ObjBuffer[i+24].attr1 |= ATTR1_HFLIP; } return i; }
void collidePlayerMonster(Player &p, Monster m[]) { for (int i = 0; i < numMonsters; i ++) { if (m[i].isLive == 1 && p.vincible) { if (bounding_box_collision(p.getX() + p.getBoundOffsetW(), p.getY() + p.getBoundOffsetH(), p.getBoundW(), p.getBoundH(), m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH())) { p.canMove = false; p.vincible = false; p.knockback = true; //printf ("invincible\n"); //printf("dx: %f \n", m[i].getDx()); //printf("dy: %f \n", m[i].getDy()); float kbDistance = sqrt(m[i].getDx() * m[i].getDx() + m[i].getDy() * m[i].getDy() ); float kbRatio = m[i].kbSpeed / kbDistance; //printf("kbDistance: %f \n", kbDistance); //printf("kbSpeed: %f \n", m[i].kbSpeed); //printf("kbRatio: %f \n", kbRatio); //knockback p.knockbackTimer = 0; p.knockbackX = m[i].getDx() * kbRatio; p.knockbackY = m[i].getDy() * kbRatio ; p.setCurrentHP(p.getCurrentHP() - m[i].getDamage()); } } } if (p.knockback == true) { p.knockbackTimer ++; p.setDx(p.knockbackX * .05 * (knockbackTime - p.knockbackTimer)); //printf("knockback y: %f\n",p.knockbackY); p.setDy(p.knockbackY * .05 * (knockbackTime - p.knockbackTimer)); //printf("knockbackTime %d\n",knockbackTime); //printf("player dx: %f\n",p.getDx()); //printf("player dy: %f\n",p.getDy()); //printf("knockbackTimer %d\n",p.knockbackTimer); if (p.knockbackTimer == knockbackTime) { //printf("Knockback over\n"); p.knockbackTimer = 0; p.knockback = 0; p.canMove = true; } } }
void drawPlayer(Player &p) { if ( p.getDir() == UP) { //printf("UP\n"); p.setAnimationRow(3); } if ( p.getDir() == DOWN) { //printf("Down\n"); p.setAnimationRow(0); } if ( p.getDir() == LEFT) { //printf("LEFT\n"); p.setAnimationRow(1); } if ( p.getDir() == RIGHT) { //printf("Right\n"); p.setAnimationRow(2); } int fx = (p.getCurFrame() % p.getNumFrames()) * p.getW(); int fy = p.getAnimationRow() * p.getH(); //printf("curFrame: %d, frameCount: %d, FX %d, FY %d\n",p.getCurFrame(),p.getFrameCount(),fx ,fy); al_draw_scaled_bitmap(playerImage,p.getSpriteX() + fx ,p.getSpriteY() + fy ,p.getW(),p.getH(),p.getX(),p.getY(),p.getW(),p.getH(),0); if (showHitboxes) { al_draw_rectangle(p.getX() + p.getBoundOffsetW(), p.getY() + p.getBoundOffsetH(), p.getX() + p.getBoundOffsetW() + p.getBoundW(), p.getY() + p.getBoundOffsetH() + p.getBoundH(), al_map_rgb(255,0,0),1); al_draw_rectangle(p.getX() + p.getWallOffsetW(), p.getY() + p.getWallOffsetH(), p.getX() + p.getWallOffsetW() + p.getWallW(), p.getY() + p.getWallOffsetH() + p.getWallH(), al_map_rgb(0,255,0),1); } //Animation frame updating p.setFrameCount(p.getFrameCount() + 1); if (p.getFrameCount() >= p.getFrameDelay()) { p.setCurFrame(p.getCurFrame() + 1); if (p.getCurFrame() >= p.getNumFrames()) { p.setCurFrame(0); } p.setFrameCount(0); } }
void Engine::update() { player->update(display); rando->update(display); int xp = player->getX(); int yp = player->getY(); display->setOffsets(xp - WIDTH / 2, yp - HEIGHT / 2); if(player->isSailing()) { audio->switchTo(BOATMUSIC); } else if(!(player->isSailing())) { audio->switchTo(LANDMUSIC); } }
void FlyingEnemy::update() { if(!dead) { buddy->move(getX() - level->getXOffs(), getY() - level->getYOffs()); if(dir == -1) { //If going left if(level->testCollision(getX() - 1, getY())) { dir = 1; } } else if(dir == 1) { //If going right if(level->testCollision(getX() + Entity::SIZE + 1, getY())) { dir = -1; } } addX(hSpeed * dir); Player* p = level->getPlayer(); if(isCollidingWith(p)) { QRect test(getX(), getY(), getWidth(), 32); if(p->isInvincible() || test.contains(p->getX(), p->getY() + p->getHeight()) || test.contains(p->getX() + p->getWidth(), p->getY() + p->getHeight())) { Network::instance().send("Enemy " + QString::number(id)); dead = true; p->setVib(true); } else { p->setDead(true); } } if(dir == 1) { buddy->setPixmap(feRight); } else if(dir == -1) { buddy->setPixmap(feLeft); } } else { if(curHeight > 8) { curHeight -= 8; buddy->setGeometry(getX() + (Entity::SIZE / 2 - curHeight / 2) - level->getXOffs(), getY() + (Entity::SIZE / 2 - curHeight / 2) - level->getYOffs(), curHeight, curHeight); } else { Sound::instance().killedEnemy(); buddy->deleteLater(); level->removeEntity(this); } } }
void World::Draw(sf::RenderWindow &app, TextureContainer &tc, Player &player) { float playerX = player.getX(); float playerY = player.getY(); int chunkX = (playerX/16)/16; int chunkY = (playerY/16)/16; for(short x = -2; x < 4; x++) { for(short y = -2; y < 4; y++) { if(chunkX+x > 0 && chunkY+y > 0 && chunkX+x < sizeX && chunkY+y < sizeY) { chunkList[chunkX + x][chunkY + y]->Draw(chunkX + x, chunkY + y, app, tc); } } } }
void Camera::updateViewport() { zoom = 1.6 - 0.4*inputComponent.rTh_Y*inputComponent.rTh_Y; double xSpeed = player.getX() - player.getPrevX(); double ySpeed = player.getY() - player.getPrevY(); if( xSpeed > camSpeedX) { camSpeedX += (xSpeed-camSpeedX)*CAMERA_X_LAG; } else if( xSpeed < camSpeedX) { camSpeedX -= (camSpeedX-xSpeed)*CAMERA_X_LAG; } if( ySpeed > camSpeedY) { camSpeedY += (ySpeed-camSpeedY)*CAMERA_Y_LAG; } else if( ySpeed < camSpeedY) { camSpeedY -= (camSpeedY-ySpeed)*CAMERA_Y_LAG; } camPos += Vec2(camSpeedX,camSpeedY); viewport.w = (int)(DEFAULT_CAMERA_W/zoom); viewport.h = (int)(DEFAULT_CAMERA_H/zoom); viewport.x = camPos.getX() - viewport.w/2.0; viewport.y = camPos.getY() - viewport.h/2.0; }
//goes through each rock on the screen, checking for player collisions int collideMapObjTest(int chX, int chY) { int retVal = 0; if (runOnce == true) { for (int mapObjCount = 0; mapObjCount < mapObjLocations.size(); mapObjCount++) { //if(SDL_CollidePixel(playerMask, p1.getX() + chX, p1.getY() + chY, getObjSurfaceMasks(mapObjLocations.at(mapObjCount).getObjType()), mapObjLocations.at(mapObjCount).getX() * 32, mapObjLocations.at(mapObjCount).getY() * 32)) if(SDL_CollidePixel(playerMask, p1.getX() + chX, p1.getY() + chY, getObjSurface(mapObjLocations.at(mapObjCount).getObjType()), mapObjLocations.at(mapObjCount).getX() * 32, mapObjLocations.at(mapObjCount).getY() * 32)) { retVal = mapObjLocations.at(mapObjCount).getObjType(); } } } return retVal; }
void EnemySystem::resetEnemies(SDL_Renderer* renderer, Player &player, ParticleSystem &pas) { pas.CreateBurst(player.getX(), player.getY(), 60, renderer); player.getActive() = false; player.resetSpeed(); shakeIntensity += 250; spawnReset += (300 - spawnReset) / 4; for (int x = 0; x < fEnemyList.size(); x++) { pas.CreateBurst(fEnemyList[x].getX(), fEnemyList[x].getY(), 25, renderer); fEnemyList.erase(fEnemyList.begin() + x); shakeIntensity += 10; } for (int x = 0; x < bEnemyList.size(); x++) { pas.CreateBurst(bEnemyList[x].getX(), bEnemyList[x].getY(), 25, renderer); bEnemyList.erase(bEnemyList.begin() + x); shakeIntensity += 10; } }