summaryrefslogtreecommitdiff
path: root/src/SMAPI.Installer/Framework
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2018-08-11 23:17:36 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2018-08-11 23:17:36 -0400
commit9029633f7f1076415fcb9e76fd3e0e58357ddcec (patch)
tree83289d1155ef23d099e6eb109c10bc6b4c7c0955 /src/SMAPI.Installer/Framework
parentb7907293349e95f84583e682f38e0eb491ac2e5d (diff)
downloadSMAPI-9029633f7f1076415fcb9e76fd3e0e58357ddcec.tar.gz
SMAPI-9029633f7f1076415fcb9e76fd3e0e58357ddcec.tar.bz2
SMAPI-9029633f7f1076415fcb9e76fd3e0e58357ddcec.zip
overhaul installer display (#554)
The installer now validates preconditions earlier when possible, and after each step will reset the text and condense details from previous steps. This way players only see info for the current question to avoid confusion, and it's easier to add new steps.
Diffstat (limited to 'src/SMAPI.Installer/Framework')
-rw-r--r--src/SMAPI.Installer/Framework/InstallerPaths.cs61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/SMAPI.Installer/Framework/InstallerPaths.cs b/src/SMAPI.Installer/Framework/InstallerPaths.cs
new file mode 100644
index 00000000..d212876a
--- /dev/null
+++ b/src/SMAPI.Installer/Framework/InstallerPaths.cs
@@ -0,0 +1,61 @@
+using System.IO;
+
+namespace StardewModdingAPI.Installer.Framework
+{
+ /// <summary>Manages paths for the SMAPI installer.</summary>
+ internal class InstallerPaths
+ {
+ /*********
+ ** Accessors
+ *********/
+ /// <summary>The directory containing the installer files for the current platform.</summary>
+ public DirectoryInfo PackageDir { get; }
+
+ /// <summary>The directory containing the installed game.</summary>
+ public DirectoryInfo GameDir { get; }
+
+ /// <summary>The directory into which to install mods.</summary>
+ public DirectoryInfo ModsDir { get; }
+
+ /// <summary>The full path to the directory containing the installer files for the current platform.</summary>
+ public string PackagePath => this.PackageDir.FullName;
+
+ /// <summary>The full path to the directory containing the installed game.</summary>
+ public string GamePath => this.GameDir.FullName;
+
+ /// <summary>The full path to the directory into which to install mods.</summary>
+ public string ModsPath => this.ModsDir.FullName;
+
+ /// <summary>The full path to the installed SMAPI executable file.</summary>
+ public string ExecutablePath { get; }
+
+ /// <summary>The full path to the vanilla game launcher on Linux/Mac.</summary>
+ public string UnixLauncherPath { get; }
+
+ /// <summary>The full path to the installed SMAPI launcher on Linux/Mac before it's renamed.</summary>
+ public string UnixSmapiLauncherPath { get; }
+
+ /// <summary>The full path to the vanilla game launcher on Linux/Mac after SMAPI is installed.</summary>
+ public string UnixBackupLauncherPath { get; }
+
+
+ /*********
+ ** Public methods
+ *********/
+ /// <summary>Construct an instance.</summary>
+ /// <param name="packageDir">The directory path containing the installer files for the current platform.</param>
+ /// <param name="gameDir">The directory path for the installed game.</param>
+ /// <param name="gameExecutableName">The name of the game's executable file for the current platform.</param>
+ public InstallerPaths(DirectoryInfo packageDir, DirectoryInfo gameDir, string gameExecutableName)
+ {
+ this.PackageDir = packageDir;
+ this.GameDir = gameDir;
+ this.ModsDir = new DirectoryInfo(Path.Combine(gameDir.FullName, "Mods"));
+
+ this.ExecutablePath = Path.Combine(gameDir.FullName, gameExecutableName);
+ this.UnixLauncherPath = Path.Combine(gameDir.FullName, "StardewValley");
+ this.UnixSmapiLauncherPath = Path.Combine(gameDir.FullName, "StardewModdingAPI");
+ this.UnixBackupLauncherPath = Path.Combine(gameDir.FullName, "StardewValley-original");
+ }
+ }
+}