adds some new events for the update loop
This commit is contained in:
parent
17021ae351
commit
ab0fdb76b0
|
@ -11,7 +11,34 @@ namespace StardewModdingAPI.Events
|
||||||
public static event EventHandler GameLoaded = delegate { };
|
public static event EventHandler GameLoaded = delegate { };
|
||||||
public static event EventHandler Initialize = delegate { };
|
public static event EventHandler Initialize = delegate { };
|
||||||
public static event EventHandler LoadContent = delegate { };
|
public static event EventHandler LoadContent = delegate { };
|
||||||
|
/// <summary>
|
||||||
|
/// Fires every update (1/60 of a second)
|
||||||
|
/// </summary>
|
||||||
public static event EventHandler UpdateTick = delegate { };
|
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()
|
public static void InvokeGameLoaded()
|
||||||
{
|
{
|
||||||
|
@ -53,5 +80,35 @@ namespace StardewModdingAPI.Events
|
||||||
Log.Error("An exception occured in XNA UpdateTick: " + ex.ToString());
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,5 +60,10 @@ namespace StardewModdingAPI
|
||||||
}
|
}
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static T Cast<T>(this object o) where T : StardewValley.Object
|
||||||
|
{
|
||||||
|
return o as T;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -173,6 +173,8 @@ namespace StardewModdingAPI.Inheritance
|
||||||
|
|
||||||
public Farmer PreviousFarmer { get; private set; }
|
public Farmer PreviousFarmer { get; private set; }
|
||||||
|
|
||||||
|
public Int32 CurrentUpdateTick { get; private set; }
|
||||||
|
|
||||||
private static SGame instance;
|
private static SGame instance;
|
||||||
public static SGame Instance { get { return instance; } }
|
public static SGame Instance { get { return instance; } }
|
||||||
|
|
||||||
|
@ -182,6 +184,7 @@ namespace StardewModdingAPI.Inheritance
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
|
||||||
|
/*
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
SaveGame.serializer = new XmlSerializer(typeof (SaveGame), new Type[28]
|
SaveGame.serializer = new XmlSerializer(typeof (SaveGame), new Type[28]
|
||||||
{
|
{
|
||||||
|
@ -215,6 +218,7 @@ namespace StardewModdingAPI.Inheritance
|
||||||
typeof (SObject)
|
typeof (SObject)
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Initialize()
|
protected override void Initialize()
|
||||||
|
@ -252,6 +256,29 @@ namespace StardewModdingAPI.Inheritance
|
||||||
|
|
||||||
Events.GameEvents.InvokeUpdateTick();
|
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;
|
PreviouslyPressedKeys = CurrentlyPressedKeys;
|
||||||
for(PlayerIndex i = PlayerIndex.One; i <= PlayerIndex.Four; i++)
|
for(PlayerIndex i = PlayerIndex.One; i <= PlayerIndex.Four; i++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue