summaryrefslogtreecommitdiff
path: root/src/SMAPI/Framework
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-11-24 13:49:30 -0500
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-11-24 13:49:30 -0500
commita3f21685049cabf2d824c8060dc0b1de47e9449e (patch)
treead9add30e9da2a50e0ea0245f1546b7378f0d282 /src/SMAPI/Framework
parent6521df7b131924835eb797251c1e956fae0d6e13 (diff)
parent277bf082675b98b95bf6184fe3c7a45b969c7ac2 (diff)
downloadSMAPI-a3f21685049cabf2d824c8060dc0b1de47e9449e.tar.gz
SMAPI-a3f21685049cabf2d824c8060dc0b1de47e9449e.tar.bz2
SMAPI-a3f21685049cabf2d824c8060dc0b1de47e9449e.zip
Merge branch 'develop' into stable
Diffstat (limited to 'src/SMAPI/Framework')
-rw-r--r--src/SMAPI/Framework/CommandManager.cs14
-rw-r--r--src/SMAPI/Framework/Content/AssetData.cs10
-rw-r--r--src/SMAPI/Framework/Content/AssetDataForDictionary.cs43
-rw-r--r--src/SMAPI/Framework/Content/AssetDataForImage.cs10
-rw-r--r--src/SMAPI/Framework/Content/AssetDataForObject.cs20
-rw-r--r--src/SMAPI/Framework/Content/AssetInfo.cs22
-rw-r--r--src/SMAPI/Framework/Content/ContentCache.cs30
-rw-r--r--src/SMAPI/Framework/ContentCoordinator.cs65
-rw-r--r--src/SMAPI/Framework/ContentManagers/BaseContentManager.cs168
-rw-r--r--src/SMAPI/Framework/ContentManagers/GameContentManager.cs178
-rw-r--r--src/SMAPI/Framework/ContentManagers/IContentManager.cs36
-rw-r--r--src/SMAPI/Framework/ContentManagers/ModContentManager.cs330
-rw-r--r--src/SMAPI/Framework/ContentPack.cs44
-rw-r--r--src/SMAPI/Framework/CursorPosition.cs8
-rw-r--r--src/SMAPI/Framework/DeprecationManager.cs29
-rw-r--r--src/SMAPI/Framework/Events/EventManager.cs278
-rw-r--r--src/SMAPI/Framework/Events/ManagedEvent.cs105
-rw-r--r--src/SMAPI/Framework/Events/ManagedEventBase.cs93
-rw-r--r--src/SMAPI/Framework/Events/ModEvents.cs6
-rw-r--r--src/SMAPI/Framework/Events/ModGameLoopEvents.cs2
-rw-r--r--src/SMAPI/Framework/Events/ModSpecialisedEvents.cs6
-rw-r--r--src/SMAPI/Framework/GameVersion.cs5
-rw-r--r--src/SMAPI/Framework/IModMetadata.cs20
-rw-r--r--src/SMAPI/Framework/Input/SInputState.cs17
-rw-r--r--src/SMAPI/Framework/InternalExtensions.cs2
-rw-r--r--src/SMAPI/Framework/ModHelpers/ContentHelper.cs229
-rw-r--r--src/SMAPI/Framework/ModHelpers/ContentPackHelper.cs4
-rw-r--r--src/SMAPI/Framework/ModHelpers/DataHelper.cs12
-rw-r--r--src/SMAPI/Framework/ModHelpers/ModHelper.cs75
-rw-r--r--src/SMAPI/Framework/ModHelpers/ModRegistryHelper.cs24
-rw-r--r--src/SMAPI/Framework/ModHelpers/ReflectionHelper.cs2
-rw-r--r--src/SMAPI/Framework/ModHelpers/TranslationHelper.cs87
-rw-r--r--src/SMAPI/Framework/ModLoading/AssemblyLoader.cs32
-rw-r--r--src/SMAPI/Framework/ModLoading/Finders/ReferenceToMemberWithUnexpectedTypeFinder.cs5
-rw-r--r--src/SMAPI/Framework/ModLoading/Finders/TypeFinder.cs2
-rw-r--r--src/SMAPI/Framework/ModLoading/IncompatibleInstructionException.cs23
-rw-r--r--src/SMAPI/Framework/ModLoading/InstructionHandleResult.cs4
-rw-r--r--src/SMAPI/Framework/ModLoading/ModDependencyStatus.cs4
-rw-r--r--src/SMAPI/Framework/ModLoading/ModMetadata.cs37
-rw-r--r--src/SMAPI/Framework/ModLoading/ModResolver.cs29
-rw-r--r--src/SMAPI/Framework/ModLoading/PlatformAssemblyMap.cs2
-rw-r--r--src/SMAPI/Framework/ModLoading/TypeReferenceComparer.cs2
-rw-r--r--src/SMAPI/Framework/ModRegistry.cs6
-rw-r--r--src/SMAPI/Framework/Models/SConfig.cs71
-rw-r--r--src/SMAPI/Framework/Monitor.cs39
-rw-r--r--src/SMAPI/Framework/Networking/MessageType.cs2
-rw-r--r--src/SMAPI/Framework/Networking/SGalaxyNetServer.cs2
-rw-r--r--src/SMAPI/Framework/Networking/SLidgrenServer.cs6
-rw-r--r--src/SMAPI/Framework/Reflection/Reflector.cs2
-rw-r--r--src/SMAPI/Framework/SCore.cs400
-rw-r--r--src/SMAPI/Framework/SGame.cs1198
-rw-r--r--src/SMAPI/Framework/SGameConstructorHack.cs12
-rw-r--r--src/SMAPI/Framework/SMultiplayer.cs60
-rw-r--r--src/SMAPI/Framework/Serialization/ColorConverter.cs (renamed from src/SMAPI/Framework/Serialisation/ColorConverter.cs)8
-rw-r--r--src/SMAPI/Framework/Serialization/PointConverter.cs (renamed from src/SMAPI/Framework/Serialisation/PointConverter.cs)8
-rw-r--r--src/SMAPI/Framework/Serialization/RectangleConverter.cs (renamed from src/SMAPI/Framework/Serialisation/RectangleConverter.cs)8
-rw-r--r--src/SMAPI/Framework/SnapshotDiff.cs43
-rw-r--r--src/SMAPI/Framework/SnapshotListDiff.cs58
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/ComparableListWatcher.cs2
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/ImmutableCollectionWatcher.cs37
-rw-r--r--src/SMAPI/Framework/StateTracking/FieldWatchers/WatcherFactory.cs35
-rw-r--r--src/SMAPI/Framework/StateTracking/LocationTracker.cs5
-rw-r--r--src/SMAPI/Framework/StateTracking/PlayerTracker.cs35
-rw-r--r--src/SMAPI/Framework/StateTracking/Snapshots/LocationSnapshot.cs59
-rw-r--r--src/SMAPI/Framework/StateTracking/Snapshots/PlayerSnapshot.cs53
-rw-r--r--src/SMAPI/Framework/StateTracking/Snapshots/WatcherSnapshot.cs66
-rw-r--r--src/SMAPI/Framework/StateTracking/Snapshots/WorldLocationsSnapshot.cs52
-rw-r--r--src/SMAPI/Framework/StateTracking/WorldLocationsTracker.cs7
-rw-r--r--src/SMAPI/Framework/Translator.cs128
69 files changed, 2227 insertions, 2289 deletions
diff --git a/src/SMAPI/Framework/CommandManager.cs b/src/SMAPI/Framework/CommandManager.cs
index fdaafff1..ceeb6f93 100644
--- a/src/SMAPI/Framework/CommandManager.cs
+++ b/src/SMAPI/Framework/CommandManager.cs
@@ -29,7 +29,7 @@ namespace StardewModdingAPI.Framework
/// <exception cref="ArgumentException">There's already a command with that name.</exception>
public void Add(IModMetadata mod, string name, string documentation, Action<string, string[]> callback, bool allowNullCallback = false)
{
- name = this.GetNormalisedName(name);
+ name = this.GetNormalizedName(name);
// validate format
if (string.IsNullOrWhiteSpace(name))
@@ -52,7 +52,7 @@ namespace StardewModdingAPI.Framework
/// <returns>Returns the matching command, or <c>null</c> if not found.</returns>
public Command Get(string name)
{
- name = this.GetNormalisedName(name);
+ name = this.GetNormalizedName(name);
this.Commands.TryGetValue(name, out Command command);
return command;
}
@@ -84,7 +84,7 @@ namespace StardewModdingAPI.Framework
// parse input
args = this.ParseArgs(input);
- name = this.GetNormalisedName(args[0]);
+ name = this.GetNormalizedName(args[0]);
args = args.Skip(1).ToArray();
// get command
@@ -97,8 +97,8 @@ namespace StardewModdingAPI.Framework
/// <returns>Returns whether a matching command was triggered.</returns>
public bool Trigger(string name, string[] arguments)
{
- // get normalised name
- name = this.GetNormalisedName(name);
+ // get normalized name
+ name = this.GetNormalizedName(name);
if (name == null)
return false;
@@ -140,9 +140,9 @@ namespace StardewModdingAPI.Framework
return args.Where(item => !string.IsNullOrWhiteSpace(item)).ToArray();
}
- /// <summary>Get a normalised command name.</summary>
+ /// <summary>Get a normalized command name.</summary>
/// <param name="name">The command name.</param>
- private string GetNormalisedName(string name)
+ private string GetNormalizedName(string name)
{
name = name?.Trim().ToLower();
return !string.IsNullOrWhiteSpace(name)
diff --git a/src/SMAPI/Framework/Content/AssetData.cs b/src/SMAPI/Framework/Content/AssetData.cs
index 553404d3..cacc6078 100644
--- a/src/SMAPI/Framework/Content/AssetData.cs
+++ b/src/SMAPI/Framework/Content/AssetData.cs
@@ -24,13 +24,13 @@ namespace StardewModdingAPI.Framework.Content
** Public methods
*********/
/// <summary>Construct an instance.</summary>
- /// <param name="locale">The content's locale code, if the content is localised.</param>
- /// <param name="assetName">The normalised asset name being read.</param>
+ /// <param name="locale">The content's locale code, if the content is localized.</param>
+ /// <param name="assetName">The normalized asset name being read.</param>
/// <param name="data">The content data being read.</param>
- /// <param name="getNormalisedPath">Normalises an asset key to match the cache key.</param>
+ /// <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
/// <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
- public AssetData(string locale, string assetName, TValue data, Func<string, string> getNormalisedPath, Action<TValue> onDataReplaced)
- : base(locale, assetName, data.GetType(), getNormalisedPath)
+ public AssetData(string locale, string assetName, TValue data, Func<string, string> getNormalizedPath, Action<TValue> onDataReplaced)
+ : base(locale, assetName, data.GetType(), getNormalizedPath)
{
this.Data = data;
this.OnDataReplaced = onDataReplaced;
diff --git a/src/SMAPI/Framework/Content/AssetDataForDictionary.cs b/src/SMAPI/Framework/Content/AssetDataForDictionary.cs
index 11a2564c..26cbff5a 100644
--- a/src/SMAPI/Framework/Content/AssetDataForDictionary.cs
+++ b/src/SMAPI/Framework/Content/AssetDataForDictionary.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Linq;
namespace StardewModdingAPI.Framework.Content
{
@@ -11,44 +10,12 @@ namespace StardewModdingAPI.Framework.Content
** Public methods
*********/
/// <summary>Construct an instance.</summary>
- /// <param name="locale">The content's locale code, if the content is localised.</param>
- /// <param name="assetName">The normalised asset name being read.</param>
+ /// <param name="locale">The content's locale code, if the content is localized.</param>
+ /// <param name="assetName">The normalized asset name being read.</param>
/// <param name="data">The content data being read.</param>
- /// <param name="getNormalisedPath">Normalises an asset key to match the cache key.</param>
+ /// <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
/// <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
- public AssetDataForDictionary(string locale, string assetName, IDictionary<TKey, TValue> data, Func<string, string> getNormalisedPath, Action<IDictionary<TKey, TValue>> onDataReplaced)
- : base(locale, assetName, data, getNormalisedPath, onDataReplaced) { }
-
-#if !SMAPI_3_0_STRICT
- /// <summary>Add or replace an entry in the dictionary.</summary>
- /// <param name="key">The entry key.</param>
- /// <param name="value">The entry value.</param>
- [Obsolete("Access " + nameof(AssetData<IDictionary<TKey, TValue>>.Data) + "field directly.")]
- public void Set(TKey key, TValue value)
- {
- SCore.DeprecationManager.Warn($"AssetDataForDictionary.{nameof(Set)}", "2.10", DeprecationLevel.PendingRemoval);
- this.Data[key] = value;
- }
-
- /// <summary>Add or replace an entry in the dictionary.</summary>
- /// <param name="key">The entry key.</param>
- /// <param name="value">A callback which accepts the current value and returns the new value.</param>
- [Obsolete("Access " + nameof(AssetData<IDictionary<TKey, TValue>>.Data) + "field directly.")]
- public void Set(TKey key, Func<TValue, TValue> value)
- {
- SCore.DeprecationManager.Warn($"AssetDataForDictionary.{nameof(Set)}", "2.10", DeprecationLevel.PendingRemoval);
- this.Data[key] = value(this.Data[key]);
- }
-
- /// <summary>Dynamically replace values in the dictionary.</summary>
- /// <param name="replacer">A lambda which takes the current key and value for an entry, and returns the new value.</param>
- [Obsolete("Access " + nameof(AssetData<IDictionary<TKey, TValue>>.Data) + "field directly.")]
- public void Set(Func<TKey, TValue, TValue> replacer)
- {
- SCore.DeprecationManager.Warn($"AssetDataForDictionary.{nameof(Set)}", "2.10", DeprecationLevel.PendingRemoval);
- foreach (var pair in this.Data.ToArray())
- this.Data[pair.Key] = replacer(pair.Key, pair.Value);
- }
-#endif
+ public AssetDataForDictionary(string locale, string assetName, IDictionary<TKey, TValue> data, Func<string, string> getNormalizedPath, Action<IDictionary<TKey, TValue>> onDataReplaced)
+ : base(locale, assetName, data, getNormalizedPath, onDataReplaced) { }
}
}
diff --git a/src/SMAPI/Framework/Content/AssetDataForImage.cs b/src/SMAPI/Framework/Content/AssetDataForImage.cs
index f2d21b5e..4ae2ad68 100644
--- a/src/SMAPI/Framework/Content/AssetDataForImage.cs
+++ b/src/SMAPI/Framework/Content/AssetDataForImage.cs
@@ -19,13 +19,13 @@ namespace StardewModdingAPI.Framework.Content
** Public methods
*********/
/// <summary>Construct an instance.</summary>
- /// <param name="locale">The content's locale code, if the content is localised.</param>
- /// <param name="assetName">The normalised asset name being read.</param>
+ /// <param name="locale">The content's locale code, if the content is localized.</param>
+ /// <param name="assetName">The normalized asset name being read.</param>
/// <param name="data">The content data being read.</param>
- /// <param name="getNormalisedPath">Normalises an asset key to match the cache key.</param>
+ /// <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
/// <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
- public AssetDataForImage(string locale, string assetName, Texture2D data, Func<string, string> getNormalisedPath, Action<Texture2D> onDataReplaced)
- : base(locale, assetName, data, getNormalisedPath, onDataReplaced) { }
+ public AssetDataForImage(string locale, string assetName, Texture2D data, Func<string, string> getNormalizedPath, Action<Texture2D> onDataReplaced)
+ : base(locale, assetName, data, getNormalizedPath, onDataReplaced) { }
/// <summary>Overwrite part of the image.</summary>
/// <param name="source">The image to patch into the content.</param>
diff --git a/src/SMAPI/Framework/Content/AssetDataForObject.cs b/src/SMAPI/Framework/Content/AssetDataForObject.cs
index 90f9e2d4..4dbc988c 100644
--- a/src/SMAPI/Framework/Content/AssetDataForObject.cs
+++ b/src/SMAPI/Framework/Content/AssetDataForObject.cs
@@ -11,19 +11,19 @@ namespace StardewModdingAPI.Framework.Content
** Public methods
*********/
/// <summary>Construct an instance.</summary>
- /// <param name="locale">The content's locale code, if the content is localised.</param>
- /// <param name="assetName">The normalised asset name being read.</param>
+ /// <param name="locale">The content's locale code, if the content is localized.</param>
+ /// <param name="assetName">The normalized asset name being read.</param>
/// <param name="data">The content data being read.</param>
- /// <param name="getNormalisedPath">Normalises an asset key to match the cache key.</param>
- public AssetDataForObject(string locale, string assetName, object data, Func<string, string> getNormalisedPath)
- : base(locale, assetName, data, getNormalisedPath, onDataReplaced: null) { }
+ /// <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
+ public AssetDataForObject(string locale, string assetName, object data, Func<string, string> getNormalizedPath)
+ : base(locale, assetName, data, getNormalizedPath, onDataReplaced: null) { }
/// <summary>Construct an instance.</summary>
/// <param name="info">The asset metadata.</param>
/// <param name="data">The content data being read.</param>
- /// <param name="getNormalisedPath">Normalises an asset key to match the cache key.</param>
- public AssetDataForObject(IAssetInfo info, object data, Func<string, string> getNormalisedPath)
- : this(info.Locale, info.AssetName, data, getNormalisedPath) { }
+ /// <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
+ public AssetDataForObject(IAssetInfo info, object data, Func<string, string> getNormalizedPath)
+ : this(info.Locale, info.AssetName, data, getNormalizedPath) { }
/// <summary>Get a helper to manipulate the data as a dictionary.</summary>
/// <typeparam name="TKey">The expected dictionary key.</typeparam>
@@ -31,14 +31,14 @@ namespace StardewModdingAPI.Framework.Content
/// <exception cref="InvalidOperationException">The content being read isn't a dictionary.</exception>
public IAssetDataForDictionary<TKey, TValue> AsDictionary<TKey, TValue>()
{
- return new AssetDataForDictionary<TKey, TValue>(this.Locale, this.AssetName, this.GetData<IDictionary<TKey, TValue>>(), this.GetNormalisedPath, this.ReplaceWith);
+ return new AssetDataForDictionary<TKey, TValue>(this.Locale, this.AssetName, this.GetData<IDictionary<TKey, TValue>>(), this.GetNormalizedPath, this.ReplaceWith);
}
/// <summary>Get a helper to manipulate the data as an image.</summary>
/// <exception cref="InvalidOperationException">The content being read isn't an image.</exception>
public IAssetDataForImage AsImage()
{
- return new AssetDataForImage(this.Locale, this.AssetName, this.GetData<Texture2D>(), this.GetNormalisedPath, this.ReplaceWith);
+ return new AssetDataForImage(this.Locale, this.AssetName, this.GetData<Texture2D>(), this.GetNormalizedPath, this.ReplaceWith);
}
/// <summary>Get the data as a given type.</summary>
diff --git a/src/SMAPI/Framework/Content/AssetInfo.cs b/src/SMAPI/Framework/Content/AssetInfo.cs
index e5211290..9b685e72 100644
--- a/src/SMAPI/Framework/Content/AssetInfo.cs
+++ b/src/SMAPI/Framework/Content/AssetInfo.cs
@@ -9,17 +9,17 @@ namespace StardewModdingAPI.Framework.Content
/*********
** Fields
*********/
- /// <summary>Normalises an asset key to match the cache key.</summary>
- protected readonly Func<string, string> GetNormalisedPath;
+ /// <summary>Normalizes an asset key to match the cache key.</summary>
+ protected readonly Func<string, string> GetNormalizedPath;
/*********
** Accessors
*********/
- /// <summary>The content's locale code, if the content is localised.</summary>
+ /// <summary>The content's locale code, if the content is localized.</summary>
public string Locale { get; }
- /// <summary>The normalised asset name being read. The format may change between platforms; see <see cref="AssetNameEquals"/> to compare with a known path.</summary>
+ /// <summary>The normalized asset name being read. The format may change between platforms; see <see cref="AssetNameEquals"/> to compare with a known path.</summary>
public string AssetName { get; }
/// <summary>The content data type.</summary>
@@ -30,23 +30,23 @@ namespace StardewModdingAPI.Framework.Content
** Public methods
*********/
/// <summary>Construct an instance.</summary>
- /// <param name="locale">The content's locale code, if the content is localised.</param>
- /// <param name="assetName">The normalised asset name being read.</param>
+ /// <param name="locale">The content's locale code, if the content is localized.</param>
+ /// <param name="assetName">The normalized asset name being read.</param>
/// <param name="type">The content type being read.</param>
- /// <param name="getNormalisedPath">Normalises an asset key to match the cache key.</param>
- public AssetInfo(string locale, string assetName, Type type, Func<string, string> getNormalisedPath)
+ /// <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
+ public AssetInfo(string locale, string assetName, Type type, Func<string, string> getNormalizedPath)
{
this.Locale = locale;
this.AssetName = assetName;
this.DataType = type;
- this.GetNormalisedPath = getNormalisedPath;
+ this.GetNormalizedPath = getNormalizedPath;
}
- /// <summary>Get whether the asset name being loaded matches a given name after normalisation.</summary>
+ /// <summary>Get whether the asset name being loaded matches a given name after normalization.</summary>
/// <param name="path">The expected asset path, relative to the game's content folder and without the .xnb extension or locale suffix (like 'Data\ObjectInformation').</param>
public bool AssetNameEquals(string path)
{
- path = this.GetNormalisedPath(path);
+ path = this.GetNormalizedPath(path);
return this.AssetName.Equals(path, StringComparison.InvariantCultureIgnoreCase);
}
diff --git a/src/SMAPI/Framework/Content/ContentCache.cs b/src/SMAPI/Framework/Content/ContentCache.cs
index 55a96ed2..4178b663 100644
--- a/src/SMAPI/Framework/Content/ContentCache.cs
+++ b/src/SMAPI/Framework/Content/ContentCache.cs
@@ -10,7 +10,7 @@ using StardewValley;
namespace StardewModdingAPI.Framework.Content
{
- /// <summary>A low-level wrapper around the content cache which handles reading, writing, and invalidating entries in the cache. This doesn't handle any higher-level logic like localisation, loading content, etc. It assumes all keys passed in are already normalised.</summary>
+ /// <summary>A low-level wrapper around the content cache which handles reading, writing, and invalidating entries in the cache. This doesn't handle any higher-level logic like localization, loading content, etc. It assumes all keys passed in are already normalized.</summary>
internal class ContentCache