예제 #1
0
void PlayerLogicComponent::Update() 
{
	// J�t�kos ir�ny�t�sa:
	this->wantToMove = false;	
	if( sf::Keyboard::isKeyPressed(sf::Keyboard::W) )
	{
		if (TryToJump())
		{
			SoundSystem::Instance()->FireSoundEvent("JUMP");
		}
	}

	if ( sf::Keyboard::isKeyPressed(sf::Keyboard::A))
	{
		this->wantToMove = true;		
		facingLeft = true;
	} 
	else if ( sf::Keyboard::isKeyPressed(sf::Keyboard::D)) 
	{
		this->wantToMove = true;		
		facingLeft = false;
	}
	//l�v�s a j�t�kossal
	if (sf::Keyboard::isKeyPressed(sf::Keyboard::J) || sf::Keyboard::isKeyPressed(sf::Keyboard::K))
	{
		if ( sf::Keyboard::isKeyPressed(sf::Keyboard::J) ) 
		{
			if ( framesLeftToShot <= 0 ) {
				shotBullet(sf::Vector2f(24.f,0.f), 0, 0);
				framesLeftToShot = 16;

				SoundSystem::Instance()->FireSoundEvent("SHOOT");
			}
		}
		if ( sf::Keyboard::isKeyPressed(sf::Keyboard::K) ) 
		{	
			if ( framesLeftToShot <= 0 ) {
				for ( int i = 0; i<10; i++)
				shotBullet(sf::Vector2f(20.f,-10.f+(float)i*2), 0, 0);
				framesLeftToShot = 10;

				SoundSystem::Instance()->FireSoundEvent("SHOOT");
			}
		}

		
	}
	framesLeftToShot--;
	DefaultUpdate();
}
void ShooterMonsterLogicComponent::Update() 
{
	const int framestoMove = 50;
	wantToMove = false;
	//Message msg;
	if ( timeShootAgain < 0 )
	{
		shotBullet(sf::Vector2f(18.f,0.f),0,0);
		timeShootAgain = 25;
	}
	if ( timeToJump < 0 && canJump)
	{
		TryToJump();
		timeToJump = 80;
	}
	if ( timeChangedFacing < 0) {
		framesstillMoving = framestoMove;
		timeChangedFacing = 90;
		facingLeft = !facingLeft;
	}
	if ( framesstillMoving > 0 )
	{
		wantToMove = true;	
	}
	timeChangedFacing--;
	timeShootAgain--;
	timeToJump--;
	framesstillMoving--;
	HumanoidLogicComponent::DefaultUpdate();
}
예제 #3
0
/* ARGSUSED3 */
void
joystick(unsigned int buttons, int x, int y, int z)
{
  if (buttons & 0x1) {
    thrust = 1;
    thrustTime = glutGet(GLUT_ELAPSED_TIME);
    joyThrust = 1;
  } else {
    if (joyThrust) {
      thrust = 0;
      joyThrust = 0;
    }
  }
  if (buttons & 0x2) {
    shotBullet();
  }
  if (buttons & 0x4) {
    shield = 1;
    joyShield = 1;
  } else {
    if (joyShield) {
      shield = 0;
      joyShield = 0;
    }
  }
  if (x < -300) {
    left = 1;
    leftTime = glutGet(GLUT_ELAPSED_TIME);
    joyLeft = 1;
  } else {
    /* joyLeft helps avoid "joystick in neutral"
       from continually stopping rotation. */
    if (joyLeft) {
      left = 0;
      joyLeft = 0;
    }
  }
  if (x > 300) {
    right = 1;
    rightTime = glutGet(GLUT_ELAPSED_TIME);
    joyRight = 1;
  } else {
    /* joyRight helps avoid "joystick in neutral"
       from continually stopping rotation. */
    if (joyRight) {
      right = 0;
      joyRight = 0;
    }
  }
}
예제 #4
0
파일: asteroids.c 프로젝트: 8l/swieros
void key(char key)
{
  switch (key) {
  case 'q':
    exit(0);
    break;
  case 'k':
    thrust = 1;
    thrustTime = lastTime; //glutGet(GLUT_ELAPSED_TIME);
    break;
  case 'c':
    shield = 1;
    break;
  case 'z':
    x = 20;
    y = 20;
    xv = 0;
    yv = 0;
    break;
  case 'l':
    shotBullet();
    break;
  case 't':
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_BLEND);
    glEnable(GL_LINE_SMOOTH);
    glEnable(GL_POINT_SMOOTH);
    break;
  case 'y':
    glDisable(GL_BLEND);
    glDisable(GL_LINE_SMOOTH);
    glDisable(GL_POINT_SMOOTH);
    break;
  case 'a':
    left = 1;
    leftTime = lastTime; // glutGet(GLUT_ELAPSED_TIME);
    break;
  case 's':
    right = 1;
    rightTime = lastTime; //glutGet(GLUT_ELAPSED_TIME);
    break;
  }
}
예제 #5
0
/* ARGSUSED1 */
void
key(unsigned char key, int px, int py)
{
  switch (key) {
  case 27:
    exit(0);
    break;
  case 'A':
  case 'a':
    thrust = 1;
    thrustTime = glutGet(GLUT_ELAPSED_TIME);
    break;
  case 'S':
  case 's':
    shield = 1;
    break;
  case 'C':
  case 'c':
    cursor = !cursor;
    glutSetCursor(
      cursor ? GLUT_CURSOR_INHERIT : GLUT_CURSOR_NONE);
    break;
  case 'z':
  case 'Z':
    x = 20;
    y = 20;
    xv = 0;
    yv = 0;
    initRocks();
    break;
  case 'd':
    glutGameModeString("1280x1024:32@60");
    glutEnterGameMode();
    initWindow();
    break;
  case 'f':
    glutGameModeString("640x480:16@60");
    glutEnterGameMode();
    initWindow();
    break;
  case 'g':
    glutGameModeString("800x600:16@60");
    glutEnterGameMode();
    initWindow();
    break;
  case 'h':
    if (initialGameModeString) {
      glutGameModeString(initialGameModeString);
      glutEnterGameMode();
      initWindow();
    }
    break;
  case 'l':
    if (originalWindow != 0 && currentWindow != originalWindow) {
      glutLeaveGameMode();
      currentWindow = originalWindow;
    }
    break;
  case 'P':
  case 'p':
    paused = !paused;
    if (paused) {
      glutIdleFunc(NULL);
    } else {
      glutIdleFunc(idle);
      resuming = 1;
    }
    break;
  case 'Q':
  case 'q':
  case ' ':
    shotBullet();
    break;
  case 'i':
    printf("%dx%d+%d+%d of depth %d of format %d\n",
      glutGet(GLUT_WINDOW_WIDTH),
      glutGet(GLUT_WINDOW_HEIGHT),
      glutGet(GLUT_WINDOW_X),
      glutGet(GLUT_WINDOW_Y),
      glutGet(GLUT_WINDOW_BUFFER_SIZE),
      glutGet(GLUT_WINDOW_FORMAT_ID));
    break;
  }
}