summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2017-04-24 13:30:49 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2017-04-24 13:30:49 -0400
commit22806ab900721a61b142937bc58dd33727d377f9 (patch)
treebc5062865b0d5d384b6fb13326c1b32313a0038a /src
parentdbb9bd84306830456032778fc11fb9a34dd140c7 (diff)
parentfee89a99da3295c6bb35d6543a112db8924057de (diff)
downloadSMAPI-22806ab900721a61b142937bc58dd33727d377f9.tar.gz
SMAPI-22806ab900721a61b142937bc58dd33727d377f9.tar.bz2
SMAPI-22806ab900721a61b142937bc58dd33727d377f9.zip
Merge branch 'develop' into stable
Diffstat (limited to 'src')
-rw-r--r--src/StardewModdingAPI.Installer/InteractiveInstaller.cs39
-rw-r--r--src/StardewModdingAPI/Constants.cs19
-rw-r--r--src/StardewModdingAPI/Events/ContentEvents.cs1
-rw-r--r--src/StardewModdingAPI/Events/EventArgsClickableMenuChanged.cs4
-rw-r--r--src/StardewModdingAPI/Events/EventArgsClickableMenuClosed.cs2
-rw-r--r--src/StardewModdingAPI/Events/EventArgsCommand.cs2
-rw-r--r--src/StardewModdingAPI/Events/EventArgsControllerButtonPressed.cs4
-rw-r--r--src/StardewModdingAPI/Events/EventArgsControllerButtonReleased.cs4
-rw-r--r--src/StardewModdingAPI/Events/EventArgsControllerTriggerPressed.cs6
-rw-r--r--src/StardewModdingAPI/Events/EventArgsControllerTriggerReleased.cs6
-rw-r--r--src/StardewModdingAPI/Events/EventArgsCurrentLocationChanged.cs4
-rw-r--r--src/StardewModdingAPI/Events/EventArgsGameLocationsChanged.cs2
-rw-r--r--src/StardewModdingAPI/Events/EventArgsInventoryChanged.cs8
-rw-r--r--src/StardewModdingAPI/Events/EventArgsKeyPressed.cs2
-rw-r--r--src/StardewModdingAPI/Events/EventArgsKeyboardStateChanged.cs4
-rw-r--r--src/StardewModdingAPI/Events/EventArgsLevelUp.cs4
-rw-r--r--src/StardewModdingAPI/Events/EventArgsLoadedGameChanged.cs2
-rw-r--r--src/StardewModdingAPI/Events/EventArgsLocationObjectsChanged.cs2
-rw-r--r--src/StardewModdingAPI/Events/EventArgsMineLevelChanged.cs4
-rw-r--r--src/StardewModdingAPI/Events/EventArgsMouseStateChanged.cs8
-rw-r--r--src/StardewModdingAPI/Events/EventArgsNewDay.cs6
-rw-r--r--src/StardewModdingAPI/Events/EventArgsStringChanged.cs4
-rw-r--r--src/StardewModdingAPI/Events/GameEvents.cs55
-rw-r--r--src/StardewModdingAPI/Framework/AssemblyLoader.cs2
-rw-r--r--src/StardewModdingAPI/Framework/InternalExtensions.cs12
-rw-r--r--src/StardewModdingAPI/Framework/Monitor.cs7
-rw-r--r--src/StardewModdingAPI/Framework/SGame.cs1061
-rw-r--r--src/StardewModdingAPI/ISemanticVersion.cs21
-rw-r--r--src/StardewModdingAPI/Program.cs371
-rw-r--r--src/StardewModdingAPI/SemanticVersion.cs35
-rw-r--r--src/StardewModdingAPI/StardewModdingAPI.config.json85
-rw-r--r--src/TrainerMod/TrainerMod.cs82
32 files changed, 1199 insertions, 669 deletions
diff --git a/src/StardewModdingAPI.Installer/InteractiveInstaller.cs b/src/StardewModdingAPI.Installer/InteractiveInstaller.cs
index fffba30f..38c19d2b 100644
--- a/src/StardewModdingAPI.Installer/InteractiveInstaller.cs
+++ b/src/StardewModdingAPI.Installer/InteractiveInstaller.cs
@@ -65,30 +65,30 @@ namespace StardewModdingApi.Installer
/// <param name="modsDir">The folder for SMAPI mods.</param>
private IEnumerable<string> GetUninstallPaths(DirectoryInfo installDir, DirectoryInfo modsDir)
{
- Func<string, string> installPath = path => Path.Combine(installDir.FullName, path);
+ string GetInstallPath(string path) => Path.Combine(installDir.FullName, path);
// common
- yield return installPath("Mono.Cecil.dll");
- yield return installPath("Newtonsoft.Json.dll");
- yield return installPath("StardewModdingAPI.exe");
- yield return installPath("StardewModdingAPI.config.json");
- yield return installPath("StardewModdingAPI.data.json");
- yield return installPath("StardewModdingAPI.AssemblyRewriters.dll");
- yield return installPath("steam_appid.txt");
+ yield return GetInstallPath("Mono.Cecil.dll");
+ yield return GetInstallPath("Newtonsoft.Json.dll");
+ yield return GetInstallPath("StardewModdingAPI.exe");
+ yield return GetInstallPath("StardewModdingAPI.config.json");
+ yield return GetInstallPath("StardewModdingAPI.data.json");
+ yield return GetInstallPath("StardewModdingAPI.AssemblyRewriters.dll");
+ yield return GetInstallPath("steam_appid.txt");
// Linux/Mac only
- yield return installPath("StardewModdingAPI");
- yield return installPath("StardewModdingAPI.exe.mdb");
- yield return installPath("System.Numerics.dll");
- yield return installPath("System.Runtime.Caching.dll");
+ yield return GetInstallPath("StardewModdingAPI");
+ yield return GetInstallPath("StardewModdingAPI.exe.mdb");
+ yield return GetInstallPath("System.Numerics.dll");
+ yield return GetInstallPath("System.Runtime.Caching.dll");
// Windows only
- yield return installPath("StardewModdingAPI.pdb");
+ yield return GetInstallPath("StardewModdingAPI.pdb");
// obsolete
- yield return installPath("Mods/.cache"); // 1.3-1.4
- yield return installPath("Mono.Cecil.Rocks.dll"); // 1.3–1.8
- yield return installPath("StardewModdingAPI-settings.json"); // 1.0-1.4
+ yield return GetInstallPath("Mods/.cache"); // 1.3-1.4
+ yield return GetInstallPath("Mono.Cecil.Rocks.dll"); // 1.3–1.8
+ yield return GetInstallPath("StardewModdingAPI-settings.json"); // 1.0-1.4
if (modsDir.Exists)
{
foreach (DirectoryInfo modDir in modsDir.EnumerateDirectories())
@@ -435,7 +435,7 @@ namespace StardewModdingApi.Installer
catch (Exception ex)
{
this.PrintError($"Oops! The installer couldn't delete {path}: [{ex.GetType().Name}] {ex.Message}.");
- this.PrintError("Please delete it yourself, then press any key to retry.");
+ this.PrintError("Try rebooting your computer and then run the installer again. If that doesn't work, try deleting it yourself then press any key to retry.");
Console.ReadKey();
}
}
@@ -592,7 +592,7 @@ namespace StardewModdingApi.Installer
if (isDir && packagedModNames.Contains(entry.Name, StringComparer.InvariantCultureIgnoreCase))
{
this.PrintDebug($" Deleting {entry.Name} because it's bundled into SMAPI...");
- entry.Delete();
+ this.InteractivelyDelete(entry.FullName);
continue;
}
@@ -626,9 +626,8 @@ namespace StardewModdingApi.Installer
private void Move(FileSystemInfo entry, string newPath)
{
// file
- if (entry is FileInfo)
+ if (entry is FileInfo file)
{
- FileInfo file = (FileInfo)entry;
file.CopyTo(newPath);
file.Delete();
}
diff --git a/src/StardewModdingAPI/Constants.cs b/src/StardewModdingAPI/Constants.cs
index 4a036cd0..6ba16935 100644
--- a/src/StardewModdingAPI/Constants.cs
+++ b/src/StardewModdingAPI/Constants.cs
@@ -33,13 +33,13 @@ namespace StardewModdingAPI
** Public
****/
/// <summary>SMAPI's current semantic version.</summary>
- public static ISemanticVersion ApiVersion { get; } = new SemanticVersion(1, 9, 0);
+ public static ISemanticVersion ApiVersion { get; } = new SemanticVersion(1, 10, 0);
/// <summary>The minimum supported version of Stardew Valley.</summary>
- public static ISemanticVersion MinimumGameVersion { get; } = new SemanticVersion("1.1");
+ public static ISemanticVersion MinimumGameVersion { get; } = new SemanticVersion("1.2.15");
/// <summary>The maximum supported version of Stardew Valley.</summary>
- public static ISemanticVersion MaximumGameVersion { get; } = new SemanticVersion("1.1.1");
+ public static ISemanticVersion MaximumGameVersion { get; } = null;
/// <summary>The path to the game folder.</summary>
public static string ExecutionPath { get; } = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
@@ -54,7 +54,7 @@ namespace StardewModdingAPI
public static string SavesPath { get; } = Path.Combine(Constants.DataPath, "Saves");
/// <summary>The directory name containing the current save's data (if a save is loaded and the directory exists).</summary>
- public static string SaveFolderName => Constants.SavePathReady ? Constants.GetSaveFolderName() : "";
+ public static string SaveFolderName => Constants.IsSaveLoaded ? Constants.GetSaveFolderName() : "";
/// <summary>The directory path containing the current save's data (if a save is loaded and the directory exists).</summary>
public static string CurrentSavePath => Constants.SavePathReady ? Path.Combine(Constants.SavesPath, Constants.GetSaveFolderName()) : "";
@@ -146,6 +146,9 @@ namespace StardewModdingAPI
/****
** Finders throw an exception when incompatible code is found.
****/
+ // changes in Stardew Valley 1.2 (with no rewriters)
+ new FieldFinder("StardewValley.Item", "set_Name"),
+
// APIs removed in SMAPI 1.9
new TypeFinder("StardewModdingAPI.Advanced.ConfigFile"),
new TypeFinder("StardewModdingAPI.Advanced.IConfigFile"),
@@ -169,6 +172,14 @@ namespace StardewModdingAPI
// crossplatform
new MethodParentRewriter(typeof(SpriteBatch), typeof(SpriteBatchWrapper), onlyIfPlatformChanged: true),
+ // Stardew Valley 1.2
+ new FieldToPropertyRewriter(typeof(Game1), nameof(Game1.activeClickableMenu)),
+ new FieldToPropertyRewriter(typeof(Game1), nameof(Game1.currentMinigame)),
+ new FieldToPropertyRewriter(typeof(Game1), nameof(Game1.gameMode)),
+ new FieldToPropertyRewriter(typeof(Game1), nameof(Game1.player)),
+ new FieldReplaceRewriter(typeof(Game1), "borderFont", nameof(Game1.smallFont)),
+ new FieldReplaceRewriter(typeof(Game1), "smoothFont", nameof(Game1.smallFont)),
+
// SMAPI 1.9
new TypeReferenceRewriter("StardewModdingAPI.Inheritance.ItemStackChange", typeof(ItemStackChange))
};
diff --git a/src/StardewModdingAPI/Events/ContentEvents.cs b/src/StardewModdingAPI/Events/ContentEvents.cs
index 9418673a..5b4146c5 100644
--- a/src/StardewModdingAPI/Events/ContentEvents.cs
+++ b/src/StardewModdingAPI/Events/ContentEvents.cs
@@ -5,7 +5,6 @@ using StardewModdingAPI.Framework;
namespace StardewModdingAPI.Events
{
/// <summary>Events raised when the game loads content.</summary>
- [Obsolete("This is an undocumented experimental API and may change without warning.")]
public static class ContentEvents
{
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsClickableMenuChanged.cs b/src/StardewModdingAPI/Events/EventArgsClickableMenuChanged.cs
index 708c02e0..2a2aa163 100644
--- a/src/StardewModdingAPI/Events/EventArgsClickableMenuChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsClickableMenuChanged.cs
@@ -10,10 +10,10 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The previous menu.</summary>
- public IClickableMenu NewMenu { get; private set; }
+ public IClickableMenu NewMenu { get; }
/// <summary>The current menu.</summary>
- public IClickableMenu PriorMenu { get; private set; }
+ public IClickableMenu PriorMenu { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsClickableMenuClosed.cs b/src/StardewModdingAPI/Events/EventArgsClickableMenuClosed.cs
index 1a62432f..5e6585f0 100644
--- a/src/StardewModdingAPI/Events/EventArgsClickableMenuClosed.cs
+++ b/src/StardewModdingAPI/Events/EventArgsClickableMenuClosed.cs
@@ -10,7 +10,7 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The menu that was closed.</summary>
- public IClickableMenu PriorMenu { get; private set; }
+ public IClickableMenu PriorMenu { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsCommand.cs b/src/StardewModdingAPI/Events/EventArgsCommand.cs
index bae13694..88a9e5a3 100644
--- a/src/StardewModdingAPI/Events/EventArgsCommand.cs
+++ b/src/StardewModdingAPI/Events/EventArgsCommand.cs
@@ -10,7 +10,7 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The triggered command.</summary>
- public Command Command { get; private set; }
+ public Command Command { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsControllerButtonPressed.cs b/src/StardewModdingAPI/Events/EventArgsControllerButtonPressed.cs
index 87c96678..3243b80b 100644
--- a/src/StardewModdingAPI/Events/EventArgsControllerButtonPressed.cs
+++ b/src/StardewModdingAPI/Events/EventArgsControllerButtonPressed.cs
@@ -11,10 +11,10 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The player who pressed the button.</summary>
- public PlayerIndex PlayerIndex { get; private set; }
+ public PlayerIndex PlayerIndex { get; }
/// <summary>The controller button that was pressed.</summary>
- public Buttons ButtonPressed { get; private set; }
+ public Buttons ButtonPressed { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsControllerButtonReleased.cs b/src/StardewModdingAPI/Events/EventArgsControllerButtonReleased.cs
index cb53b545..e05a080b 100644
--- a/src/StardewModdingAPI/Events/EventArgsControllerButtonReleased.cs
+++ b/src/StardewModdingAPI/Events/EventArgsControllerButtonReleased.cs
@@ -11,10 +11,10 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The player who pressed the button.</summary>
- public PlayerIndex PlayerIndex { get; private set; }
+ public PlayerIndex PlayerIndex { get; }
/// <summary>The controller button that was pressed.</summary>
- public Buttons ButtonReleased { get; private set; }
+ public Buttons ButtonReleased { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsControllerTriggerPressed.cs b/src/StardewModdingAPI/Events/EventArgsControllerTriggerPressed.cs
index 72b73040..a2087733 100644
--- a/src/StardewModdingAPI/Events/EventArgsControllerTriggerPressed.cs
+++ b/src/StardewModdingAPI/Events/EventArgsControllerTriggerPressed.cs
@@ -11,13 +11,13 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The player who pressed the button.</summary>
- public PlayerIndex PlayerIndex { get; private set; }
+ public PlayerIndex PlayerIndex { get; }
/// <summary>The controller button that was pressed.</summary>
- public Buttons ButtonPressed { get; private set; }
+ public Buttons ButtonPressed { get; }
/// <summary>The current trigger value.</summary>
- public float Value { get; private set; }
+ public float Value { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsControllerTriggerReleased.cs b/src/StardewModdingAPI/Events/EventArgsControllerTriggerReleased.cs
index de28a159..d2eecbec 100644
--- a/src/StardewModdingAPI/Events/EventArgsControllerTriggerReleased.cs
+++ b/src/StardewModdingAPI/Events/EventArgsControllerTriggerReleased.cs
@@ -11,13 +11,13 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The player who pressed the button.</summary>
- public PlayerIndex PlayerIndex { get; private set; }
+ public PlayerIndex PlayerIndex { get; }
/// <summary>The controller button that was released.</summary>
- public Buttons ButtonReleased { get; private set; }
+ public Buttons ButtonReleased { get; }
/// <summary>The current trigger value.</summary>
- public float Value { get; private set; }
+ public float Value { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsCurrentLocationChanged.cs b/src/StardewModdingAPI/Events/EventArgsCurrentLocationChanged.cs
index aa0bb377..25d3ebf3 100644
--- a/src/StardewModdingAPI/Events/EventArgsCurrentLocationChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsCurrentLocationChanged.cs
@@ -10,10 +10,10 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The player's current location.</summary>
- public GameLocation NewLocation { get; private set; }
+ public GameLocation NewLocation { get; }
/// <summary>The player's previous location.</summary>
- public GameLocation PriorLocation { get; private set; }
+ public GameLocation PriorLocation { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsGameLocationsChanged.cs b/src/StardewModdingAPI/Events/EventArgsGameLocationsChanged.cs
index c68951ce..fb8c821e 100644
--- a/src/StardewModdingAPI/Events/EventArgsGameLocationsChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsGameLocationsChanged.cs
@@ -11,7 +11,7 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The current list of game locations.</summary>
- public List<GameLocation> NewLocations { get; private set; }
+ public List<GameLocation> NewLocations { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsInventoryChanged.cs b/src/StardewModdingAPI/Events/EventArgsInventoryChanged.cs
index 11cbcedf..1ee02842 100644
--- a/src/StardewModdingAPI/Events/EventArgsInventoryChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsInventoryChanged.cs
@@ -12,16 +12,16 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The player's inventory.</summary>
- public List<Item> Inventory { get; private set; }
+ public List<Item> Inventory { get; }
/// <summary>The added items.</summary>
- public List<ItemStackChange> Added { get; private set; }
+ public List<ItemStackChange> Added { get; }
/// <summary>The removed items.</summary>
- public List<ItemStackChange> Removed { get; private set; }
+ public List<ItemStackChange> Removed { get; }
/// <summary>The items whose stack sizes changed.</summary>
- public List<ItemStackChange> QuantityChanged { get; private set; }
+ public List<ItemStackChange> QuantityChanged { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsKeyPressed.cs b/src/StardewModdingAPI/Events/EventArgsKeyPressed.cs
index 82a593be..d9d81e10 100644
--- a/src/StardewModdingAPI/Events/EventArgsKeyPressed.cs
+++ b/src/StardewModdingAPI/Events/EventArgsKeyPressed.cs
@@ -10,7 +10,7 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The keyboard button that was pressed.</summary>
- public Keys KeyPressed { get; private set; }
+ public Keys KeyPressed { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsKeyboardStateChanged.cs b/src/StardewModdingAPI/Events/EventArgsKeyboardStateChanged.cs
index 2e314731..14e397ce 100644
--- a/src/StardewModdingAPI/Events/EventArgsKeyboardStateChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsKeyboardStateChanged.cs
@@ -10,10 +10,10 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The previous keyboard state.</summary>
- public KeyboardState NewState { get; private set; }
+ public KeyboardState NewState { get; }
/// <summary>The current keyboard state.</summary>
- public KeyboardState PriorState { get; private set; }
+ public KeyboardState PriorState { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsLevelUp.cs b/src/StardewModdingAPI/Events/EventArgsLevelUp.cs
index 826914da..fe6696d4 100644
--- a/src/StardewModdingAPI/Events/EventArgsLevelUp.cs
+++ b/src/StardewModdingAPI/Events/EventArgsLevelUp.cs
@@ -9,10 +9,10 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The player skill that leveled up.</summary>
- public LevelType Type { get; private set; }
+ public LevelType Type { get; }
/// <summary>The new skill level.</summary>
- public int NewLevel { get; private set; }
+ public int NewLevel { get; }
/// <summary>The player skill types.</summary>
public enum LevelType
diff --git a/src/StardewModdingAPI/Events/EventArgsLoadedGameChanged.cs b/src/StardewModdingAPI/Events/EventArgsLoadedGameChanged.cs
index cd7a366f..51d64016 100644
--- a/src/StardewModdingAPI/Events/EventArgsLoadedGameChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsLoadedGameChanged.cs
@@ -9,7 +9,7 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>Whether the save has been loaded. This is always true.</summary>
- public bool LoadedGame { get; private set; }
+ public bool LoadedGame { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsLocationObjectsChanged.cs b/src/StardewModdingAPI/Events/EventArgsLocationObjectsChanged.cs
index f708ab6b..058999e9 100644
--- a/src/StardewModdingAPI/Events/EventArgsLocationObjectsChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsLocationObjectsChanged.cs
@@ -12,7 +12,7 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The current list of objects in the current location.</summary>
- public SerializableDictionary<Vector2, Object> NewObjects { get; private set; }
+ public SerializableDictionary<Vector2, Object> NewObjects { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsMineLevelChanged.cs b/src/StardewModdingAPI/Events/EventArgsMineLevelChanged.cs
index a02921d2..c82fed35 100644
--- a/src/StardewModdingAPI/Events/EventArgsMineLevelChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsMineLevelChanged.cs
@@ -9,10 +9,10 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The previous mine level.</summary>
- public int PreviousMineLevel { get; private set; }
+ public int PreviousMineLevel { get; }
/// <summary>The current mine level.</summary>
- public int CurrentMineLevel { get; private set; }
+ public int CurrentMineLevel { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsMouseStateChanged.cs b/src/StardewModdingAPI/Events/EventArgsMouseStateChanged.cs
index a589e29d..57298164 100644
--- a/src/StardewModdingAPI/Events/EventArgsMouseStateChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsMouseStateChanged.cs
@@ -11,16 +11,16 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The previous mouse state.</summary>
- public MouseState PriorState { get; private set; }
+ public MouseState PriorState { get; }
/// <summary>The current mouse state.</summary>
- public MouseState NewState { get; private set; }
+ public MouseState NewState { get; }
/// <summary>The previous mouse position on the screen adjusted for the zoom level.</summary>
- public Point PriorPosition { get; private set; }
+ public Point PriorPosition { get; }
/// <summary>The current mouse position on the screen adjusted for the zoom level.</summary>
- public Point NewPosition { get; private set; }
+ public Point NewPosition { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsNewDay.cs b/src/StardewModdingAPI/Events/EventArgsNewDay.cs
index 5088cb5c..aba837e4 100644
--- a/src/StardewModdingAPI/Events/EventArgsNewDay.cs
+++ b/src/StardewModdingAPI/Events/EventArgsNewDay.cs
@@ -9,13 +9,13 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The previous day value.</summary>
- public int PreviousDay { get; private set; }
+ public int PreviousDay { get; }
/// <summary>The current day value.</summary>
- public int CurrentDay { get; private set; }
+ public int CurrentDay { get; }
/// <summary>Whether the game just started the transition (<c>true</c>) or finished it (<c>false</c>).</summary>
- public bool IsNewDay { get; private set; }
+ public bool IsNewDay { get; }
/*********
diff --git a/src/StardewModdingAPI/Events/EventArgsStringChanged.cs b/src/StardewModdingAPI/Events/EventArgsStringChanged.cs
index f91951ae..85b6fab5 100644
--- a/src/StardewModdingAPI/Events/EventArgsStringChanged.cs
+++ b/src/StardewModdingAPI/Events/EventArgsStringChanged.cs
@@ -9,10 +9,10 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The previous value.</summary>
- public string NewString { get; private set; }
+ public string NewString { get; }
/// <summary>The current value.</summary>
- public string PriorString { get; private set; }
+ public string PriorString { get; }
/*********
** Public methods
diff --git a/src/StardewModdingAPI/Events/GameEvents.cs b/src/StardewModdingAPI/Events/GameEvents.cs
index 715083b9..029ec1f9 100644
--- a/src/StardewModdingAPI/Events/GameEvents.cs
+++ b/src/StardewModdingAPI/Events/GameEvents.cs
@@ -7,17 +7,29 @@ namespace StardewModdingAPI.Events
public static class GameEvents
{
/*********
+ ** Properties
+ *********/
+ /// <summary>Manages deprecation warnings.</summary>
+ private static DeprecationManager DeprecationManager;
+
+
+ /*********
** Events
*********/
- /// <summary>Raised during launch after configuring XNA or MonoGame. The game window hasn't been opened by this point. Called during <see cref="Microsoft.Xna.Framework.Game.Initialize"/>.</summary>
- public static event EventHandler Initialize;
+ /// <summary>Raised during launch after configuring XNA or MonoGame. The game window hasn't been opened by this point. Called after <see cref="Microsoft.Xna.Framework.Game.Initialize"/>.</summary>
+ internal static event EventHandler InitializeInternal;
- /// <summary>Raised during launch after configuring Stardew Valley, loading it into memory, and opening the game window. The window is still blank by this point.</summary>
- public static event EventHandler GameLoaded;
+ /// <summary>Raised during launch after configuring XNA or MonoGame. The game window hasn't been opened by this point. Called after <see cref="Microsoft.Xna.Framework.Game.Initialize"/>.</summary>
+ [Obsolete("The " + nameof(Mod) + "." + nameof(Mod.Entry) + " method is now called after the " + nameof(GameEvents.Initialize) + " event, so any contained logic can be done directly in " + nameof(Mod.Entry) + ".")]
+ public static event EventHandler Initialize;
/// <summary>Raised before XNA loads or reloads graphics resources. Called during <see cref="Microsoft.Xna.Framework.Game.LoadContent"/>.</summary>
+ [Obsolete("The " + nameof(Mod) + "." + nameof(Mod.Entry) + " method is now called after the " + nameof(GameEvents.LoadContent) + " event, so any contained logic can be done directly in " + nameof(Mod.Entry) + ".")]
public static event EventHandler LoadContent;
+ /// <summary>Raised during launch after configuring Stardew Valley, loading it into memory, and opening the game window. The window is still blank by this point.</summary>
+ public static event EventHandler GameLoaded;
+
/// <summary>Raised during the first game update tick.</summary>
public static event EventHandler FirstUpdateTick;
@@ -46,25 +58,48 @@ namespace StardewModdingAPI.Events
/*********
** Internal methods
*********/
- /// <summary>Raise a <see cref="GameLoaded"/> event.</summary>
- /// <param name="monitor">Encapsulates monitoring and logging.</param>
- internal static void InvokeGameLoaded(IMonitor monitor)
+ /// <summary>Injects types required for backwards compatibility.</summary>
+ /// <param name="deprecationManager">Manages deprecation warnings.</param>
+ internal static void Shim(Deprec