summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2018-02-24 17:54:31 -0500
committerJesse Plamondon-Willard <github@jplamondonw.com>2018-02-24 17:54:31 -0500
commit414cf5c197b5b59776d3dda914eb15710efb0868 (patch)
tree0393a95194ad78cf4440c68657b0488b7db6d68b
parent5da8b707385b9851ff3f6442de58519125f5c96f (diff)
parentf2e8450706d1971d774f870081deffdb0c6b92eb (diff)
downloadSMAPI-414cf5c197b5b59776d3dda914eb15710efb0868.tar.gz
SMAPI-414cf5c197b5b59776d3dda914eb15710efb0868.tar.bz2
SMAPI-414cf5c197b5b59776d3dda914eb15710efb0868.zip
Merge branch 'develop' into stable
-rw-r--r--build/GlobalAssemblyInfo.cs7
-rw-r--r--build/prepare-install-package.targets3
-rw-r--r--docs/release-notes.md30
-rw-r--r--src/SMAPI.AssemblyRewriters/Properties/AssemblyInfo.cs5
-rw-r--r--src/SMAPI.Installer/InteractiveInstaller.cs9
-rw-r--r--src/SMAPI.Installer/Properties/AssemblyInfo.cs8
-rw-r--r--src/SMAPI.Installer/StardewModdingAPI.Installer.csproj8
-rw-r--r--src/SMAPI.Installer/unix-install.sh21
-rw-r--r--src/SMAPI.Installer/unix-launcher.sh (renamed from src/SMAPI/unix-launcher.sh)0
-rw-r--r--src/SMAPI.ModBuildConfig/Properties/AssemblyInfo.cs5
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs2
-rw-r--r--src/SMAPI.Mods.ConsoleCommands/manifest.json2
-rw-r--r--src/SMAPI.Tests/Core/ModResolverTests.cs51
-rw-r--r--src/SMAPI.Tests/Core/PathUtilitiesTests.cs70
-rw-r--r--src/SMAPI.Tests/Properties/AssemblyInfo.cs6
-rw-r--r--src/SMAPI.Tests/StardewModdingAPI.Tests.csproj1
-rw-r--r--src/SMAPI.Web/Controllers/LogParserController.cs35
-rw-r--r--src/SMAPI.Web/Framework/LogParsing/LogParseException.cs15
-rw-r--r--src/SMAPI.Web/Framework/LogParsing/LogParser.cs245
-rw-r--r--src/SMAPI.Web/Framework/LogParsing/Models/LogLevel.cs24
-rw-r--r--src/SMAPI.Web/Framework/LogParsing/Models/LogMessage.cs24
-rw-r--r--src/SMAPI.Web/Framework/LogParsing/Models/ModInfo.cs27
-rw-r--r--src/SMAPI.Web/Framework/LogParsing/Models/ParsedLog.cs47
-rw-r--r--src/SMAPI.Web/Properties/AssemblyInfo.cs4
-rw-r--r--src/SMAPI.Web/Startup.cs76
-rw-r--r--src/SMAPI.Web/ViewModels/LogParserModel.cs9
-rw-r--r--src/SMAPI.Web/Views/LogParser/Index.cshtml236
-rw-r--r--src/SMAPI.Web/wwwroot/Content/css/log-parser.css331
-rw-r--r--src/SMAPI.Web/wwwroot/Content/js/log-parser.js321
-rw-r--r--src/SMAPI.sln2
-rw-r--r--src/SMAPI/Constants.cs35
-rw-r--r--src/SMAPI/Events/ContentEvents.cs28
-rw-r--r--src/SMAPI/Events/ControlEvents.cs123
-rw-r--r--src/SMAPI/Events/GameEvents.cs110
-rw-r--r--src/SMAPI/Events/GraphicsEvents.cs120
-rw-r--r--src/SMAPI/Events/InputEvents.cs46
-rw-r--r--src/SMAPI/Events/LocationEvents.cs61
-rw-r--r--src/SMAPI/Events/MenuEvents.cs44
-rw-r--r--src/SMAPI/Events/MineEvents.cs29
-rw-r--r--src/SMAPI/Events/PlayerEvents.cs45
-rw-r--r--src/SMAPI/Events/SaveEvents.cs84
-rw-r--r--src/SMAPI/Events/SpecialisedEvents.cs37
-rw-r--r--src/SMAPI/Events/TimeEvents.cs41
-rw-r--r--src/SMAPI/Framework/Content/ContentCache.cs19
-rw-r--r--src/SMAPI/Framework/ContentPack.cs79
-rw-r--r--src/SMAPI/Framework/Events/EventManager.cs249
-rw-r--r--src/SMAPI/Framework/Events/ManagedEvent.cs119
-rw-r--r--src/SMAPI/Framework/Events/ManagedEventBase.cs81
-rw-r--r--src/SMAPI/Framework/IModMetadata.cs22
-rw-r--r--src/SMAPI/Framework/InternalExtensions.cs86
-rw-r--r--src/SMAPI/Framework/ModData/ModDataField.cs82
-rw-r--r--src/SMAPI/Framework/ModData/ModDataFieldKey.cs18
-rw-r--r--src/SMAPI/Framework/ModData/ModDataRecord.cs141
-rw-r--r--src/SMAPI/Framework/ModData/ModDatabase.cs206
-rw-r--r--src/SMAPI/Framework/ModData/ModStatus.cs (renamed from src/SMAPI/Framework/Models/ModStatus.cs)2
-rw-r--r--src/SMAPI/Framework/ModData/ParsedModDataRecord.cs48
-rw-r--r--src/SMAPI/Framework/ModHelpers/ContentHelper.cs3
-rw-r--r--src/SMAPI/Framework/ModHelpers/ModHelper.cs74
-rw-r--r--src/SMAPI/Framework/ModHelpers/ModRegistryHelper.cs10
-rw-r--r--src/SMAPI/Framework/ModLoading/AssemblyLoader.cs5
-rw-r--r--src/SMAPI/Framework/ModLoading/InstructionHandleResult.cs7
-rw-r--r--src/SMAPI/Framework/ModLoading/ModMetadata.cs35
-rw-r--r--src/SMAPI/Framework/ModLoading/ModResolver.cs238
-rw-r--r--src/SMAPI/Framework/ModRegistry.cs17
-rw-r--r--src/SMAPI/Framework/Models/Manifest.cs8
-rw-r--r--src/SMAPI/Framework/Models/ManifestContentPackFor.cs15
-rw-r--r--src/SMAPI/Framework/Models/ModCompatibility.cs55
-rw-r--r--src/SMAPI/Framework/Models/ModDataID.cs85
-rw-r--r--src/SMAPI/Framework/Models/ModDataRecord.cs63
-rw-r--r--src/SMAPI/Framework/Models/SConfig.cs5
-rw-r--r--src/SMAPI/Framework/Reflection/InterfaceProxyBuilder.cs92
-rw-r--r--src/SMAPI/Framework/Reflection/InterfaceProxyFactory.cs58
-rw-r--r--src/SMAPI/Framework/SContentManager.cs36
-rw-r--r--src/SMAPI/Framework/SGame.cs140
-rw-r--r--src/SMAPI/Framework/Serialisation/CrossplatformConverters/ColorConverter.cs8
-rw-r--r--src/SMAPI/Framework/Serialisation/CrossplatformConverters/PointConverter.cs4
-rw-r--r--src/SMAPI/Framework/Serialisation/CrossplatformConverters/RectangleConverter.cs10
-rw-r--r--src/SMAPI/Framework/Serialisation/JsonHelper.cs3
-rw-r--r--src/SMAPI/Framework/Serialisation/SmapiConverters/ManifestContentPackForConverter.cs (renamed from src/SMAPI/Framework/Serialisation/SmapiConverters/ModCompatibilityArrayConverter.cs)19
-rw-r--r--src/SMAPI/Framework/Serialisation/SmapiConverters/ManifestDependencyArrayConverter.cs6
-rw-r--r--src/SMAPI/Framework/Serialisation/SmapiConverters/ModDataIdConverter.cs19
-rw-r--r--src/SMAPI/Framework/Serialisation/SmapiConverters/SemanticVersionConverter.cs8
-rw-r--r--src/SMAPI/Framework/Utilities/PathUtilities.cs62
-rw-r--r--src/SMAPI/IContentPack.cs42
-rw-r--r--src/SMAPI/IManifest.cs5
-rw-r--r--src/SMAPI/IManifestContentPackFor.cs12
-rw-r--r--src/SMAPI/IModHelper.cs23
-rw-r--r--src/SMAPI/Metadata/InstructionMetadata.cs1
-rw-r--r--src/SMAPI/Program.cs178
-rw-r--r--src/SMAPI/Properties/AssemblyInfo.cs6
-rw-r--r--src/SMAPI/StardewModdingAPI.config.json3281
-rw-r--r--src/SMAPI/StardewModdingAPI.csproj26
92 files changed, 4869 insertions, 3369 deletions
diff --git a/build/GlobalAssemblyInfo.cs b/build/GlobalAssemblyInfo.cs
index 79d473e6..93e45e30 100644
--- a/build/GlobalAssemblyInfo.cs
+++ b/build/GlobalAssemblyInfo.cs
@@ -1,6 +1,5 @@
using System.Reflection;
-using System.Runtime.InteropServices;
-[assembly: ComVisible(false)]
-[assembly: AssemblyVersion("2.4.0.0")]
-[assembly: AssemblyFileVersion("2.4.0.0")]
+[assembly: AssemblyProduct("SMAPI")]
+[assembly: AssemblyVersion("2.5.0")]
+[assembly: AssemblyFileVersion("2.5.0")]
diff --git a/build/prepare-install-package.targets b/build/prepare-install-package.targets
index f2a2b23c..fca311f2 100644
--- a/build/prepare-install-package.targets
+++ b/build/prepare-install-package.targets
@@ -20,6 +20,8 @@
<!-- copy installer files -->
<Copy SourceFiles="$(TargetDir)\$(TargetName).exe" DestinationFiles="$(PackagePath)\install.exe" />
<Copy SourceFiles="$(TargetDir)\readme.txt" DestinationFiles="$(PackagePath)\README.txt" />
+ <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(TargetDir)\unix-launcher.sh" DestinationFiles="$(PackageInternalPath)\Mono\StardewModdingAPI" />
+ <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(TargetDir)\unix-install.sh" DestinationFiles="$(PackagePath)\install.sh" />
<!-- copy SMAPI files for Mono -->
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\Mono.Cecil.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
@@ -31,7 +33,6 @@
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.config.json" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Numerics.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Runtime.Caching.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
- <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\unix-launcher.sh" DestinationFiles="$(PackageInternalPath)\Mono\StardewModdingAPI" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\steam_appid.txt" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="@(CompiledMods)" DestinationFolder="$(PackageInternalPath)\Mono\Mods\%(RecursiveDir)" />
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 9c1fbf93..3dee3705 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -1,4 +1,34 @@
# Release notes
+## 2.5
+* For players:
+ * **Added support for [content packs](https://stardewvalleywiki.com/Modding:Content_packs)**.
+ <small>_Content packs are collections of files for a SMAPI mod to load. These can be installed directly under `Mods` like a normal SMAPI mod, get automatic update and compatibility checks, and provide convenient APIs to the mods that read them._</small>
+ * Added mod detection for unhandled errors (so most errors now mention which mod caused them).
+ * Added install scripts for Linux/Mac (no more manual terminal commands!).
+ * Added the missing mod's name and URL to dependency errors.
+ * Fixed uninstall script not reporting when done on Linux/Mac.
+ * Updated compatibility list and enabled update checks for more mods.
+
+* For modders:
+ * Added support for content packs and new APIs to read them.
+ * Added support for `ISemanticVersion` in JSON models.
+ * Added `SpecialisedEvents.UnvalidatedUpdateTick` event for specialised use cases.
+ * Added path normalising to `ReadJsonFile` and `WriteJsonFile` helpers (so no longer need `Path.Combine` with those).
+ * Fixed deadlock in rare cases with asset loaders.
+ * Fixed unhelpful error when a mod exposes a non-public API.
+ * Fixed unhelpful error when a translation file has duplicate keys due to case-insensitivity.
+ * Fixed some JSON field names being case-sensitive.
+
+* For the [log parser][]:
+ * Added support for SMAPI 2.5 content packs.
+ * Reduced download size when viewing a parsed log with repeated errors.
+ * Improved parse error handling.
+ * Fixed 'log started' field showing incorrect date.
+
+* For SMAPI developers:
+ * Overhauled mod DB format to be more concise, reduce the memory footprint, and support versioning/defaulting more fields.
+ * Reimplemented log parser with serverside parsing and vue.js on the frontend.
+
## 2.4
* For players:
* Fixed visual map glitch in rare cases.
diff --git a/src/SMAPI.AssemblyRewriters/Properties/AssemblyInfo.cs b/src/SMAPI.AssemblyRewriters/Properties/AssemblyInfo.cs
index 7cc6804a..f456a30d 100644
--- a/src/SMAPI.AssemblyRewriters/Properties/AssemblyInfo.cs
+++ b/src/SMAPI.AssemblyRewriters/Properties/AssemblyInfo.cs
@@ -1,7 +1,4 @@
using System.Reflection;
-using System.Runtime.InteropServices;
-[assembly: AssemblyTitle("StardewModdingAPI.AssemblyRewriters")]
+[assembly: AssemblyTitle("SMAPI.AssemblyRewriters")]
[assembly: AssemblyDescription("Contains internal SMAPI classes used during assembly rewriting that need to be public for technical reasons, but shouldn't be visible to modders.")]
-[assembly: AssemblyProduct("StardewModdingAPI.AssemblyRewriters")]
-[assembly: Guid("10db0676-9fc1-4771-a2c8-e2519f091e49")]
diff --git a/src/SMAPI.Installer/InteractiveInstaller.cs b/src/SMAPI.Installer/InteractiveInstaller.cs
index 43d31eea..b7e698ad 100644
--- a/src/SMAPI.Installer/InteractiveInstaller.cs
+++ b/src/SMAPI.Installer/InteractiveInstaller.cs
@@ -364,8 +364,13 @@ namespace StardewModdingApi.Installer
else
this.PrintColor("SMAPI is removed! If you configured Steam to launch SMAPI, don't forget to clear your launch options.", ConsoleColor.DarkGreen);
}
- else if (action == ScriptAction.Install)
- this.PrintColor("SMAPI is installed! Launch the game the same way as before to play with mods.", ConsoleColor.DarkGreen);
+ else
+ {
+ if (action == ScriptAction.Install)
+ this.PrintColor("SMAPI is installed! Launch the game the same way as before to play with mods.", ConsoleColor.DarkGreen);
+ else
+ this.PrintColor("SMAPI is removed! Launch the game the same way as before to play without mods.", ConsoleColor.DarkGreen);
+ }
Console.ReadKey();
}
diff --git a/src/SMAPI.Installer/Properties/AssemblyInfo.cs b/src/SMAPI.Installer/Properties/AssemblyInfo.cs
index 3a6a4648..9838e5a0 100644
--- a/src/SMAPI.Installer/Properties/AssemblyInfo.cs
+++ b/src/SMAPI.Installer/Properties/AssemblyInfo.cs
@@ -1,6 +1,4 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
+using System.Reflection;
-[assembly: AssemblyTitle("StardewModdingAPI.Installer")]
-[assembly: AssemblyProduct("StardewModdingAPI.Installer")]
-[assembly: Guid("443ddf81-6aaf-420a-a610-3459f37e5575")]
+[assembly: AssemblyTitle("SMAPI.Installer")]
+[assembly: AssemblyDescription("The SMAPI installer for players.")]
diff --git a/src/SMAPI.Installer/StardewModdingAPI.Installer.csproj b/src/SMAPI.Installer/StardewModdingAPI.Installer.csproj
index d3a6aa0b..a575e06f 100644
--- a/src/SMAPI.Installer/StardewModdingAPI.Installer.csproj
+++ b/src/SMAPI.Installer/StardewModdingAPI.Installer.csproj
@@ -50,6 +50,14 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
+ <ItemGroup>
+ <None Include="unix-install.sh">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="unix-launcher.sh">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ </ItemGroup>
<Import Project="..\SMAPI.Common\StardewModdingAPI.Common.projitems" Label="Shared" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\..\build\common.targets" />
diff --git a/src/SMAPI.Installer/unix-install.sh b/src/SMAPI.Installer/unix-install.sh
new file mode 100644
index 00000000..a0bd9346
--- /dev/null
+++ b/src/SMAPI.Installer/unix-install.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# Run the SMAPI installer through Mono on Linux or Mac.
+
+# Move to script's directory
+cd "`dirname "$0"`"
+
+# get cross-distro version of POSIX command
+COMMAND=""
+if command -v command >/dev/null 2>&1; then
+ COMMAND="command -v"
+elif type type >/dev/null 2>&1; then
+ COMMAND="type"
+fi
+
+# validate Mono & run installer
+if $COMMAND mono >/dev/null 2>&1; then
+ mono install.exe
+else
+ echo "Oops! Looks like Mono isn't installed. Please install Mono from http://mono-project.com, reboot, and run this installer again."
+ read
+fi
diff --git a/src/SMAPI/unix-launcher.sh b/src/SMAPI.Installer/unix-launcher.sh
index 2542a286..2542a286 100644
--- a/src/SMAPI/unix-launcher.sh
+++ b/src/SMAPI.Installer/unix-launcher.sh
diff --git a/src/SMAPI.ModBuildConfig/Properties/AssemblyInfo.cs b/src/SMAPI.ModBuildConfig/Properties/AssemblyInfo.cs
index 102d4c3d..96bd29f4 100644
--- a/src/SMAPI.ModBuildConfig/Properties/AssemblyInfo.cs
+++ b/src/SMAPI.ModBuildConfig/Properties/AssemblyInfo.cs
@@ -1,9 +1,6 @@
using System.Reflection;
-using System.Runtime.InteropServices;
-[assembly: AssemblyTitle("StardewModdingAPI.ModBuildConfig")]
+[assembly: AssemblyTitle("SMAPI.ModBuildConfig")]
[assembly: AssemblyDescription("")]
-[assembly: Guid("ea4f1e80-743f-4a1d-9757-ae66904a196a")]
-[assembly: ComVisible(false)]
[assembly: AssemblyVersion("2.0.2.0")]
[assembly: AssemblyFileVersion("2.0.2.0")]
diff --git a/src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs b/src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs
index ac15ec72..86653141 100644
--- a/src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs
+++ b/src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs
@@ -1,6 +1,4 @@
using System.Reflection;
-using System.Runtime.InteropServices;
[assembly: AssemblyTitle("SMAPI.Mods.ConsoleCommands")]
[assembly: AssemblyDescription("")]
-[assembly: Guid("76791e28-b1b5-407c-82d6-50c3e5b7e037")]
diff --git a/src/SMAPI.Mods.ConsoleCommands/manifest.json b/src/SMAPI.Mods.ConsoleCommands/manifest.json
index fc5ce35d..b852f686 100644
--- a/src/SMAPI.Mods.ConsoleCommands/manifest.json
+++ b/src/SMAPI.Mods.ConsoleCommands/manifest.json
@@ -1,7 +1,7 @@
{
"Name": "Console Commands",