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,508 bytes removed, 02:39, 23 January 2021
Per-screen data: move content to multiplayer API page
===Per-screen data===
[[Multiplayer|Split-screen multiplayer]] swaps the entire game state between each player, so each mod runs across every player. For example, with four local players the [[Modding:Modder Guide/APIs/Events#GameLoop.UpdateTicked|<tt>UpdateTicked</tt>]] event would be raised four times per tick. The game manages its own state automatically (e.g. <tt>Game1.activeClickableMenu</tt>), but if your mod stores info in its own fields you may need to handle those yourself. That can be tricky, so SMAPI provides 's <code>PerScreen&lt;T&gt;</code> to take care of it. A <code>PerScreen&lt;T&gt;</code> field utility manages a separate value for each local screenin split-screen modeFor example, this mod would keep track of the last button pressed by each playerSee [[Modding<source lang="CModder Guide/APIs/Multiplayer#">internal class ModEntry : Mod{ private readonly PerScreenPer-screen data|<SButton> LastButtonPressed = new PerScreen<SButton>();   public override void Entry(IModHelper helper) { helper.Events.Input.ButtonPressed += this.OnButtonPressed; }  private void OnButtonPressed(object sender, ButtonPressedEventArgs e) { this.LastButtonPressed.Value = e.Button; }}</source> If you haven't set a value for the current player, <codett>PerScreen&lt;T&gt;</code> will return the default value for the type (e.g. 0 for <tt>int</tt>). You can change that by specifying your own default-value logic: <source lang="C#">private readonly PerScreen<SButton> LastButtonPressed = new PerScreen<SButton>(createNewState: () => SButton.None);</source> '''Tip:''' you should almost always mark a per-screen field <code>readonly</code>. Overwriting in the entire field (instead of setting the <tt>Value</tt> property) will clear the data multiplayer API]] for all players, instead of setting it for the current onedetails.
===Semantic versions===
Protected, translators
5,421
edits

Navigation menu