summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI/Utilities/SButton.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/StardewModdingAPI/Utilities/SButton.cs')
-rw-r--r--src/StardewModdingAPI/Utilities/SButton.cs28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/StardewModdingAPI/Utilities/SButton.cs b/src/StardewModdingAPI/Utilities/SButton.cs
index c4833b0b..33058a64 100644
--- a/src/StardewModdingAPI/Utilities/SButton.cs
+++ b/src/StardewModdingAPI/Utilities/SButton.cs
@@ -1,5 +1,6 @@
-using System;
+using System;
using Microsoft.Xna.Framework.Input;
+using StardewValley;
namespace StardewModdingAPI.Utilities
{
@@ -655,5 +656,30 @@ namespace StardewModdingAPI.Utilities
button = 0;
return false;
}
+
+ /// <summary>Get the <see cref="InputButton"/> equivalent for the given button.</summary>
+ /// <param name="input">The button to convert.</param>
+ /// <param name="button">The Stardew Valley input button equivalent.</param>
+ /// <returns>Returns whether the value was converted successfully.</returns>
+ public static bool TryGetStardewInput(this SButton input, out InputButton button)
+ {
+ // keyboard
+ if (input.TryGetKeyboard(out Keys key))
+ {
+ button = new InputButton(key);
+ return true;
+ }
+
+ // mouse
+ if (input == SButton.MouseLeft || input == SButton.MouseRight)
+ {
+ button = new InputButton(mouseLeft: input == SButton.MouseLeft);
+ return true;
+ }
+
+ // not valid
+ button = default(InputButton);
+ return false;
+ }
}
}