minor cleanup after 1.x removal

This commit is contained in:
Jesse Plamondon-Willard 2017-09-26 01:55:26 -04:00
parent 07382277ea
commit c1a9dc7f7e
6 changed files with 12 additions and 31 deletions

View File

@ -52,8 +52,7 @@ namespace StardewModdingAPI.Framework
public Command Get(string name) public Command Get(string name)
{ {
name = this.GetNormalisedName(name); name = this.GetNormalisedName(name);
Command command; this.Commands.TryGetValue(name, out Command command);
this.Commands.TryGetValue(name, out command);
return command; return command;
} }
@ -92,8 +91,7 @@ namespace StardewModdingAPI.Framework
return false; return false;
// get command // get command
Command command; if (this.Commands.TryGetValue(name, out Command command))
if (this.Commands.TryGetValue(name, out command))
{ {
command.Callback.Invoke(name, arguments); command.Callback.Invoke(name, arguments);
return true; return true;
@ -101,6 +99,7 @@ namespace StardewModdingAPI.Framework
return false; return false;
} }
/********* /*********
** Private methods ** Private methods
*********/ *********/

View File

@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection;
namespace StardewModdingAPI.Framework namespace StardewModdingAPI.Framework
{ {
@ -52,10 +51,6 @@ namespace StardewModdingAPI.Framework
if (!this.MarkWarned(source ?? "<unknown>", nounPhrase, version)) if (!this.MarkWarned(source ?? "<unknown>", nounPhrase, version))
return; return;
// show SMAPI 2.0 meta-warning
if(this.MarkWarned("SMAPI", "SMAPI 2.0 meta-warning", "2.0"))
this.Monitor.Log("Some mods may stop working in SMAPI 2.0 (but they'll work fine for now). Try updating mods with 'deprecated code' warnings; if that doesn't remove the warnings, let the mod authors know about this message or see http://stardewvalleywiki.com/Modding:SMAPI_2.0 for details.", LogLevel.Warn);
// build message // build message
string message = $"{source ?? "An unknown mod"} uses deprecated code ({nounPhrase})."; string message = $"{source ?? "An unknown mod"} uses deprecated code ({nounPhrase}).";
if (source == null) if (source == null)
@ -106,16 +101,5 @@ namespace StardewModdingAPI.Framework
this.LoggedDeprecations.Add(key); this.LoggedDeprecations.Add(key);
return true; return true;
} }
/// <summary>Get whether a type implements the given virtual method.</summary>
/// <param name="subtype">The type to check.</param>
/// <param name="baseType">The base type which declares the virtual method.</param>
/// <param name="name">The method name.</param>
/// <param name="argumentTypes">The expected argument types.</param>
internal bool IsVirtualMethodImplemented(Type subtype, Type baseType, string name, Type[] argumentTypes)
{
MethodInfo method = subtype.GetMethod(nameof(Mod.Entry), argumentTypes);
return method.DeclaringType != baseType;
}
} }
} }

View File

@ -27,7 +27,7 @@ namespace StardewModdingAPI.Framework.Models
[JsonConverter(typeof(SFieldConverter))] [JsonConverter(typeof(SFieldConverter))]
public ISemanticVersion MinimumApiVersion { get; set; } public ISemanticVersion MinimumApiVersion { get; set; }
/// <summary>The name of the DLL in the directory that has the <see cref="Mod.Entry"/> method.</summary> /// <summary>The name of the DLL in the directory that has the <see cref="IMod.Entry"/> method.</summary>
public string EntryDll { get; set; } public string EntryDll { get; set; }
/// <summary>The other mods that must be loaded before this mod.</summary> /// <summary>The other mods that must be loaded before this mod.</summary>

View File

@ -26,7 +26,7 @@ namespace StardewModdingAPI
/// <summary>The unique mod ID.</summary> /// <summary>The unique mod ID.</summary>
string UniqueID { get; } string UniqueID { get; }
/// <summary>The name of the DLL in the directory that has the <see cref="Mod.Entry"/> method.</summary> /// <summary>The name of the DLL in the directory that has the <see cref="IMod.Entry"/> method.</summary>
string EntryDll { get; } string EntryDll { get; }
/// <summary>The other mods that must be loaded before this mod.</summary> /// <summary>The other mods that must be loaded before this mod.</summary>

View File

@ -3,7 +3,7 @@ using System;
namespace StardewModdingAPI namespace StardewModdingAPI
{ {
/// <summary>The base class for a mod.</summary> /// <summary>The base class for a mod.</summary>
public class Mod : IMod, IDisposable public abstract class Mod : IMod, IDisposable
{ {
/********* /*********
** Accessors ** Accessors
@ -23,7 +23,7 @@ namespace StardewModdingAPI
*********/ *********/
/// <summary>The mod entry point, called after the mod is first loaded.</summary> /// <summary>The mod entry point, called after the mod is first loaded.</summary>
/// <param name="helper">Provides simplified APIs for writing mods.</param> /// <param name="helper">Provides simplified APIs for writing mods.</param>
public virtual void Entry(IModHelper helper) { } public abstract void Entry(IModHelper helper);
/// <summary>Release or reset unmanaged resources.</summary> /// <summary>Release or reset unmanaged resources.</summary>
public void Dispose() public void Dispose()

View File

@ -781,8 +781,6 @@ namespace StardewModdingAPI
{ {
IMod mod = metadata.Mod; IMod mod = metadata.Mod;
mod.Entry(mod.Helper); mod.Entry(mod.Helper);
if (!this.DeprecationManager.IsVirtualMethodImplemented(mod.GetType(), typeof(Mod), nameof(Mod.Entry), new[] { typeof(IModHelper) }))
this.Monitor.Log($"{metadata.DisplayName} doesn't implement Entry() and may not work correctly.", LogLevel.Error);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -816,8 +814,8 @@ namespace StardewModdingAPI
} }
// reset cache now if any editors or loaders were added during entry // reset cache now if any editors or loaders were added during entry
IAssetEditor[] editors = loadedMods.SelectMany(p => ((ContentHelper)p.Mod.Helper.Content).AssetEditors).ToArray(); IAssetEditor[] editors = loadedMods.SelectMany(p => p.Mod.Helper.Content.AssetEditors).ToArray();
IAssetLoader[] loaders = loadedMods.SelectMany(p => ((ContentHelper)p.Mod.Helper.Content).AssetLoaders).ToArray(); IAssetLoader[] loaders = loadedMods.SelectMany(p => p.Mod.Helper.Content.AssetLoaders).ToArray();
if (editors.Any() || loaders.Any()) if (editors.Any() || loaders.Any())
{ {
this.Monitor.Log("Invalidating cached assets for new editors & loaders...", LogLevel.Trace); this.Monitor.Log("Invalidating cached assets for new editors & loaders...", LogLevel.Trace);
@ -866,7 +864,7 @@ namespace StardewModdingAPI
case "help": case "help":
if (arguments.Any()) if (arguments.Any())
{ {
Framework.Command result = this.CommandManager.Get(arguments[0]); Command result = this.CommandManager.Get(arguments[0]);
if (result == null) if (result == null)
this.Monitor.Log("There's no command with that name.", LogLevel.Error); this.Monitor.Log("There's no command with that name.", LogLevel.Error);
else else