log Stardew64Installer patch version if applicable (#767)

This commit is contained in:
Jesse Plamondon-Willard 2021-04-15 21:17:19 -04:00
parent bca1e63c3e
commit f961a376ee
No known key found for this signature in database
GPG Key ID: CF8B1456B3E29F49
1 changed files with 28 additions and 9 deletions

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using StardewModdingAPI.Framework.Commands; using StardewModdingAPI.Framework.Commands;
@ -11,6 +12,7 @@ using StardewModdingAPI.Framework.ModLoading;
using StardewModdingAPI.Internal.ConsoleWriting; using StardewModdingAPI.Internal.ConsoleWriting;
using StardewModdingAPI.Toolkit.Framework.ModData; using StardewModdingAPI.Toolkit.Framework.ModData;
using StardewModdingAPI.Toolkit.Utilities; using StardewModdingAPI.Toolkit.Utilities;
using StardewValley;
namespace StardewModdingAPI.Framework.Logging namespace StardewModdingAPI.Framework.Logging
{ {
@ -283,16 +285,16 @@ namespace StardewModdingAPI.Framework.Logging
/// <param name="customSettings">The custom SMAPI settings.</param> /// <param name="customSettings">The custom SMAPI settings.</param>
public void LogIntro(string modsPath, IDictionary<string, object> customSettings) public void LogIntro(string modsPath, IDictionary<string, object> customSettings)
{ {
// get platform label // log platform & patches
string platformLabel = EnvironmentUtility.GetFriendlyPlatformName(Constants.Platform); {
if ((Constants.GameFramework == GameFramework.Xna) != (Constants.Platform == Platform.Windows)) this.Monitor.Log($"SMAPI {Constants.ApiVersion} with Stardew Valley {Constants.GameVersion} on {EnvironmentUtility.GetFriendlyPlatformName(Constants.Platform)}", LogLevel.Info);
platformLabel += $" with {Constants.GameFramework}";
#if SMAPI_FOR_WINDOWS_64BIT_HACK
platformLabel += " 64-bit hack";
#endif
// init logging string[] patchLabels = this.GetPatchLabels().ToArray();
this.Monitor.Log($"SMAPI {Constants.ApiVersion} with Stardew Valley {Constants.GameVersion} on {platformLabel}", LogLevel.Info); if (patchLabels.Any())
this.Monitor.Log($"Detected custom version: {string.Join(", ", patchLabels)}", LogLevel.Info);
}
// log basic info
this.Monitor.Log($"Mods go here: {modsPath}", LogLevel.Info); this.Monitor.Log($"Mods go here: {modsPath}", LogLevel.Info);
if (modsPath != Constants.DefaultModsPath) if (modsPath != Constants.DefaultModsPath)
this.Monitor.Log("(Using custom --mods-path argument.)"); this.Monitor.Log("(Using custom --mods-path argument.)");
@ -409,6 +411,23 @@ namespace StardewModdingAPI.Framework.Logging
gameMonitor.Log(message, level); gameMonitor.Log(message, level);
} }
/// <summary>Get human-readable labels to log for detected SMAPI and Stardew Valley customizations.</summary>
private IEnumerable<string> GetPatchLabels()
{
// custom game framework
if (EarlyConstants.IsWindows64BitHack)
yield return $"running 64-bit SMAPI with {Constants.GameFramework}";
else if ((Constants.GameFramework == GameFramework.Xna) != (Constants.Platform == Platform.Windows))
yield return $"running {Constants.GameFramework}";
// patched by Stardew64Installer
{
PropertyInfo patcherProperty = typeof(Game1).GetProperty("Stardew64InstallerVersion");
if (patcherProperty != null)
yield return $"patched by Stardew64Installer {patcherProperty.GetValue(null)}";
}
}
/// <summary>Write a summary of mod warnings to the console and log.</summary> /// <summary>Write a summary of mod warnings to the console and log.</summary>
/// <param name="mods">The loaded mods.</param> /// <param name="mods">The loaded mods.</param>
/// <param name="skippedMods">The mods which could not be loaded.</param> /// <param name="skippedMods">The mods which could not be loaded.</param>