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());
                    }
                }
            }
        }
    }
}
Example #2
0
// 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();
		}
	}
}
Example #3
0
/** @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;
	}

}
Example #4
0
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;
}
Example #5
0
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);
}
Example #6
0
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;
}
Example #7
0
void Hunter::moveToPlayer() {
	Player * playerInstance = Player::getInstance();
	float xPos = playerInstance->getX();
	float yPos = playerInstance->getY();
	float zPos = playerInstance->getZ();
	moveToPosition(xPos, yPos, zPos);
}
Example #8
0
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);
        }
    }
}
Example #10
0
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);
}
Example #11
0
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;
}
Example #13
0
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);
}
Example #14
0
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);
}
Example #15
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));
}
Example #16
0
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;
        }
    }
}
Example #17
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);
            }
        }
    }
}
Example #20
0
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;

}
Example #21
0
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);
    }
}
Example #22
0
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);
    }
}
Example #25
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);
	}

}
Example #26
0
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);
        }
    }
}
Example #27
0
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;
}
Example #29
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;
	}
}