Changes

move SButton info to Modding:Modder Guide/APIs/Input
Line 117: Line 117:     
==Input==
 
==Input==
SMAPI's <tt>SButton</tt> constants unify the [https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.buttons.aspx <tt>Buttons</tt>], [https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.keys.aspx <tt>Keys</tt>], [https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.mousestate.aspx <tt>MouseState</tt>], and <tt>InputButton</tt> constants. SMAPI events use this to let you handle controller, keyboard, and mouse input without needing separate code for each. See [[Modding:Key bindings]] for a list of values.
+
SMAPI's <tt>SButton</tt> constants uniquely represent controller, keyboard, and mouse button presses or clicks. See the [[../Input|Input]] page for more info.
 
  −
SMAPI provides extensions to convert any of the other constants to <tt>SButton</tt>:
  −
<source lang="c#">
  −
SButton key = Keys.A.ToSButton(); // SButton.A
  −
SButton button = Buttons.A.ToSButton(); // SButton.ControllerA
  −
SButton input = new InputButton(true).ToSButton(); // SButton.MouseLeft
  −
</source>
  −
 
  −
You can also convert <tt>SButton</tt> to the other constants. This uses a <tt>TryGet</tt> approach since <tt>SButton</tt> is a superset of the others (e.g. you can't convert <tt>SButton.ControllerA</tt> to a keyboard value):
  −
<source lang="c#">
  −
SButton value = SButton.A;
  −
if (value.TryGetKeyboard(out Keys key))
  −
  ...;
  −
if (value.TryGetController(out Buttons button))
  −
  ...;
  −
if (value.TryGetStardewInput(out InputButton input))
  −
  ...;
  −
</source>
  −
 
  −
Two last extensions let you check how the button is mapped in the game:
  −
<source lang="c#">
  −
SButton button = SButton.MouseLeft;
  −
if (button.IsUseToolButton())
  −
  // use tool
  −
else if (button.IsActionButton())
  −
  // perform action
  −
</source>
  −
 
  −
You can use <tt>SButton</tt> values directly in your [[../Config|config model]], and they'll be represented by their names:
  −
{| class="wikitable"
  −
| <source lang="c#">
  −
internal class ModConfig
  −
{
  −
  public SButton DoThingButton { get; set; } = SButton.LeftControl;
  −
}
  −
</source>
  −
| &rarr;
  −
| <source lang="json">
  −
{
  −
  "DoThingButton": "LeftControl"
  −
}
  −
</source>
  −
|}
      
==Semantic versions==
 
==Semantic versions==
translators
8,403

edits