summaryrefslogtreecommitdiff
path: root/StardewModdingAPI
diff options
context:
space:
mode:
authorClxS <slxxls92@gmail.com>2016-03-06 19:46:47 +0000
committerClxS <slxxls92@gmail.com>2016-03-06 19:46:47 +0000
commitbfe6537f84fe780197c4554f360f19c3f9f12371 (patch)
tree694c52d73f4929e008996d9f21223ae9d4756dbb /StardewModdingAPI
parent126ce53618719f6734125669e1466f681be49a78 (diff)
downloadSMAPI-bfe6537f84fe780197c4554f360f19c3f9f12371.tar.gz
SMAPI-bfe6537f84fe780197c4554f360f19c3f9f12371.tar.bz2
SMAPI-bfe6537f84fe780197c4554f360f19c3f9f12371.zip
Added KeyReleased event
Diffstat (limited to 'StardewModdingAPI')
-rw-r--r--StardewModdingAPI/Events/Controls.cs6
-rw-r--r--StardewModdingAPI/Inheritance/SGame.cs10
2 files changed, 15 insertions, 1 deletions
diff --git a/StardewModdingAPI/Events/Controls.cs b/StardewModdingAPI/Events/Controls.cs
index ace890ca..8cf0f431 100644
--- a/StardewModdingAPI/Events/Controls.cs
+++ b/StardewModdingAPI/Events/Controls.cs
@@ -11,6 +11,7 @@ namespace StardewModdingAPI.Events
{
public static event EventHandler<EventArgsKeyboardStateChanged> KeyboardChanged = delegate { };
public static event EventHandler<EventArgsKeyPressed> KeyPressed = delegate { };
+ public static event EventHandler<EventArgsKeyPressed> KeyReleased = delegate { };
public static event EventHandler<EventArgsMouseStateChanged> MouseChanged = delegate { };
public static void InvokeKeyboardChanged(KeyboardState priorState, KeyboardState newState)
@@ -27,5 +28,10 @@ namespace StardewModdingAPI.Events
{
KeyPressed.Invoke(null, new EventArgsKeyPressed(key));
}
+
+ public static void InvokeKeyReleased(Keys key)
+ {
+ KeyReleased.Invoke(null, new EventArgsKeyPressed(key));
+ }
}
}
diff --git a/StardewModdingAPI/Inheritance/SGame.cs b/StardewModdingAPI/Inheritance/SGame.cs
index c7b07c43..120f4a6e 100644
--- a/StardewModdingAPI/Inheritance/SGame.cs
+++ b/StardewModdingAPI/Inheritance/SGame.cs
@@ -43,6 +43,10 @@ namespace StardewModdingAPI.Inheritance
{
get { return CurrentlyPressedKeys.Where(x => !PreviouslyPressedKeys.Contains(x)).ToArray(); }
}
+ public Keys[] FrameReleasedKeys
+ {
+ get { return PreviouslyPressedKeys.Where(x => !CurrentlyPressedKeys.Contains(x)).ToArray(); }
+ }
public int PreviousGameLocations { get; private set; }
public int PreviousLocationObjects { get; private set; }
@@ -233,11 +237,15 @@ namespace StardewModdingAPI.Inheritance
{
KStateNow = Keyboard.GetState();
CurrentlyPressedKeys = KStateNow.GetPressedKeys();
+
MStateNow = Mouse.GetState();
foreach (Keys k in FramePressedKeys)
Events.ControlEvents.InvokeKeyPressed(k);
-
+
+ foreach (Keys k in FrameReleasedKeys)
+ Events.ControlEvents.InvokeKeyReleased(k);
+
if (KStateNow != KStatePrior)
{
Events.ControlEvents.InvokeKeyboardChanged(KStatePrior, KStateNow);