/// <summary> /// Let the user do stuff... /// </summary> public override void HandleInput() { if (input == null) { Mouse.WindowHandle = base.ScreenManager.Game.Window.Handle; input = new InputHandler(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), Mouse.GetState()); input.Viewport = new Rectangle(0, 0, ScreenManager.GraphicsDevice.Viewport.Width, ScreenManager.GraphicsDevice.Viewport.Height); } else { Mouse.WindowHandle = base.ScreenManager.Game.Window.Handle; Mouse.SetPosition((int)MathHelper.Clamp(Mouse.GetState().X, -10, ScreenManager.GraphicsDevice.Viewport.Width + 10), (int)MathHelper.Clamp(Mouse.GetState().Y, -20, ScreenManager.GraphicsDevice.Viewport.Height + 10)); input.Update(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), Mouse.GetState()); } IsPaused = (input.BackPress || input.StartPress || input.EscPress); if (IsPaused) { ScreenManager.AddScreen(new Backdrop(txBackground, new PauseMenuScreen()), ControllingPlayer); } else if (input.LeftMBDown) { foreach (Buyable btn in shopItems) btn.ClickDown(input.Mouse); } else if (input.LeftMBUp) { foreach (Buyable btn in shopItems) btn.ClickUp(input.Mouse); } else if (input.APress || input.LTPress || input.RTPress) { foreach (Buyable btn in shopItems) { btn.ClickDown(input.Mouse); btn.ClickUp(input.Mouse); } } else if (input.SpacePress || input.LBPress) { Player.cash += 3.05m; Player.wantedLevel++; } if (input != null) { shopBLUR.setPos((int)(input.Mouse.X - (mouseCursor.Width / 2)), (int)(input.Mouse.Y - (mouseCursor.Height / 2)), fadeSpeed_X, fadeSpeed_Y); } }
/// <summary> /// Lets the game respond to player input. Unlike the Update method, /// this will only be called when the gameplay screen is active. /// </summary> public override void HandleInput() { if (input == null) { input = new InputHandler(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), Mouse.GetState()); input.Viewport = new Rectangle(0, 0, ScreenManager.GraphicsDevice.Viewport.Width, ScreenManager.GraphicsDevice.Viewport.Height); } else { Mouse.SetPosition((int)MathHelper.Clamp(Mouse.GetState().X, -10, ScreenManager.GraphicsDevice.Viewport.Width + 10), (int)MathHelper.Clamp(Mouse.GetState().Y, -20, ScreenManager.GraphicsDevice.Viewport.Height + 10)); input.Update(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), Mouse.GetState()); } // The game pauses either if the user presses the pause button, or if // they unplug the active gamepad. This requires us to keep track of // whether a gamepad was ever plugged in, because we don't want to pause // on PC if they are playing with a keyboard and have no gamepad at all! bool IsPaused = (input.BackPress || input.EscPress); if (IsPaused) { input = null; ScreenManager.AddScreen(new Backdrop(txBackground, new PauseMenuScreen()), ControllingPlayer); } else { if (input.DpadLeftPress || input.LStickLeft || input.LeftPress) selector.Move(Selector.direction.Left); else if (input.DpadRightPress || input.LStickRight || input.RightPress) selector.Move(Selector.direction.Right); else if (input.StartPress || input.APress || input.EnterPress) { character Player = null; if ((Player = AVAILABLE_CHARACTERS.CHARACTERS[selector.character]) != null) { Player.hoboNumber = selector.character; //Gameplay screen begins if (ScreenManager.GlobalOptions.SOUND_ENABLE) seSelect.Play(); ScreenManager.AddScreen(new GameplayScreen(Player), ControllingPlayer); //Character selection screen goes away ExitScreen(); } else throw new ArgumentNullException("invalid char select"); } } }
/// <summary> /// Constructor. /// </summary> public GameplayScreen(character player) { TransitionOnTime = TimeSpan.FromSeconds(1.5); TransitionOffTime = TimeSpan.FromSeconds(0.5); input = new InputHandler(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), Mouse.GetState()); debugMouseAlpha = new Color(255, 255, 255, (byte)0.5); Player = player; rotation = 0; rotationDirection = new Vector2(-1 , 0); fadeDirection = new Vector2(1 , 1); backgroundScale = 1.25; hitboxScale = MathHelper.Clamp((1 - (Player.intoxicationLevel / 100)), 0.40f, 1.00f); machineFadeSpeed_X = 1; machineFadeSpeed_Y = 1; confrontationInterval = random.Next(30000, 300000); }
/// <summary> /// Lets the game respond to player input. Unlike the Update method, /// this will only be called when the gameplay screen is active. /// </summary> public override void HandleInput() { if (input == null) { input = new InputHandler(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), Mouse.GetState()); input.Viewport = new Rectangle(0, 0, ScreenManager.GraphicsDevice.Viewport.Width, ScreenManager.GraphicsDevice.Viewport.Height); } else { Mouse.SetPosition((int)MathHelper.Clamp(Mouse.GetState().X, -10, ScreenManager.GraphicsDevice.Viewport.Width + 10), (int)MathHelper.Clamp(Mouse.GetState().Y, -20, ScreenManager.GraphicsDevice.Viewport.Height + 10)); input.Update(GamePad.GetState(PlayerIndex.One), Keyboard.GetState(), Mouse.GetState()); } if (input.EnterPress || input.BPress) ExitScreen(); }