diff options
Diffstat (limited to 'src')
6 files changed, 48 insertions, 5 deletions
diff --git a/src/StardewModdingAPI.Installer/StardewModdingAPI.Installer.csproj b/src/StardewModdingAPI.Installer/StardewModdingAPI.Installer.csproj index e5271e96..4242cb94 100644 --- a/src/StardewModdingAPI.Installer/StardewModdingAPI.Installer.csproj +++ b/src/StardewModdingAPI.Installer/StardewModdingAPI.Installer.csproj @@ -51,7 +51,7 @@ <!-- package files --> <Target Name="AfterBuild"> <PropertyGroup> - <CompiledInstallerPath>$(SolutionDir)\..\bin\$(Configuration)\~Package</CompiledInstallerPath> + <CompiledInstallerPath>$(SolutionDir)\..\bin\Packaged</CompiledInstallerPath> <CompiledSmapiPath>$(SolutionDir)\..\bin\$(Configuration)\SMAPI</CompiledSmapiPath> </PropertyGroup> <ItemGroup> @@ -66,6 +66,8 @@ <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\Newtonsoft.Json.dll" DestinationFolder="$(CompiledInstallerPath)\Mono" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.exe" DestinationFolder="$(CompiledInstallerPath)\Mono" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.exe.mdb" DestinationFolder="$(CompiledInstallerPath)\Mono" /> + <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.xml" DestinationFolder="$(CompiledInstallerPath)\Windows" /> + <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI-settings.json" DestinationFolder="$(CompiledInstallerPath)\Windows" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Numerics.dll" DestinationFolder="$(CompiledInstallerPath)\Mono" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\unix-launcher.sh" DestinationFiles="$(CompiledInstallerPath)\Mono\StardewModdingAPI" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\steam_appid.txt" DestinationFolder="$(CompiledInstallerPath)\Mono" /> @@ -74,6 +76,7 @@ <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.exe" DestinationFolder="$(CompiledInstallerPath)\Windows" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.pdb" DestinationFolder="$(CompiledInstallerPath)\Windows" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.xml" DestinationFolder="$(CompiledInstallerPath)\Windows" /> + <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI-settings.json" DestinationFolder="$(CompiledInstallerPath)\Windows" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\steam_appid.txt" DestinationFolder="$(CompiledInstallerPath)\Windows" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="@(CompiledMods)" DestinationFolder="$(CompiledInstallerPath)\Windows\Mods\%(RecursiveDir)" /> </Target> diff --git a/src/StardewModdingAPI/Framework/DeprecationManager.cs b/src/StardewModdingAPI/Framework/DeprecationManager.cs index a3d1ea41..0c5a49f9 100644 --- a/src/StardewModdingAPI/Framework/DeprecationManager.cs +++ b/src/StardewModdingAPI/Framework/DeprecationManager.cs @@ -19,6 +19,13 @@ namespace StardewModdingAPI.Framework /********* + ** Accessors + *********/ + /// <summary>Whether <see cref="DeprecationLevel.Notice"/>-level deprecation messages should be shown in the console.</summary> + public bool SendNoticesToConsole { get; set; } + + + /********* ** Public methods *********/ /// <summary>Register a mod as a possible source of deprecation warnings.</summary> @@ -63,7 +70,10 @@ namespace StardewModdingAPI.Framework switch (severity) { case DeprecationLevel.Notice: - Log.LogToFile(message); + if (this.SendNoticesToConsole) + Log.Debug($"[DEV] {message}"); + else + Log.LogToFile(message); break; case DeprecationLevel.Info: diff --git a/src/StardewModdingAPI/Framework/UserSettings.cs b/src/StardewModdingAPI/Framework/UserSettings.cs new file mode 100644 index 00000000..199d19b3 --- /dev/null +++ b/src/StardewModdingAPI/Framework/UserSettings.cs @@ -0,0 +1,9 @@ +namespace StardewModdingAPI.Framework +{ + /// <summary>Contains user settings from SMAPI's JSON configuration file.</summary> + internal class UserSettings + { + /// <summary>Whether to enable development features.</summary> + public bool DeveloperMode { get; set; } + } +} diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs index e9e357d5..047d74c7 100644 --- a/src/StardewModdingAPI/Program.cs +++ b/src/StardewModdingAPI/Program.cs @@ -8,6 +8,7 @@ using System.Threading; using System.Windows.Forms; #endif using Microsoft.Xna.Framework.Graphics; +using Newtonsoft.Json; using StardewModdingAPI.Events; using StardewModdingAPI.Framework; using StardewModdingAPI.Inheritance; @@ -67,6 +68,18 @@ namespace StardewModdingAPI // set thread culture for consistent log formatting Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB"); + // load user settings + { + string settingsPath = $@"{Constants.ExecutionPath}\{typeof(Program).Assembly.GetName().Name}-settings.json"; + if (File.Exists(settingsPath)) + { + string json = File.ReadAllText(settingsPath); + UserSettings settings = JsonConvert.DeserializeObject<UserSettings>(json); + Program.DeprecationManager.SendNoticesToConsole = settings?.DeveloperMode == true; + } + + } + // hook into & launch the game try { @@ -271,7 +284,7 @@ namespace StardewModdingAPI } // log deprecated fields - if(manifest.UsedAuthourField) + if (manifest.UsedAuthourField) Program.DeprecationManager.Warn(manifest.Name, $"{nameof(Manifest)}.{nameof(Manifest.Authour)}", "1.0", DeprecationLevel.Notice); } catch (Exception ex) diff --git a/src/StardewModdingAPI/StardewModdingAPI-settings.json b/src/StardewModdingAPI/StardewModdingAPI-settings.json new file mode 100644 index 00000000..d27d0141 --- /dev/null +++ b/src/StardewModdingAPI/StardewModdingAPI-settings.json @@ -0,0 +1,4 @@ +{ + /* show all deprecation notices in the console? */ + "DeveloperMode": true +} diff --git a/src/StardewModdingAPI/StardewModdingAPI.csproj b/src/StardewModdingAPI/StardewModdingAPI.csproj index 5540267a..bbb41ee3 100644 --- a/src/StardewModdingAPI/StardewModdingAPI.csproj +++ b/src/StardewModdingAPI/StardewModdingAPI.csproj @@ -59,7 +59,7 @@ <UseVSHostingProcess>true</UseVSHostingProcess> <Optimize>false</Optimize> <OutputPath>$(SolutionDir)\..\bin\Debug\SMAPI</OutputPath> - <DocumentationFile>bin\Debug\StardewModdingAPI.xml</DocumentationFile> + <DocumentationFile>$(SolutionDir)\..\bin\Debug\SMAPI\StardewModdingAPI.xml</DocumentationFile> <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow> <LangVersion>6</LangVersion> </PropertyGroup> @@ -68,7 +68,7 @@ <OutputPath>bin\Release\</OutputPath> <Prefer32Bit>false</Prefer32Bit> <OutputPath>$(SolutionDir)\..\bin\Release\SMAPI</OutputPath> - <DocumentationFile>bin\Release\StardewModdingAPI.xml</DocumentationFile> + <DocumentationFile>$(SolutionDir)\..\bin\Debug\SMAPI\StardewModdingAPI.xml</DocumentationFile> <DefineConstants>TRACE</DefineConstants> <Optimize>true</Optimize> <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow> @@ -200,6 +200,7 @@ <Compile Include="Framework\DeprecationManager.cs" /> <Compile Include="Framework\UpdateHelper.cs" /> <Compile Include="Framework\GitRelease.cs" /> + <Compile Include="Framework\UserSettings.cs" /> <Compile Include="Inheritance\ChangeType.cs" /> <Compile Include="Inheritance\ItemStackChange.cs" /> <Compile Include="Log.cs" /> @@ -220,6 +221,9 @@ <None Include="packages.config"> <SubType>Designer</SubType> </None> + <Content Include="StardewModdingAPI-settings.json"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> <None Include="unix-launcher.sh"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> |