// process input public override void ProcessInput(float elapsedTime, InputManager input) { if (input == null) { throw new ArgumentNullException("input"); } int i, j = (int)gameManager.GameMode; for (i = 0; i < j; i++) { // Any key/button to go back if (input.IsButtonPressedA(i) || input.IsButtonPressedB(i) || input.IsButtonPressedX(i) || input.IsButtonPressedY(i) || input.IsButtonPressedLeftShoulder(i) || input.IsButtonPressedRightShoulder(i) || input.IsButtonPressedLeftStick(i) || input.IsButtonPressedRightStick(i) || input.IsButtonPressedBack(i) || input.IsButtonPressedStart(i) || input.IsKeyPressed(i, Keys.Enter) || input.IsKeyPressed(i, Keys.Escape) || input.IsKeyPressed(i, Keys.Space)) { screenManager.SetNextScreen(ScreenType.ScreenIntro); gameManager.PlaySound("menu_cancel"); } } }
/// <summary> /// Process input for player ship (movement and weapons) /// </summary> public void ProcessInput(float elapsedTime, InputManager input, int player) { if (input == null) { throw new ArgumentNullException("input"); } // if dead, don't process input for player if (IsAlive == false) { return; } // process movement related inputs movement.ProcessInput(elapsedTime, input.CurrentState, player); // if player invert Y is enabled, invert X rotation force if (gameManager.GetInvertY(player)) { movement.rotationForce.X = -movement.rotationForce.X; } // if blaster ready and input activated if (blaster == 1) { if (input.IsKeyPressed(player, Keys.Space) || input.CurrentState.padState[player].Triggers.Right > 0) { // fire blaster FireProjectile(ProjectileType.Blaster, GameOptions.BlasterVelocity); // reset charge time blaster = 0; } } // if missile is ready and input activated if (missile == 1 && missileCount > 0) { if (input.IsKeyPressed(player, Keys.Enter) || input.IsTriggerPressedLeft(player)) { // fire missile FireProjectile(ProjectileType.Missile, GameOptions.MissileVelocity); // subtract missile count AddMissile(-1); // reset charge time missile = 0; } } // if shield is ready and input if (shield == 1) { if (input.IsKeyPressed(player, Keys.R) || input.IsButtonPressedA(player)) { // activate shield shieldUse = true; // create animated sprite animatedSpriteShield = gameManager.AddAnimSprite(AnimSpriteType.Shield, transform.Translation + transform.Forward * 10, 160, 80, 15, DrawMode.Additive, player); // play shield sound gameManager.PlaySound("shield_activate"); } } // if boost ready and input activated if (boost == 1) { if (input.IsKeyPressed(player, Keys.LeftShift) || input.IsKeyPressed(player, Keys.RightShift) || input.IsButtonPressedY(player) || input.IsButtonPressedLeftStick(player)) { // activate boost boostUse = true; // play boost sound gameManager.PlaySound("ship_boost"); } } // if camara switch input activated if (input.IsKeyPressed(player, Keys.Back) || input.IsButtonPressedB(player)) { // switch 3rd person mode camera3rdPerson = !camera3rdPerson; // reset camera chaseCamera.Reset(); } }
public override void ProcessInput(float elapsedTime, InputManager input) { if (input == null) { throw new ArgumentNullException("input"); } const float rotationVelocity = 3.0f; int i, j = (int)gameManager.GameMode; for (i = 0; i < j; i++) { if (confirmed[i] == false) { // change invert Y selection if (input.IsKeyPressed(i, Keys.Y) || input.IsButtonPressedY(i)) { invertY ^= ((uint)1 << i); gameManager.PlaySound("menu_change"); } // confirm selection if (input.IsKeyPressed(i, Keys.Enter) || input.IsButtonPressedA(i)) { confirmed[i] = true; gameManager.PlaySound("menu_select"); } // cancel and return to intro menu if (input.IsKeyPressed(i, Keys.Escape) || input.IsButtonPressedB(i)) { gameManager.SetShips(null, null, 0); screenManager.SetNextScreen(ScreenType.ScreenIntro); gameManager.PlaySound("menu_cancel"); } // rotate ship float RotX = rotationVelocity * input.LeftStick(i).X *elapsedTime; if (input.IsKeyDown(i, Keys.Left)) { RotX -= rotationVelocity * elapsedTime; } if (input.IsKeyDown(i, Keys.Right)) { RotX += rotationVelocity * elapsedTime; } if (Math.Abs(RotX) < 0.001f) { RotX = -0.5f * elapsedTime; } rotation[i] = rotation[i] * Matrix.CreateRotationY(RotX); // change ship (next) if (input.IsKeyPressed(i, Keys.Up) || input.IsButtonPressedDPadUp(i) || input.IsButtonPressedLeftStickUp(i)) { selection[i] = (selection[i] + 1) % NumberShips; gameManager.PlaySound("menu_change"); } // change ship (previous) if (input.IsKeyPressed(i, Keys.Down) || input.IsButtonPressedDPadDown(i) || input.IsButtonPressedLeftStickDown(i)) { if (selection[i] == 0) { selection[i] = NumberShips - 1; } else { selection[i] = selection[i] - 1; } gameManager.PlaySound("menu_change"); } } else { // cancel selection if (input.IsKeyPressed(i, Keys.Escape) || input.IsButtonPressedB(i)) { confirmed[i] = false; gameManager.PlaySound("menu_cancel"); } } } // if both ships confirmed, go to game screen if (confirmed[0] && confirmed[1]) { if (gameManager.GameMode == GameMode.SinglePlayer) { gameManager.SetShips(ships[selection[0]], null, invertY); } else { gameManager.SetShips(ships[selection[0]], ships[selection[1]], invertY); } screenManager.SetNextScreen(ScreenType.ScreenLevel); } }
public override void ProcessInput(float elapsedTime, InputManager input) { if (input == null) { throw new ArgumentNullException("input"); } const float rotationVelocity = 3.0f; int i, j = (int)gameManager.GameMode; for (i = 0; i < j; i++) if (confirmed[i] == false) { // change invert Y selection if (input.IsKeyPressed(i, Keys.Y) || input.IsButtonPressedY(i)) { invertY ^= ((uint)1 << i); gameManager.PlaySound("menu_change"); } // confirm selection if (input.IsKeyPressed(i, Keys.Enter) || input.IsButtonPressedA(i)) { confirmed[i] = true; gameManager.PlaySound("menu_select"); } // cancel and return to intro menu if (input.IsKeyPressed(i, Keys.Escape) || input.IsButtonPressedB(i)) { gameManager.SetShips(null, null, 0); screenManager.SetNextScreen(ScreenType.ScreenIntro); gameManager.PlaySound("menu_cancel"); } // rotate ship float RotX = rotationVelocity * input.LeftStick(i).X * elapsedTime; if (input.IsKeyDown(i, Keys.Left)) RotX -= rotationVelocity * elapsedTime; if (input.IsKeyDown(i, Keys.Right)) RotX += rotationVelocity * elapsedTime; if (Math.Abs(RotX) < 0.001f) RotX = -0.5f * elapsedTime; rotation[i] = rotation[i] * Matrix.CreateRotationY(RotX); // change ship (next) if (input.IsKeyPressed(i, Keys.Up) || input.IsButtonPressedDPadUp(i) || input.IsButtonPressedLeftStickUp(i)) { selection[i] = (selection[i] + 1) % NumberShips; gameManager.PlaySound("menu_change"); } // change ship (previous) if (input.IsKeyPressed(i, Keys.Down) || input.IsButtonPressedDPadDown(i) || input.IsButtonPressedLeftStickDown(i)) { if (selection[i] == 0) selection[i] = NumberShips - 1; else selection[i] = selection[i] - 1; gameManager.PlaySound("menu_change"); } } else { // cancel selection if (input.IsKeyPressed(i, Keys.Escape) || input.IsButtonPressedB(i)) { confirmed[i] = false; gameManager.PlaySound("menu_cancel"); } } // if both ships confirmed, go to game screen if (confirmed[0] && confirmed[1]) { if (gameManager.GameMode == GameMode.SinglePlayer) gameManager.SetShips(ships[selection[0]], null, invertY); else gameManager.SetShips(ships[selection[0]], ships[selection[1]], invertY); screenManager.SetNextScreen(ScreenType.ScreenLevel); } }
/// <summary> /// Process input for player ship (movement and weapons) /// </summary> public void ProcessInput(float elapsedTime, InputManager input, int player) { if (input == null) { throw new ArgumentNullException("input"); } // if dead, don't process input for player if (IsAlive == false) { return; } // process movement related inputs movement.ProcessInput(elapsedTime, input.CurrentState, player); // if player invert Y is enabled, invert X rotation force if (gameManager.GetInvertY(player)) movement.rotationForce.X = -movement.rotationForce.X; // if blaster ready and input activated if (blaster == 1) if (input.IsKeyPressed(player, Keys.Space) || input.CurrentState.padState[player].Triggers.Right > 0) { // fire blaster FireProjectile(ProjectileType.Blaster, GameOptions.BlasterVelocity); // reset charge time blaster = 0; } // if missile is ready and input activated if (missile == 1 && missileCount > 0) if (input.IsKeyPressed(player, Keys.Enter) || input.IsTriggerPressedLeft(player)) { // fire missile FireProjectile(ProjectileType.Missile, GameOptions.MissileVelocity); // subtract missile count AddMissile(-1); // reset charge time missile = 0; } // if shield is ready and input if (shield == 1) if (input.IsKeyPressed(player,Keys.R) || input.IsButtonPressedA(player)) { // activate shield shieldUse = true; // create animated sprite animatedSpriteShield = gameManager.AddAnimSprite(AnimSpriteType.Shield, transform.Translation + transform.Forward * 10, 160, 80, 15, DrawMode.Additive, player); // play shield sound gameManager.PlaySound("shield_activate"); } // if boost ready and input activated if (boost == 1) if (input.IsKeyPressed(player, Keys.LeftShift) || input.IsKeyPressed(player, Keys.RightShift) || input.IsButtonPressedY(player) || input.IsButtonPressedLeftStick(player)) { // activate boost boostUse = true; // play boost sound gameManager.PlaySound("ship_boost"); } // if camara switch input activated if (input.IsKeyPressed(player, Keys.Back) || input.IsButtonPressedB(player)) { // switch 3rd person mode camera3rdPerson = !camera3rdPerson; // reset camera chaseCamera.Reset(); } }