summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2018-04-11 21:15:16 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2018-04-11 21:15:16 -0400
commit9c1617c9ee51a0f6b93242fe8fc789336957460c (patch)
treefc1cf736ed0c7c6e8731abf87bfb8d1a17f8746d
parentb9bc1a6d17cafa0a97b46ffecda432cfc2f23b51 (diff)
downloadSMAPI-9c1617c9ee51a0f6b93242fe8fc789336957460c.tar.gz
SMAPI-9c1617c9ee51a0f6b93242fe8fc789336957460c.tar.bz2
SMAPI-9c1617c9ee51a0f6b93242fe8fc789336957460c.zip
drop support for Stardew Valley 1.2 (#453)
-rw-r--r--build/common.targets2
-rw-r--r--src/SMAPI.ModBuildConfig/build/smapi.targets2
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs4
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetColorCommand.cs8
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetNameCommand.cs4
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/DownMineLevelCommand.cs4
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetMineLevelCommand.cs4
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs56
-rw-r--r--src/SMAPI/Constants.cs28
-rw-r--r--src/SMAPI/Events/EventArgsInput.cs6
-rw-r--r--src/SMAPI/Events/EventArgsInventoryChanged.cs12
-rw-r--r--src/SMAPI/Events/EventArgsLocationObjectsChanged.cs18
-rw-r--r--src/SMAPI/Framework/ContentCore.cs83
-rw-r--r--src/SMAPI/Framework/ContentManagerShim.cs8
-rw-r--r--src/SMAPI/Framework/GameVersion.cs8
-rw-r--r--src/SMAPI/Framework/ModHelpers/ReflectionHelper.cs116
-rw-r--r--src/SMAPI/Framework/Reflection/ReflectedField.cs3
-rw-r--r--src/SMAPI/Framework/Reflection/ReflectedMethod.cs3
-rw-r--r--src/SMAPI/Framework/Reflection/ReflectedProperty.cs3
-rw-r--r--src/SMAPI/Framework/SGame.cs711
-rw-r--r--src/SMAPI/IPrivateField.cs30
-rw-r--r--src/SMAPI/IPrivateMethod.cs31
-rw-r--r--src/SMAPI/IPrivateProperty.cs30
-rw-r--r--src/SMAPI/IReflectionHelper.cs69
-rw-r--r--src/SMAPI/Metadata/CoreAssetPropagator.cs47
-rw-r--r--src/SMAPI/Metadata/InstructionMetadata.cs63
-rw-r--r--src/SMAPI/StardewModdingAPI.csproj3
27 files changed, 24 insertions, 1332 deletions
diff --git a/build/common.targets b/build/common.targets
index 6773dbe4..1230ec15 100644
--- a/build/common.targets
+++ b/build/common.targets
@@ -38,7 +38,7 @@
<Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
<Private>False</Private>
</Reference>
- <Reference Include="Netcode" Condition="Exists('$(GamePath)\Netcode.dll')">
+ <Reference Include="Netcode">
<HintPath>$(GamePath)\Netcode.dll</HintPath>
<Private Condition="'$(MSBuildProjectName)' != 'StardewModdingAPI.Tests'">False</Private>
</Reference>
diff --git a/src/SMAPI.ModBuildConfig/build/smapi.targets b/src/SMAPI.ModBuildConfig/build/smapi.targets
index a177840c..78afa7da 100644
--- a/src/SMAPI.ModBuildConfig/build/smapi.targets
+++ b/src/SMAPI.ModBuildConfig/build/smapi.targets
@@ -76,7 +76,7 @@
<Private>false</Private>
<Private Condition="$(ModUnitTests)">true</Private>
</Reference>
- <Reference Include="Netcode" Condition="Exists('$(GamePath)\Netcode.dll')">
+ <Reference Include="Netcode">
<HintPath>$(GamePath)\Netcode.dll</HintPath>
<Private>False</Private>
<Private Condition="$(ModUnitTests)">true</Private>
diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs
index a6f42b98..ff11da1e 100644
--- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs
+++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs
@@ -54,11 +54,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player
// apply quality
if (match.Item is Object obj)
-#if STARDEW_VALLEY_1_3
obj.Quality = quality;
-#else
- obj.quality = quality;
-#endif
else if (match.Item is Tool tool)
tool.UpgradeLevel = quality;
diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetColorCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetColorCommand.cs
index aa4fd105..f0815ef6 100644
--- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetColorCommand.cs
+++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetColorCommand.cs
@@ -36,11 +36,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player
switch (target)
{
case "hair":
-#if STARDEW_VALLEY_1_3
Game1.player.hairstyleColor.Value = color;
-#else
- Game1.player.hairstyleColor = color;
-#endif
monitor.Log("OK, your hair color is updated.", LogLevel.Info);
break;
@@ -50,11 +46,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player
break;
case "pants":
-#if STARDEW_VALLEY_1_3
Game1.player.pantsColor.Value = color;
-#else
- Game1.player.pantsColor = color;
-#endif
monitor.Log("OK, your pants color is updated.", LogLevel.Info);
break;
}
diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetNameCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetNameCommand.cs
index 71e17f71..e8cb0584 100644
--- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetNameCommand.cs
+++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetNameCommand.cs
@@ -39,11 +39,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player
case "farm":
if (!string.IsNullOrWhiteSpace(name))
{
-#if STARDEW_VALLEY_1_3
Game1.player.farmName.Value = args[1];
-#else
- Game1.player.farmName = args[1];
-#endif
monitor.Log($"OK, your farm's name is now {Game1.player.farmName}.", LogLevel.Info);
}
else
diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/DownMineLevelCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/DownMineLevelCommand.cs
index c83c3b07..2cec0fd3 100644
--- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/DownMineLevelCommand.cs
+++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/DownMineLevelCommand.cs
@@ -21,11 +21,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.World
{
int level = (Game1.currentLocation as MineShaft)?.mineLevel ?? 0;
monitor.Log($"OK, warping you to mine level {level + 1}.", LogLevel.Info);
-#if STARDEW_VALLEY_1_3
Game1.enterMine(level + 1);
-#else
- Game1.enterMine(false, level + 1, "");
-#endif
}
}
}
diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetMineLevelCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetMineLevelCommand.cs
index 5947af1a..b4f6d5b3 100644
--- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetMineLevelCommand.cs
+++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetMineLevelCommand.cs
@@ -26,11 +26,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.World
// handle
level = Math.Max(1, level);
monitor.Log($"OK, warping you to mine level {level}.", LogLevel.Info);
-#if STARDEW_VALLEY_1_3
Game1.enterMine(level);
-#else
- Game1.enterMine(true, level, "");
-#endif
}
}
}
diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs
index 9c0981c4..833fddde 100644
--- a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs
+++ b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs
@@ -96,28 +96,16 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
if (item.category == SObject.FruitsCategory)
{
// wine
-#if STARDEW_VALLEY_1_3
- SObject wine =
- new SObject(348, 1)
+ SObject wine = new SObject(348, 1)
{
Name = $"{item.Name} Wine",
Price = item.price * 3
};
wine.preserve.Value = SObject.PreserveType.Wine;
wine.preservedParentSheetIndex.Value = item.parentSheetIndex;
-#else
- SObject wine = new SObject(348, 1)
- {
- name = $"{item.Name} Wine",
- price = item.price * 3,
- preserve = SObject.PreserveType.Wine,
- preservedParentSheetIndex = item.parentSheetIndex
- };
-#endif
yield return new SearchableItem(ItemType.Object, this.CustomIDOffset + id, wine);
// jelly
-#if STARDEW_VALLEY_1_3
SObject jelly = new SObject(344, 1)
{
Name = $"{item.Name} Jelly",
@@ -125,15 +113,6 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
};
jelly.preserve.Value = SObject.PreserveType.Jelly;
jelly.preservedParentSheetIndex.Value = item.parentSheetIndex;
-#else
- SObject jelly = new SObject(344, 1)
- {
- name = $"{item.Name} Jelly",
- price = 50 + item.Price * 2,
- preserve = SObject.PreserveType.Jelly,
- preservedParentSheetIndex = item.parentSheetIndex
- };
-#endif
yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 2 + id, jelly);
}
@@ -141,7 +120,6 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
else if (item.category == SObject.VegetableCategory)
{
// juice
-#if STARDEW_VALLEY_1_3
SObject juice = new SObject(350, 1)
{
Name = $"{item.Name} Juice",
@@ -149,19 +127,9 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
};
juice.preserve.Value = SObject.PreserveType.Juice;
juice.preservedParentSheetIndex.Value = item.parentSheetIndex;
-#else
- SObject juice = new SObject(350, 1)
- {
- name = $"{item.Name} Juice",
- price = (int)(item.price * 2.25d),
- preserve = SObject.PreserveType.Juice,
- preservedParentSheetIndex = item.parentSheetIndex
- };
-#endif
yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 3 + id, juice);
// pickled
-#if STARDEW_VALLEY_1_3
SObject pickled = new SObject(342, 1)
{
Name = $"Pickled {item.Name}",
@@ -169,15 +137,6 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
};
pickled.preserve.Value = SObject.PreserveType.Pickle;
pickled.preservedParentSheetIndex.Value = item.parentSheetIndex;
-#else
- SObject pickled = new SObject(342, 1)
- {
- name = $"Pickled {item.Name}",
- price = 50 + item.Price * 2,
- preserve = SObject.PreserveType.Pickle,
- preservedParentSheetIndex = item.parentSheetIndex
- };
-#endif
yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 4 + id, pickled);
}
@@ -211,7 +170,6 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
// yield honey
if (type != null)
{
-#if STARDEW_VALLEY_1_3
SObject honey = new SObject(Vector2.Zero, 340, item.Name + " Honey", false, true, false, false)
{
Name = "Wild Honey"
@@ -223,18 +181,6 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
honey.Name = $"{item.Name} Honey";
honey.Price += item.Price * 2;
}
-#else
- SObject honey = new SObject(Vector2.Zero, 340, item.Name + " Honey", false, true, false, false)
- {
- name = "Wild Honey",
- honeyType = type
- };
- if (type != SObject.HoneyType.Wild)
- {
- honey.name = $"{item.Name} Honey";
- honey.price += item.price * 2;
- }
-#endif
yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 5 + id, honey);
}
}
diff --git a/src/SMAPI/Constants.cs b/src/SMAPI/Constants.cs
index 1e35c030..e547dfa6 100644
--- a/src/SMAPI/Constants.cs
+++ b/src/SMAPI/Constants.cs
@@ -37,28 +37,13 @@ namespace StardewModdingAPI
** Public
****/
/// <summary>SMAPI's current semantic version.</summary>
- public static ISemanticVersion ApiVersion { get; } =
-#if STARDEW_VALLEY_1_3
- new SemanticVersion($"2.6-alpha.{DateTime.UtcNow:yyyyMMddHHmm}");
-#else
- new SemanticVersion("2.5.5");
-#endif
+ public static ISemanticVersion ApiVersion { get; } = new SemanticVersion($"2.6-alpha.{DateTime.UtcNow:yyyyMMddHHmm}");
/// <summary>The minimum supported version of Stardew Valley.</summary>
- public static ISemanticVersion MinimumGameVersion { get; } =
-#if STARDEW_VALLEY_1_3
- new GameVersion("1.3.0.4");
-#else
- new SemanticVersion("1.2.30");
-#endif
+ public static ISemanticVersion MinimumGameVersion { get; } = new GameVersion("1.3.0.27");
/// <summary>The maximum supported version of Stardew Valley.</summary>
- public static ISemanticVersion MaximumGameVersion { get; } =
-#if STARDEW_VALLEY_1_3
- null;
-#else
- new SemanticVersion("1.2.33");
-#endif
+ public static ISemanticVersion MaximumGameVersion { get; } = null;
/// <summary>The path to the game folder.</summary>
public static string ExecutionPath { get; } = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
@@ -184,12 +169,7 @@ namespace StardewModdingAPI
/// <summary>Get the name of a save directory for the current player.</summary>
private static string GetSaveFolderName()
{
- string prefix =
-#if STARDEW_VALLEY_1_3
- new string(Game1.player.Name.Where(char.IsLetterOrDigit).ToArray());
-#else
- new string(Game1.player.name.Where(char.IsLetterOrDigit).ToArray());
-#endif
+ string prefix = new string(Game1.player.Name.Where(char.IsLetterOrDigit).ToArray());
return $"{prefix}_{Game1.uniqueIDForThisGame}";
}
diff --git a/src/SMAPI/Events/EventArgsInput.cs b/src/SMAPI/Events/EventArgsInput.cs
index 75b9b8cd..b2bd978b 100644
--- a/src/SMAPI/Events/EventArgsInput.cs
+++ b/src/SMAPI/Events/EventArgsInput.cs
@@ -18,12 +18,6 @@ namespace StardewModdingAPI.Events
/// <summary>The current cursor position.</summary>
public ICursorPosition Cursor { get; }
-#if !STARDEW_VALLEY_1_3
- /// <summary>Whether the input is considered a 'click' by the game for enabling action.</summary>
- [Obsolete("Use " + nameof(EventArgsInput.IsActionButton) + " or " + nameof(EventArgsInput.IsUseToolButton) + " instead")] // deprecated in SMAPI 2.1
- public bool IsClick => this.IsActionButton;
-#endif
-
/// <summary>Whether the input should trigger actions on the affected tile.</summary>
public bool IsActionButton { get; }
diff --git a/src/SMAPI/Events/EventArgsInventoryChanged.cs b/src/SMAPI/Events/EventArgsInventoryChanged.cs
index b85ae9db..1fdca834 100644
--- a/src/SMAPI/Events/EventArgsInventoryChanged.cs
+++ b/src/SMAPI/Events/EventArgsInventoryChanged.cs
@@ -12,11 +12,7 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The player's inventory.</summary>
-#if STARDEW_VALLEY_1_3
public IList<Item> Inventory { get; }
-#else
- public List<Item> Inventory { get; }
-#endif
/// <summary>The added items.</summary>
public List<ItemStackChange> Added { get; }
@@ -34,13 +30,7 @@ namespace StardewModdingAPI.Events
/// <summary>Construct an instance.</summary>
/// <param name="inventory">The player's inventory.</param>
/// <param name="changedItems">The inventory changes.</param>
- public EventArgsInventoryChanged(
-#if STARDEW_VALLEY_1_3
- IList<Item> inventory,
-#else
- List<Item> inventory,
-#endif
- List<ItemStackChange> changedItems)
+ public EventArgsInventoryChanged(IList<Item> inventory, List<ItemStackChange> changedItems)
{
this.Inventory = inventory;
this.Added = changedItems.Where(n => n.ChangeType == ChangeType.Added).ToList();
diff --git a/src/SMAPI/Events/EventArgsLocationObjectsChanged.cs b/src/SMAPI/Events/EventArgsLocationObjectsChanged.cs
index 180e9d78..de6bd365 100644
--- a/src/SMAPI/Events/EventArgsLocationObjectsChanged.cs
+++ b/src/SMAPI/Events/EventArgsLocationObjectsChanged.cs
@@ -1,11 +1,7 @@
using System;
-using Microsoft.Xna.Framework;
-#if STARDEW_VALLEY_1_3
using System.Collections.Generic;
+using Microsoft.Xna.Framework;
using Netcode;
-#else
-using StardewValley;
-#endif
using Object = StardewValley.Object;
namespace StardewModdingAPI.Events
@@ -17,11 +13,7 @@ namespace StardewModdingAPI.Events
** Accessors
*********/
/// <summary>The current list of objects in the current location.</summary>
-#if STARDEW_VALLEY_1_3
public IDictionary<Vector2, NetRef<Object>> NewObjects { get; }
-#else
- public SerializableDictionary<Vector2, Object> NewObjects { get; }
-#endif
/*********
@@ -29,13 +21,7 @@ namespace StardewModdingAPI.Events
*********/
/// <summary>Construct an instance.</summary>
/// <param name="newObjects">The current list of objects in the current location.</param>
- public EventArgsLocationObjectsChanged(
-#if STARDEW_VALLEY_1_3
- IDictionary<Vector2, NetRef<Object>> newObjects
-#else
- SerializableDictionary<Vector2, Object> newObjects
-#endif
- )
+ public EventArgsLocationObjectsChanged(IDictionary<Vector2, NetRef<Object>> newObjects)
{
this.NewObjects = newObjects;
}
diff --git a/src/SMAPI/Framework/ContentCore.cs b/src/SMAPI/Framework/ContentCore.cs
index 43357553..9da18481 100644
--- a/src/SMAPI/Framework/ContentCore.cs
+++ b/src/SMAPI/Framework/ContentCore.cs
@@ -44,10 +44,8 @@ namespace StardewModdingAPI.Framework
/// <summary>The underlying asset cache.</summary>
private readonly ContentCache Cache;
-#if STARDEW_VALLEY_1_3
/// <summary>A lookup which indicates whether the asset is localisable (i.e. the filename contains the locale), if previously loaded.</summary>
private readonly IDictionary<string, bool> IsLocalisableLookup;
-#endif
/// <summary>The locale codes used in asset keys indexed by enum value.</summary>
private readonly IDictionary<LocalizedContentManager.LanguageCode, string> Locales;
@@ -111,9 +109,7 @@ namespace StardewModdingAPI.Framework
this.CoreAssets = new CoreAssetPropagator(this.NormaliseAssetName, reflection);
this.Locales = this.GetKeyLocales(reflection);
this.LanguageCodes = this.Locales.ToDictionary(p => p.Value, p => p.Key, StringComparer.InvariantCultureIgnoreCase);
-#if STARDEW_VALLEY_1_3
this.IsLocalisableLookup = reflection.GetField<IDictionary<string, bool>>(this.Content, "_localizedAsset").GetValue();
-#endif
}
/// <summary>Get a new content manager which defers loading to the content core.</summary>
@@ -209,11 +205,7 @@ namespace StardewModdingAPI.Framework
/// <param name="language">The language code for which to load content.</param>
/// <exception cref="ArgumentException">The <paramref name="assetName"/> is empty or contains invalid characters.</exception>
/// <exception cref="ContentLoadException">The content asset couldn't be loaded (e.g. because it doesn't exist).</exception>
- public T Load<T>(string assetName, ContentManager instance
-#if STARDEW_VALLEY_1_3
- , LocalizedContentManager.LanguageCode language
-#endif
- )
+ public T Load<T>(string assetName, ContentManager instance, LocalizedContentManager.LanguageCode language)
{
// normalise asset key
this.AssertValidAssetKeyFormat(assetName);
@@ -221,11 +213,7 @@ namespace StardewModdingAPI.Framework
// load game content
if (!assetName.StartsWith(this.ModContentPrefix))
-#if STARDEW_VALLEY_1_3
return this.LoadImpl<T>(assetName, instance, language);
-#else
- return this.LoadImpl<T>(assetName, instance);
-#endif
// load mod content
SContentLoadException GetContentError(string reasonPhrase) => new SContentLoadException($"Failed loading content asset '{assetName}': {reasonPhrase}");
@@ -235,11 +223,7 @@ namespace StardewModdingAPI.Framework
{
// try cache
if (this.IsLoaded(assetName))
-#if STARDEW_VALLEY_1_3
return this.LoadImpl<T>(assetName, instance, language);
-#else
- return this.LoadImpl<T>(assetName, instance);
-#endif
// get file
FileInfo file = this.GetModFile(assetName);
@@ -251,11 +235,7 @@ namespace StardewModdingAPI.Framework
{
// XNB file
case ".xnb":
-#if STARDEW_VALLEY_1_3
return this.LoadImpl<T>(assetName, instance, language);
-#else
- return this.LoadImpl<T>(assetName, instance);
-#endif
// unpacked map
case ".tbin":
@@ -436,10 +416,6 @@ namespace StardewModdingAPI.Framework
/// <param name="reflection">Simplifies access to private game code.</param>
private IDictionary<LocalizedContentManager.LanguageCode, string> GetKeyLocales(Reflector reflection)
{
-#if !STARDEW_VALLEY_1_3
- IReflectedField<LocalizedContentManager.LanguageCode> codeField = reflection.GetField<LocalizedContentManager.LanguageCode>(typeof(LocalizedContentManager), "_currentLangCode");
- LocalizedContentManager.LanguageCode previousCode = codeField.GetValue();
-#endif
string previousOverride = this.Content.LanguageCodeOverride;
try
@@ -448,21 +424,11 @@ namespace StardewModdingAPI.Framework
this.Content.LanguageCodeOverride = null;
// create locale => code map
- IReflectedMethod languageCodeString = reflection
-#if STARDEW_VALLEY_1_3
- .GetMethod(this.Content, "languageCodeString");
-#else
- .GetMethod(this.Content, "languageCode");
-#endif
+ IReflectedMethod languageCodeString = reflection.GetMethod(this.Content, "languageCodeString");
IDictionary<LocalizedContentManager.LanguageCode, string> map = new Dictionary<LocalizedContentManager.LanguageCode, string>();
foreach (LocalizedContentManager.LanguageCode code in Enum.GetValues(typeof(LocalizedContentManager.LanguageCode)))
{
-#if STARDEW_VALLEY_1_3
map[code] = languageCodeString.Invoke<string>(code);
-#else
- codeField.SetValue(code);
- map[code] = languageCodeString.Invoke<string>();
-#endif
}
return map;
@@ -471,10 +437,6 @@ namespace StardewModdingAPI.Framework
{
// restore previous settings
this.Content.LanguageCodeOverride = previousOverride;
-#if !STARDEW_VALLEY_1_3
- codeField.SetValue(previousCode);
-#endif
-
}
}
@@ -520,18 +482,12 @@ namespace StardewModdingAPI.Framework
/// <param name="normalisedAssetName">The normalised asset name.</param>
private bool IsNormalisedKeyLoaded(string normalisedAssetName)
{
-#if STARDEW_VALLEY_1_3
if (!this.IsLocalisableLookup.TryGetValue(normalisedAssetName, out bool localisable))
return false;
return localisable
? this.Cache.ContainsKey($"{normalisedAssetName}.{this.Locales[this.Content.GetCurrentLanguage()]}")
: this.Cache.ContainsKey(normalisedAssetName);
-#else
- return
- this.Cache.ContainsKey(normalisedAssetName)
- || this.Cache.ContainsKey($"{normalisedAssetName}.{this.Locales[this.Content.GetCurrentLanguage()]}"); // translated asset
-#endif
}
/// <summary>Track that a content manager loaded an asset.</summary>
@@ -552,11 +508,7 @@ namespace StardewModdingAPI.Framework
/// <param name="assetName">The asset path relative to the loader root directory, not including the <c>.xnb</c> extension.</param>
/// <param name="instance">The content manager instance for which to load the asset.</param>
/// <param name="language">The language code for which to load content.</param>
- private T LoadImpl<T>(string assetName, ContentManager instance
-#if STARDEW_VALLEY_1_3
- , LocalizedContentManager.LanguageCode language
-#endif
- )
+ private T LoadImpl<T>(string assetName, ContentManager instance, LocalizedContentManager.LanguageCode language)
{
return this.WithWriteLock(() =>
{
@@ -564,13 +516,7 @@ namespace StardewModdingAPI.Framework
if (this.IsNormalisedKeyLoaded(assetName))
{
this.TrackAssetLoader(assetName, instance);
- return this.Content
-
-#if STARDEW_VALLEY_1_3
- .Load<T>(assetName, language);
-#else
- .Load<T>(assetName);
-#endif
+ return this.Content.Load<T>(assetName, language);
}
// load asset
@@ -579,30 +525,17 @@ namespace StardewModdingAPI.Framework
{
this.Monitor.Log($"Broke loop while loading asset '{assetName}'.", LogLevel.Warn);
this.Monitor.Log($"Bypassing mod loaders for this asset. Stack trace:\n{Environment.StackTrace}", LogLevel.Trace);
- data = this.Content
-#if STARDEW_VALLEY_1_3
- .Load<T>(assetName, language);
-#else
- .Load<T>(assetName);
-#endif
+ data = this.Content.Load<T>(assetName, language);
}
else
{
data = this.AssetsBeingLoaded.Track(assetName, () =>
{
- string locale =
-#if STARDEW_VALLEY_1_3
- this.GetLocale(language);
-#else
- this.GetLocale();
-#endif
+ string locale = this.GetLocale(language);
IAssetInfo info = new AssetInfo(locale, assetName, typeof(T), this.NormaliseAssetName);
- IAssetData asset = this.ApplyLoader<T>(info)
-#if STARDEW_VALLEY_1_3
+ IAssetData asset =
+ this.ApplyLoader<T>(info)
?? new AssetDataForObject(info, this.Content.Load<T>(assetName, language), this.NormaliseAssetName);
-#else
- ?? new AssetDataForObject(info, this.Content.Load<T>(assetName), this.NormaliseAssetName);
-#endif
asset = this.ApplyEditors<T>(info, asset);
return (T)asset.Data;
});
diff --git a/src/SMAPI/Framework/ContentManagerShim.cs b/src/SMAPI/Framework/ContentManagerShim.cs
index 8f88fc2d..2791eb78 100644
--- a/src/SMAPI/Framework/ContentManagerShim.cs
+++ b/src/SMAPI/Framework/ContentManagerShim.cs
@@ -43,14 +43,9 @@ namespace StardewModdingAPI.Framework
/// <param name="assetName">The asset path relative to the loader root directory, not including the <c>.xnb</c> extension.</param>
public override T Load<T>(string assetName)
{
-#if STARDEW_VALLEY_1_3
return this.Load<T>(assetName, LocalizedContentManager.CurrentLanguageCode);
-#else
- return this.ContentCore.Load<T>(assetName, this);
-#endif
}
-#if STARDEW_VALLEY_1_3
/// <summary>Load an asset that has been processed by the content pipeline.</summary>
/// <typeparam name="T">The type of asset to load.</typeparam>
/// <param name="assetName">The asset path relative to the loader root directory, not including the <c>.xnb</c> extension.</param>
@@ -67,7 +62,6 @@ namespace StardewModdingAPI.Framework
{
return this.Load<T>(assetName, LanguageCode.en);
}
-#endif
/// <summary>Inject an asset into the cache.</summary>
/// <typeparam name="T">The type of asset to inject.</typeparam>
@@ -78,13 +72,11 @@ namespace StardewModdingAPI.Framework
this.ContentCore.Inject<T>(assetName, value, this);
}
-#if STARDEW_VALLEY_1_3
/// <summary>Create a new content manager for temporary use.</summary>
public override LocalizedContentManager CreateTemporary()
{
return this.ContentCore.CreateContentManager("(temporary)");
}
-#endif
/*********
diff --git a/src/SMAPI/Framework/GameVersion.cs b/src/SMAPI/Framework/GameVersion.cs
index e5022212..85b2eef6 100644
--- a/src/SMAPI/Framework/GameVersion.cs
+++ b/src/SMAPI/Framework/GameVersion.cs
@@ -49,10 +49,8 @@ namespace StardewModdingAPI.Framework
/// <param name="gameVersion">The game version string.</param>
private static string GetSemanticVersionString(string gameVersion)
{
-#if STARDEW_VALLEY_1_3
- if(gameVersion.StartsWith("1.3.0."))
+ if (gameVersion.StartsWith("1.3.0