This wiki is a read-only version of the Stardew Valley Wiki. The official editable wiki maintained by ConcernedApe can be found at stardewvalleywiki.com

Changes

Jump to: navigation, search

Modding:Modder Guide/APIs/Utilities

1,913 bytes added, 05:30, 2 June 2018
+ SButton docs
| <tt>DaysSinceStart</tt>
| The number of days since the first day, inclusively (i.e. 01 spring Y1 = 1).
|}
 
==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 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>
|}
Protected, translators
5,421
edits

Navigation menu