69 lines
2.1 KiB
C#
69 lines
2.1 KiB
C#
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Input;
|
|
using System.Collections.Generic;
|
|
|
|
namespace RecrownedAthenaeum.Input
|
|
{
|
|
public static class InputUtilities
|
|
{
|
|
public static List<IInputListener> InputListeners;
|
|
static KeyboardState keyboardState;
|
|
static MouseState mouseState;
|
|
|
|
static InputUtilities()
|
|
{
|
|
InputListeners = new List<IInputListener>();
|
|
}
|
|
|
|
public static void Update()
|
|
{
|
|
KeyboardState updatedKeyboardState = Keyboard.GetState();
|
|
MouseState updatedMouseState = Mouse.GetState();
|
|
bool disableKeyboard = false;
|
|
bool disableMouse = false;
|
|
foreach (IInputListener inputListener in InputListeners)
|
|
{
|
|
if (!disableKeyboard && keyboardState != updatedKeyboardState)
|
|
{
|
|
disableKeyboard = inputListener.KeyboardStateChanged(updatedKeyboardState);
|
|
}
|
|
if (!disableMouse && mouseState != updatedMouseState)
|
|
{
|
|
disableMouse = inputListener.MouseStateChanged(updatedMouseState);
|
|
}
|
|
if (disableKeyboard && disableMouse)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
UpdateStates();
|
|
}
|
|
|
|
public static bool MouseClicked()
|
|
{
|
|
if (mouseState.LeftButton == ButtonState.Pressed)
|
|
{
|
|
return Mouse.GetState().LeftButton != ButtonState.Pressed;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private static void UpdateStates()
|
|
{
|
|
keyboardState = Keyboard.GetState();
|
|
mouseState = Mouse.GetState();
|
|
}
|
|
|
|
public static bool MouseWithinBoundries(Rectangle bounds)
|
|
{
|
|
MouseState mouseState = Mouse.GetState();
|
|
if (mouseState.X >= bounds.X && mouseState.X <= (bounds.X + bounds.Width) && mouseState.Y >= bounds.Y && mouseState.Y <= (bounds.Y + bounds.Height))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|