protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } // TODO: Add your update logic here base.Update(gameTime); inputManager.CaptureInput(gameTime); GameParameters.Update(gameTime); map.Update(gameTime); debugInfo.Update(recto, map, resolution, _graphics, GraphicsDevice.DisplayMode); elapsedMiliseconds += gameTime.ElapsedGameTime.TotalMilliseconds; debugOverlay.Update(debugInfo); if (elapsedMiliseconds > 1000) { RefreshFPSVariables(); } ++updateCounter; }
public void CaptureInput(GameTime gameTime) { KeyboardState keyboardState = Keyboard.GetState(); MouseState mouseState = Mouse.GetState(); if (keyboardState.IsKeyDown(Keys.D)) { if (BoundHero.CanMoveRight()) { speedChange = new Vector2((float)(GameParameters.HeroAcceleration * gameTime.ElapsedGameTime.TotalSeconds * GameParameters.GameSpeed), 0); } else { speedChange = new Vector2(0, 0); } if (BoundHero.Speed.X < GameParameters.DefaultHeroMaxSpeed) { BoundHero.Speed += speedChange; if (BoundHero.Speed.X > GameParameters.DefaultHeroMaxSpeed) { BoundHero.Speed = new Vector2(GameParameters.DefaultHeroMaxSpeed, BoundHero.Speed.Y); } } else if (BoundHero.State == ObjectState.Standing) { BoundHero.Speed -= speedChange; } } if (keyboardState.IsKeyDown(Keys.A)) { if (BoundHero.CanMoveLeft()) { speedChange = new Vector2((float)(-GameParameters.HeroAcceleration * gameTime.ElapsedGameTime.TotalSeconds * GameParameters.GameSpeed), 0); } else { speedChange = new Vector2(0, 0); } if (BoundHero.Speed.X > -GameParameters.DefaultHeroMaxSpeed) { BoundHero.Speed += speedChange; if (BoundHero.Speed.X < -GameParameters.DefaultHeroMaxSpeed) { BoundHero.Speed = new Vector2(-GameParameters.DefaultHeroMaxSpeed, BoundHero.Speed.Y); } } else if (BoundHero.State == ObjectState.Standing) { BoundHero.Speed -= speedChange; } } if (keyboardState.IsKeyDown(Keys.D) == keyboardState.IsKeyDown(Keys.A) && BoundHero.Speed.X != 0) { speedChange = BoundHero.Speed.X > 0 ? new Vector2((float)(-GameParameters.HeroAcceleration * gameTime.ElapsedGameTime.TotalSeconds * GameParameters.GameSpeed), 0) : new Vector2((float)(GameParameters.HeroAcceleration * gameTime.ElapsedGameTime.TotalSeconds * GameParameters.GameSpeed), 0); if (BoundHero.State == ObjectState.Falling) { speedChange /= 8; } if (Math.Abs(BoundHero.Speed.X) - Math.Abs(speedChange.X) < 0) { BoundHero.Speed = new Vector2(0, BoundHero.Speed.Y); } else { BoundHero.Speed = new Vector2(BoundHero.Speed.X + speedChange.X, BoundHero.Speed.Y); } } if (keyboardState.IsKeyDown(Keys.Space)) { BoundHero.Jump(); } if (keyboardState.IsKeyDown(Keys.F1)) { if (kbcd >= cd) { BoundHero.DrawHero = BoundHero.DrawHero ? false : true; kbcd = 0; } } if (keyboardState.IsKeyDown(Keys.F2)) { if (kbcd >= cd) { BoundHero.DrawCollisionRect = BoundHero.DrawCollisionRect ? false : true; kbcd = 0; } } if (keyboardState.IsKeyDown(Keys.F3)) { if (kbcd >= cd) { BoundHero.DrawOuterSides = BoundHero.DrawOuterSides ? false : true; kbcd = 0; } } if (keyboardState.IsKeyDown(Keys.F4)) { if (kbcd >= cd) { BoundHero.DrawRay = BoundHero.DrawRay ? false : true; kbcd = 0; } } if (keyboardState.IsKeyDown(Keys.C)) { if (kbcd >= cd) { BoundHero.RayIsControllable = BoundHero.RayIsControllable ? false : true; kbcd = 0; } } if (keyboardState.IsKeyDown(Keys.R)) { if (kbcd >= cd) { BoundHero.Initialize(); kbcd = 0; } } if (mouseState.LeftButton == ButtonState.Pressed) { BoundHero.PrimarySkill(); } if (keyboardState.IsKeyDown(Keys.LeftShift)) { if (!movementSkill) { GameParameters.TranslateGameSpeedSmoothly(0.33d, 15); movementSkill = true; } } else if (movementSkill) { GameParameters.TranslateGameSpeedSmoothly(1d, 5); movementSkill = false; BoundHero.MovementSkill(); } ++kbcd; if (mouseState.MiddleButton == ButtonState.Pressed && !mouseDrag) { oldCameraPos = BoundHero.CurrentMap.MapCamera.Position; dragStart = new Vector2(mouseState.Position.X, mouseState.Position.Y); mouseDrag = true; } if (mouseState.MiddleButton == ButtonState.Released) { mouseDrag = false; } if (mouseDrag) { dragEnd = new Vector2(mouseState.Position.X, mouseState.Position.Y); BoundHero.CurrentMap.MapCamera.Position = oldCameraPos - (dragEnd - dragStart); } }