summaryrefslogtreecommitdiff
path: root/src/SMAPI/Events/GameLoopUpdatedEventArgs.cs
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2018-07-08 20:06:33 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2018-07-08 20:06:33 -0400
commit3b078d55daccd13332e2cba1fd5c76f775505d7a (patch)
tree47a531276effb17a60dbec2a5ae2220102129b3b /src/SMAPI/Events/GameLoopUpdatedEventArgs.cs
parent7e46cc24630d810f4e2396346124780160cb7aa3 (diff)
downloadSMAPI-3b078d55daccd13332e2cba1fd5c76f775505d7a.tar.gz
SMAPI-3b078d55daccd13332e2cba1fd5c76f775505d7a.tar.bz2
SMAPI-3b078d55daccd13332e2cba1fd5c76f775505d7a.zip
add GameLoop events for SMAPI 3.0 (#310)
Diffstat (limited to 'src/SMAPI/Events/GameLoopUpdatedEventArgs.cs')
-rw-r--r--src/SMAPI/Events/GameLoopUpdatedEventArgs.cs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/SMAPI/Events/GameLoopUpdatedEventArgs.cs b/src/SMAPI/Events/GameLoopUpdatedEventArgs.cs
new file mode 100644
index 00000000..3ad34b69
--- /dev/null
+++ b/src/SMAPI/Events/GameLoopUpdatedEventArgs.cs
@@ -0,0 +1,36 @@
+using System;
+
+namespace StardewModdingAPI.Events
+{
+ /// <summary>Event arguments for an <see cref="IGameLoopEvents.Updated"/> event.</summary>
+ public class GameLoopUpdatedEventArgs : EventArgs
+ {
+ /*********
+ ** Accessors
+ *********/
+ /// <summary>The number of ticks elapsed since the game started, including the current tick.</summary>
+ public uint Ticks { get; }
+
+ /// <summary>Whether <see cref="Ticks"/> is a multiple of 60, which happens approximately once per second.</summary>
+ public bool IsOneSecond { get; }
+
+
+ /*********
+ ** Public methods
+ *********/
+ /// <summary>Construct an instance.</summary>
+ /// <param name="ticks">The number of ticks elapsed since the game started, including the current tick.</param>
+ public GameLoopUpdatedEventArgs(uint ticks)
+ {
+ this.Ticks = ticks;
+ this.IsOneSecond = this.IsMultipleOf(60);
+ }
+
+ /// <summary>Get whether <see cref="Ticks"/> is a multiple of the given <paramref name="number"/>. This is mainly useful if you want to run logic intermittently (e.g. <code>e.IsMultipleOf(30)</code> for every half-second).</summary>
+ /// <param name="number">The factor to check.</param>
+ public bool IsMultipleOf(uint number)
+ {
+ return this.Ticks % number == 0;
+ }
+ }
+}