diff options
author | Zoryn <Zoryn4163@users.noreply.github.com> | 2016-03-20 20:52:56 -0400 |
---|---|---|
committer | Zoryn <Zoryn4163@users.noreply.github.com> | 2016-03-20 20:52:56 -0400 |
commit | a7af9b5eccde0392d7a47e305ce56ce5d60ae2a9 (patch) | |
tree | c00610495d00f6bd4bde9e4eeac390452b5cc978 | |
parent | f3c7b9eada47233974282d50dc543dcd79a1e3c4 (diff) | |
parent | ab0fdb76b0cda10ca44d65e7fd691153bba7a27e (diff) | |
download | SMAPI-a7af9b5eccde0392d7a47e305ce56ce5d60ae2a9.tar.gz SMAPI-a7af9b5eccde0392d7a47e305ce56ce5d60ae2a9.tar.bz2 SMAPI-a7af9b5eccde0392d7a47e305ce56ce5d60ae2a9.zip |
Merge pull request #38 from Zoryn4163/master
adds some new events for the update loop
-rw-r--r-- | StardewModdingAPI/Events/Game.cs | 57 | ||||
-rw-r--r-- | StardewModdingAPI/Extensions.cs | 5 | ||||
-rw-r--r-- | StardewModdingAPI/Inheritance/SGame.cs | 27 |
3 files changed, 89 insertions, 0 deletions
diff --git a/StardewModdingAPI/Events/Game.cs b/StardewModdingAPI/Events/Game.cs index 6290d2c7..60531dd8 100644 --- a/StardewModdingAPI/Events/Game.cs +++ b/StardewModdingAPI/Events/Game.cs @@ -11,7 +11,34 @@ namespace StardewModdingAPI.Events public static event EventHandler GameLoaded = delegate { };
public static event EventHandler Initialize = delegate { };
public static event EventHandler LoadContent = delegate { };
+ /// <summary>
+ /// Fires every update (1/60 of a second)
+ /// </summary>
public static event EventHandler UpdateTick = delegate { };
+ /// <summary>
+ /// Fires every other update (1/30 of a second)
+ /// </summary>
+ public static event EventHandler SecondUpdateTick = delegate { };
+ /// <summary>
+ /// Fires every fourth update (1/15 of a second)
+ /// </summary>
+ public static event EventHandler FourthUpdateTick = delegate { };
+ /// <summary>
+ /// Fires every eighth update (roughly 1/8 of a second)
+ /// </summary>
+ public static event EventHandler EighthUpdateTick = delegate { };
+ /// <summary>
+ /// Fires every fifthteenth update (1/4 of a second)
+ /// </summary>
+ public static event EventHandler QuarterSecondTick = delegate { };
+ /// <summary>
+ /// Fires every thirtieth update (1/2 of a second)
+ /// </summary>
+ public static event EventHandler HalfSecondTick = delegate { };
+ /// <summary>
+ /// Fires every sixtieth update (a second)
+ /// </summary>
+ public static event EventHandler OneSecondTick = delegate { };
public static void InvokeGameLoaded()
{
@@ -53,5 +80,35 @@ namespace StardewModdingAPI.Events Log.Error("An exception occured in XNA UpdateTick: " + ex.ToString());
}
}
+
+ public static void InvokeSecondUpdateTick()
+ {
+ SecondUpdateTick.Invoke(null, EventArgs.Empty);
+ }
+
+ public static void InvokeFourthUpdateTick()
+ {
+ FourthUpdateTick.Invoke(null, EventArgs.Empty);
+ }
+
+ public static void InvokeEighthUpdateTick()
+ {
+ EighthUpdateTick.Invoke(null, EventArgs.Empty);
+ }
+
+ public static void InvokeQuarterSecondTick()
+ {
+ QuarterSecondTick.Invoke(null, EventArgs.Empty);
+ }
+
+ public static void InvokeHalfSecondTick()
+ {
+ HalfSecondTick.Invoke(null, EventArgs.Empty);
+ }
+
+ public static void InvokeOneSecondTick()
+ {
+ OneSecondTick.Invoke(null, EventArgs.Empty);
+ }
}
}
diff --git a/StardewModdingAPI/Extensions.cs b/StardewModdingAPI/Extensions.cs index c504f470..28eb2d7d 100644 --- a/StardewModdingAPI/Extensions.cs +++ b/StardewModdingAPI/Extensions.cs @@ -60,5 +60,10 @@ namespace StardewModdingAPI } return hash; } + + public static T Cast<T>(this object o) where T : StardewValley.Object + { + return o as T; + } } }
\ No newline at end of file diff --git a/StardewModdingAPI/Inheritance/SGame.cs b/StardewModdingAPI/Inheritance/SGame.cs index 735cd58a..9082d695 100644 --- a/StardewModdingAPI/Inheritance/SGame.cs +++ b/StardewModdingAPI/Inheritance/SGame.cs @@ -173,6 +173,8 @@ namespace StardewModdingAPI.Inheritance public Farmer PreviousFarmer { get; private set; }
+ public Int32 CurrentUpdateTick { get; private set; }
+
private static SGame instance;
public static SGame Instance { get { return instance; } }
@@ -182,6 +184,7 @@ namespace StardewModdingAPI.Inheritance {
instance = this;
+ /*
#if DEBUG
SaveGame.serializer = new XmlSerializer(typeof (SaveGame), new Type[28]
{
@@ -215,6 +218,7 @@ namespace StardewModdingAPI.Inheritance typeof (SObject)
});
#endif
+ */
}
protected override void Initialize()
@@ -252,6 +256,29 @@ namespace StardewModdingAPI.Inheritance Events.GameEvents.InvokeUpdateTick();
+ if (CurrentUpdateTick % 2 == 0)
+ Events.GameEvents.InvokeSecondUpdateTick();
+
+ if (CurrentUpdateTick % 4 == 0)
+ Events.GameEvents.InvokeFourthUpdateTick();
+
+ if (CurrentUpdateTick % 8 == 0)
+ Events.GameEvents.InvokeEighthUpdateTick();
+
+ if (CurrentUpdateTick % 15 == 0)
+ Events.GameEvents.InvokeQuarterSecondTick();
+
+ if (CurrentUpdateTick % 30 == 0)
+ Events.GameEvents.InvokeHalfSecondTick();
+
+ if (CurrentUpdateTick % 60 == 0)
+ Events.GameEvents.InvokeOneSecondTick();
+
+ CurrentUpdateTick += 1;
+ if (CurrentUpdateTick >= 60)
+ CurrentUpdateTick = 0;
+
+
PreviouslyPressedKeys = CurrentlyPressedKeys;
for(PlayerIndex i = PlayerIndex.One; i <= PlayerIndex.Four; i++)
{
|