Compatibility improvement, bug fix
This commit is contained in:
parent
399eec451f
commit
ffd5fa7832
|
@ -20,7 +20,7 @@ namespace StardewModdingAPI
|
|||
** Public
|
||||
****/
|
||||
/// <summary>SMAPI's current semantic version.</summary>
|
||||
public static ISemanticVersion ApiVersion { get; } = new Toolkit.SemanticVersion("3.4.1");
|
||||
public static ISemanticVersion ApiVersion { get; } = new Toolkit.SemanticVersion("3.4.1.1", allowNonStandard: true);
|
||||
|
||||
/// <summary>The minimum supported version of Stardew Valley.</summary>
|
||||
public static ISemanticVersion MinimumGameVersion { get; } = new GameVersion("1.4.5");
|
||||
|
|
|
@ -92,5 +92,19 @@ namespace StardewModdingAPI.Framework.RewriteFacades
|
|||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
public static void randomizeDebrisWeatherPositions(List<WeatherDebris> debris)
|
||||
{
|
||||
if (debris != null)
|
||||
{
|
||||
using (List<WeatherDebris>.Enumerator enumerator = debris.GetEnumerator())
|
||||
{
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
enumerator.Current.position = Utility.getRandomPositionOnScreen();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
using System.Collections.Generic;
|
||||
using StardewValley;
|
||||
|
||||
namespace StardewModdingAPI.Framework.RewriteFacades
|
||||
{
|
||||
public class SaveGameMethods : SaveGame
|
||||
{
|
||||
public static IEnumerator<int> Save()
|
||||
{
|
||||
return SaveGame.Save(false, false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -273,6 +273,7 @@ namespace StardewModdingAPI.Framework
|
|||
new ScheduleErrorPatch(this.MonitorForGame),
|
||||
new SaveBackupPatch(this.EventManager),
|
||||
new JunimoHarvesterPatch(this.Monitor),
|
||||
new LocationSwitchPatch(this.Monitor),
|
||||
new SpriteFontPatch(this.Monitor)
|
||||
);
|
||||
|
||||
|
|
|
@ -88,6 +88,7 @@ namespace StardewModdingAPI.Metadata
|
|||
yield return new MethodParentRewriter(typeof(NPC), typeof(NPCMethods));
|
||||
yield return new MethodParentRewriter(typeof(Utility), typeof(UtilityMethods));
|
||||
yield return new MethodParentRewriter(typeof(DayTimeMoneyBox), typeof(DayTimeMoneyBoxMethods));
|
||||
yield return new MethodParentRewriter(typeof(SaveGame), typeof(SaveGameMethods));
|
||||
|
||||
//Constructor Rewrites
|
||||
yield return new MethodParentRewriter(typeof(HUDMessage), typeof(HUDMessageMethods));
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Harmony;
|
||||
using StardewModdingAPI.Framework.Patching;
|
||||
using StardewValley;
|
||||
using StardewValley.Characters;
|
||||
|
||||
namespace StardewModdingAPI.Patches
|
||||
{
|
||||
/// <summary>A Harmony patch for <see cref="StardewValley.Game1"/> which detect location switch and add tapToMove if possible.</summary>
|
||||
/// <remarks>Patch methods must be static for Harmony to work correctly. See the Harmony documentation before renaming patch arguments.</remarks>
|
||||
[SuppressMessage("ReSharper", "InconsistentNaming", Justification = "Argument names are defined by Harmony and methods are named for clarity.")]
|
||||
[SuppressMessage("ReSharper", "IdentifierTypo", Justification = "Argument names are defined by Harmony and methods are named for clarity.")]
|
||||
internal class LocationSwitchPatch : IHarmonyPatch
|
||||
{
|
||||
/*********
|
||||
** Fields
|
||||
*********/
|
||||
|
||||
/*********
|
||||
** Fields
|
||||
*********/
|
||||
/// <summary>Writes messages to the console and log file.</summary>
|
||||
private static IMonitor Monitor;
|
||||
|
||||
/*********
|
||||
** Accessors
|
||||
*********/
|
||||
/// <summary>A unique name for this patch.</summary>
|
||||
public string Name => nameof(LocationSwitchPatch);
|
||||
|
||||
|
||||
/*********
|
||||
** Public methods
|
||||
*********/
|
||||
/// <summary>Construct an instance.</summary>
|
||||
/// <param name="monitorForGame">Writes messages to the console and log file on behalf of the game.</param>
|
||||
public LocationSwitchPatch(IMonitor monitor)
|
||||
{
|
||||
Monitor = monitor;
|
||||
}
|
||||
|
||||
/// <summary>Apply the Harmony patch.</summary>
|
||||
/// <param name="harmony">The Harmony instance.</param>
|
||||
public void Apply(HarmonyInstance harmony)
|
||||
{
|
||||
harmony.Patch(
|
||||
original: AccessTools.Property(typeof(Game1), "currentLocation").SetMethod,
|
||||
prefix: new HarmonyMethod(this.GetType(), nameof(LocationSwitchPatch.Before_currentLocation_set))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/*********
|
||||
** Private methods
|
||||
*********/
|
||||
/// <summary>The method to call instead of <see cref="JunimoHarvester.ctor"/>.</summary>
|
||||
/// <param name="__instance">The instance being patched.</param>
|
||||
/// <param name="__originalMethod">The method being wrapped.</param>
|
||||
/// <returns>Returns whether to execute the original method.</returns>
|
||||
private static void Before_currentLocation_set(GameLocation value)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (value.tapToMove == null)
|
||||
{
|
||||
if (value.map != null)
|
||||
{
|
||||
value.tapToMove = new StardewValley.Mobile.TapToMove(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
value.tapToMove = Game1.currentLocation.tapToMove;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LocationSwitchPatch.Monitor.Log($"Failed to add tapToMove for currentLocation {value.Name}:\n{ex.InnerException ?? ex}", LogLevel.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -24,7 +24,7 @@
|
|||
<DebugType>portable</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<DefineConstants>TRACE;DEBUG;ANDROID_TARGET_SAMSUNG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<LangVersion>latest</LangVersion>
|
||||
|
@ -321,6 +321,7 @@
|
|||
<Compile Include="Framework\RewriteFacades\SpriteTextMethods.cs" />
|
||||
<Compile Include="Framework\RewriteFacades\TextBoxMethods.cs" />
|
||||
<Compile Include="Framework\RewriteFacades\UtilityMethods.cs" />
|
||||
<Compile Include="Framework\RewriteFacades\SaveGameMethods.cs" />
|
||||
<Compile Include="Framework\RewriteFacades\WeatherDebrisMethods.cs" />
|
||||
<Compile Include="Framework\SCore.cs" />
|
||||
<Compile Include="Framework\Serialization\ColorConverter.cs" />
|
||||
|
@ -398,6 +399,7 @@
|
|||
<Compile Include="Mod.cs" />
|
||||
<Compile Include="Patches\DialogueErrorPatch.cs" />
|
||||
<Compile Include="Patches\EventErrorPatch.cs" />
|
||||
<Compile Include="Patches\LocationSwitchPatch.cs" />
|
||||
<Compile Include="Patches\SpriteFontPatch.cs" />
|
||||
<Compile Include="Patches\LoadContextPatch.cs" />
|
||||
<Compile Include="Patches\LoadErrorPatch.cs" />
|
||||
|
|
Loading…
Reference in New Issue