normalise inconsistent line endings
This commit is contained in:
parent
c01ffd2331
commit
69bb8178d2
|
@ -0,0 +1,2 @@
|
|||
# normalise line endings
|
||||
* text=auto
|
|
@ -1,72 +1,73 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrainerMod", "TrainerMod\TrainerMod.csproj", "{28480467-1A48-46A7-99F8-236D95225359}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StardewModdingAPI", "StardewModdingAPI\StardewModdingAPI.csproj", "{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "metadata", "metadata", "{86C452BE-D2D8-45B4-B63F-E329EB06CEDA}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\.gitignore = ..\.gitignore
|
||||
..\LICENSE = ..\LICENSE
|
||||
..\README.md = ..\README.md
|
||||
..\release-notes.md = ..\release-notes.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StardewModdingAPI.Installer", "StardewModdingAPI.Installer\StardewModdingAPI.Installer.csproj", "{443DDF81-6AAF-420A-A610-3459F37E5575}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{28480467-1A48-46A7-99F8-236D95225359} = {28480467-1A48-46A7-99F8-236D95225359}
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F} = {F1A573B0-F436-472C-AE29-0B91EA6B9F8F}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|x86.Build.0 = Debug|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|x86.ActiveCfg = Release|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|x86.Build.0 = Release|x86
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrainerMod", "TrainerMod\TrainerMod.csproj", "{28480467-1A48-46A7-99F8-236D95225359}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StardewModdingAPI", "StardewModdingAPI\StardewModdingAPI.csproj", "{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "metadata", "metadata", "{86C452BE-D2D8-45B4-B63F-E329EB06CEDA}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\.gitattributes = ..\.gitattributes
|
||||
..\.gitignore = ..\.gitignore
|
||||
..\LICENSE = ..\LICENSE
|
||||
..\README.md = ..\README.md
|
||||
..\release-notes.md = ..\release-notes.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StardewModdingAPI.Installer", "StardewModdingAPI.Installer\StardewModdingAPI.Installer.csproj", "{443DDF81-6AAF-420A-A610-3459F37E5575}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{28480467-1A48-46A7-99F8-236D95225359} = {28480467-1A48-46A7-99F8-236D95225359}
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F} = {F1A573B0-F436-472C-AE29-0B91EA6B9F8F}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{28480467-1A48-46A7-99F8-236D95225359}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Debug|x86.Build.0 = Debug|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|x86.ActiveCfg = Release|x86
|
||||
{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}.Release|x86.Build.0 = Release|x86
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{443DDF81-6AAF-420A-A610-3459F37E5575}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
using StardewValley;
|
||||
|
||||
namespace StardewModdingAPI.Inheritance
|
||||
{
|
||||
public class ItemStackChange
|
||||
{
|
||||
public Item Item { get; set; }
|
||||
public int StackChange { get; set; }
|
||||
public ChangeType ChangeType { get; set; }
|
||||
}
|
||||
using StardewValley;
|
||||
|
||||
namespace StardewModdingAPI.Inheritance
|
||||
{
|
||||
public class ItemStackChange
|
||||
{
|
||||
public Item Item { get; set; }
|
||||
public int StackChange { get; set; }
|
||||
public ChangeType ChangeType { get; set; }
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,370 +1,370 @@
|
|||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
#if SMAPI_FOR_WINDOWS
|
||||
using System.Windows.Forms;
|
||||
#endif
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using StardewModdingAPI.Events;
|
||||
using StardewModdingAPI.Framework;
|
||||
using StardewModdingAPI.Inheritance;
|
||||
using StardewValley;
|
||||
|
||||
namespace StardewModdingAPI
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
/// <summary>The full path to the Stardew Valley executable.</summary>
|
||||
private static readonly string GameExecutablePath = File.Exists(Path.Combine(Constants.ExecutionPath, "StardewValley.exe"))
|
||||
? Path.Combine(Constants.ExecutionPath, "StardewValley.exe") // Linux or Mac
|
||||
: Path.Combine(Constants.ExecutionPath, "Stardew Valley.exe"); // Windows
|
||||
|
||||
/// <summary>The full path to the folder containing mods.</summary>
|
||||
private static readonly string ModPath = Path.Combine(Constants.ExecutionPath, "Mods");
|
||||
|
||||
public static SGame gamePtr;
|
||||
public static bool ready;
|
||||
|
||||
public static Assembly StardewAssembly;
|
||||
public static Type StardewProgramType;
|
||||
public static FieldInfo StardewGameInfo;
|
||||
|
||||
public static Thread gameThread;
|
||||
public static Thread consoleInputThread;
|
||||
|
||||
public static Texture2D DebugPixel { get; private set; }
|
||||
|
||||
// ReSharper disable once PossibleNullReferenceException
|
||||
public static int BuildType => (int)StardewProgramType.GetField("buildType", BindingFlags.Public | BindingFlags.Static).GetValue(null);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// <summary>
|
||||
/// Main method holding the API execution
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
|
||||
|
||||
try
|
||||
{
|
||||
Log.AsyncY($"SMAPI {Constants.Version}");
|
||||
Log.AsyncY($"Stardew Valley {Game1.version} on {Environment.OSVersion}");
|
||||
Program.CheckForUpdateAsync();
|
||||
Program.ConfigureUI();
|
||||
Program.CreateDirectories();
|
||||
Program.StartGame();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Catch and display all exceptions.
|
||||
Console.WriteLine(e);
|
||||
Console.ReadKey();
|
||||
Log.AsyncR("Critical error: " + e);
|
||||
}
|
||||
|
||||
Log.AsyncY("The API will now terminate. Press any key to continue...");
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set up the console properties
|
||||
/// </summary>
|
||||
private static void ConfigureUI()
|
||||
{
|
||||
Console.Title = Constants.ConsoleTitle;
|
||||
#if DEBUG
|
||||
Console.Title += " - DEBUG IS NOT FALSE, AUTHOUR NEEDS TO REUPLOAD THIS VERSION";
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>Create and verify the SMAPI directories.</summary>
|
||||
private static void CreateDirectories()
|
||||
{
|
||||
Log.AsyncY("Validating file paths...");
|
||||
VerifyPath(ModPath);
|
||||
VerifyPath(Constants.LogDir);
|
||||
if (!File.Exists(GameExecutablePath))
|
||||
throw new FileNotFoundException($"Could not find executable: {GameExecutablePath}");
|
||||
}
|
||||
|
||||
/// <summary>Asynchronously check for a new version of SMAPI, and print a message to the console if an update is available.</summary>
|
||||
private static void CheckForUpdateAsync()
|
||||
{
|
||||
new Thread(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
GitRelease release = UpdateHelper.GetLatestVersionAsync(Constants.GitHubRepository).Result;
|
||||
Version latestVersion = new Version(release.Tag);
|
||||
if (latestVersion.CompareTo(Constants.Version) > 0)
|
||||
Log.AsyncColour($"You can update SMAPI from version {Constants.Version} to {latestVersion}", ConsoleColor.Magenta);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Debug($"Couldn't check for a new version of SMAPI. This won't affect your game, but you may not be notified of new versions if this keeps happening.\n{ex}");
|
||||
}
|
||||
}).Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load Stardev Valley and control features, and launch the game.
|
||||
/// </summary>
|
||||
private static void StartGame()
|
||||
{
|
||||
// Load in the assembly - ignores security
|
||||
Log.AsyncY("Initializing SDV Assembly...");
|
||||
StardewAssembly = Assembly.UnsafeLoadFrom(GameExecutablePath);
|
||||
StardewProgramType = StardewAssembly.GetType("StardewValley.Program", true);
|
||||
StardewGameInfo = StardewProgramType.GetField("gamePtr");
|
||||
|
||||
// Change the game's version
|
||||
Log.AsyncY("Injecting New SDV Version...");
|
||||
Game1.version += $"-Z_MODDED | SMAPI {Constants.Version}";
|
||||
|
||||
// add error interceptors
|
||||
#if SMAPI_FOR_WINDOWS
|
||||
Application.ThreadException += Log.Application_ThreadException;
|
||||
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
||||
#endif
|
||||
AppDomain.CurrentDomain.UnhandledException += Log.CurrentDomain_UnhandledException;
|
||||
|
||||
// initialise game
|
||||
try
|
||||
{
|
||||
Log.AsyncY("Initializing SDV...");
|
||||
gamePtr = new SGame();
|
||||
|
||||
// hook events
|
||||
gamePtr.Exiting += (sender, e) => ready = false;
|
||||
gamePtr.Window.ClientSizeChanged += GraphicsEvents.InvokeResize;
|
||||
|
||||
// patch graphics
|
||||
Log.AsyncY("Patching SDV Graphics Profile...");
|
||||
Game1.graphics.GraphicsProfile = GraphicsProfile.HiDef;
|
||||
|
||||
// load mods
|
||||
LoadMods();
|
||||
|
||||
// initialise
|
||||
StardewGameInfo.SetValue(StardewProgramType, gamePtr);
|
||||
Log.AsyncY("Applying Final SDV Tweaks...");
|
||||
gamePtr.IsMouseVisible = false;
|
||||
gamePtr.Window.Title = "Stardew Valley - Version " + Game1.version;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR("Game failed to initialise: " + ex);
|
||||
return;
|
||||
}
|
||||
|
||||
// initialise after game launches
|
||||
new Thread(() =>
|
||||
{
|
||||
// Wait for the game to load up
|
||||
while (!ready) Thread.Sleep(1000);
|
||||
|
||||
// Create definition to listen for input
|
||||
Log.AsyncY("Initializing Console Input Thread...");
|
||||
consoleInputThread = new Thread(ConsoleInputThread);
|
||||
|
||||
// The only command in the API (at least it should be, for now)
|
||||
Command.RegisterCommand("help", "Lists all commands | 'help <cmd>' returns command description").CommandFired += help_CommandFired;
|
||||
|
||||
// Subscribe to events
|
||||
ControlEvents.KeyPressed += Events_KeyPressed;
|
||||
GameEvents.LoadContent += Events_LoadContent;
|
||||
|
||||
// Game's in memory now, send the event
|
||||
Log.AsyncY("Game Loaded");
|
||||
GameEvents.InvokeGameLoaded();
|
||||
|
||||
// Listen for command line input
|
||||
Log.AsyncY("Type 'help' for help, or 'help <cmd>' for a command's usage");
|
||||
consoleInputThread.Start();
|
||||
while (ready)
|
||||
Thread.Sleep(1000 / 10); // Check if the game is still running 10 times a second
|
||||
|
||||
// Abort the thread, we're closing
|
||||
if (consoleInputThread != null && consoleInputThread.ThreadState == ThreadState.Running)
|
||||
consoleInputThread.Abort();
|
||||
|
||||
Log.AsyncY("Game Execution Finished");
|
||||
Log.AsyncY("Shutting Down...");
|
||||
Thread.Sleep(100);
|
||||
Environment.Exit(0);
|
||||
}).Start();
|
||||
|
||||
// Start game loop
|
||||
Log.AsyncY("Starting SDV...");
|
||||
try
|
||||
{
|
||||
ready = true;
|
||||
gamePtr.Run();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ready = false;
|
||||
Log.AsyncR("Game failed to start: " + ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Create a directory path if it doesn't exist.</summary>
|
||||
/// <param name="path">The directory path.</param>
|
||||
private static void VerifyPath(string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR("Could not create a path: " + path + "\n\n" + ex);
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public static void LoadMods()
|
||||
{
|
||||
Log.AsyncY("LOADING MODS");
|
||||
foreach (string directory in Directory.GetDirectories(ModPath))
|
||||
{
|
||||
foreach (string manifestPath in Directory.GetFiles(directory, "manifest.json"))
|
||||
{
|
||||
if (manifestPath.Contains("StardewInjector"))
|
||||
continue;
|
||||
|
||||
// read manifest
|
||||
Log.AsyncG($"Found Manifest: {manifestPath}");
|
||||
Manifest manifest = new Manifest();
|
||||
try
|
||||
{
|
||||
// read manifest text
|
||||
string json = File.ReadAllText(manifestPath);
|
||||
if (string.IsNullOrEmpty(json))
|
||||
{
|
||||
Log.AsyncR($"Failed to read mod manifest '{manifestPath}'. Manifest is empty!");
|
||||
continue;
|
||||
}
|
||||
|
||||
// deserialise manifest
|
||||
manifest = manifest.InitializeConfig(manifestPath);
|
||||
if (string.IsNullOrEmpty(manifest.EntryDll))
|
||||
{
|
||||
Log.AsyncR($"Failed to read mod manifest '{manifestPath}'. EntryDll is empty!");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR($"Failed to read mod manifest '{manifestPath}'. Exception details:\n" + ex);
|
||||
continue;
|
||||
}
|
||||
|
||||
string targDir = Path.GetDirectoryName(manifestPath);
|
||||
string psDir = Path.Combine(targDir, "psconfigs");
|
||||
Log.AsyncY($"Created psconfigs directory @{psDir}");
|
||||
try
|
||||
{
|
||||
if (manifest.PerSaveConfigs)
|
||||
{
|
||||
if (!Directory.Exists(psDir))
|
||||
{
|
||||
Directory.CreateDirectory(psDir);
|
||||
Log.AsyncY($"Created psconfigs directory @{psDir}");
|
||||
}
|
||||
|
||||
if (!Directory.Exists(psDir))
|
||||
{
|
||||
Log.AsyncR($"Failed to create psconfigs directory '{psDir}'. No exception occured.");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR($"Failed to create psconfigs directory '{targDir}'. Exception details:\n" + ex);
|
||||
continue;
|
||||
}
|
||||
string targDll = string.Empty;
|
||||
try
|
||||
{
|
||||
targDll = Path.Combine(targDir, manifest.EntryDll);
|
||||
if (!File.Exists(targDll))
|
||||
{
|
||||
Log.AsyncR($"Failed to load mod '{manifest.EntryDll}'. File {targDll} does not exist!");
|
||||
continue;
|
||||
}
|
||||
|
||||
Assembly modAssembly = Assembly.UnsafeLoadFrom(targDll);
|
||||
if (modAssembly.DefinedTypes.Count(x => x.BaseType == typeof(Mod)) > 0)
|
||||
{
|
||||
Log.AsyncY("Loading Mod DLL...");
|
||||
TypeInfo tar = modAssembly.DefinedTypes.First(x => x.BaseType == typeof(Mod));
|
||||
Mod modEntry = (Mod)modAssembly.CreateInstance(tar.ToString());
|
||||
if (modEntry != null)
|
||||
{
|
||||
modEntry.PathOnDisk = targDir;
|
||||
modEntry.Manifest = manifest;
|
||||
Log.AsyncG($"LOADED MOD: {modEntry.Manifest.Name} by {modEntry.Manifest.Author} - Version {modEntry.Manifest.Version} | Description: {modEntry.Manifest.Description} (@ {targDll})");
|
||||
Constants.ModsLoaded += 1;
|
||||
modEntry.Entry();
|
||||
}
|
||||
}
|
||||
else
|
||||
Log.AsyncR("Invalid Mod DLL");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR($"Failed to load mod '{targDll}'. Exception details:\n" + ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Log.AsyncG($"LOADED {Constants.ModsLoaded} MODS");
|
||||
Console.Title = Constants.ConsoleTitle;
|
||||
}
|
||||
|
||||
public static void ConsoleInputThread()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Command.CallCommand(Console.ReadLine());
|
||||
}
|
||||
}
|
||||
|
||||
private static void Events_LoadContent(object o, EventArgs e)
|
||||
{
|
||||
Log.AsyncY("Initializing Debug Assets...");
|
||||
DebugPixel = new Texture2D(Game1.graphics.GraphicsDevice, 1, 1);
|
||||
DebugPixel.SetData(new[] { Color.White });
|
||||
}
|
||||
|
||||
private static void Events_KeyPressed(object o, EventArgsKeyPressed e)
|
||||
{
|
||||
}
|
||||
|
||||
private static void help_CommandFired(object o, EventArgsCommand e)
|
||||
{
|
||||
if (e.Command.CalledArgs.Length > 0)
|
||||
{
|
||||
var fnd = Command.FindCommand(e.Command.CalledArgs[0]);
|
||||
if (fnd == null)
|
||||
Log.AsyncR("The command specified could not be found");
|
||||
else
|
||||
{
|
||||
Log.AsyncY(fnd.CommandArgs.Length > 0 ? $"{fnd.CommandName}: {fnd.CommandDesc} - {fnd.CommandArgs.ToSingular()}" : $"{fnd.CommandName}: {fnd.CommandDesc}");
|
||||
}
|
||||
}
|
||||
else
|
||||
Log.AsyncY("Commands: " + Command.RegisteredCommands.Select(x => x.CommandName).ToSingular());
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
#if SMAPI_FOR_WINDOWS
|
||||
using System.Windows.Forms;
|
||||
#endif
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using StardewModdingAPI.Events;
|
||||
using StardewModdingAPI.Framework;
|
||||
using StardewModdingAPI.Inheritance;
|
||||
using StardewValley;
|
||||
|
||||
namespace StardewModdingAPI
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
/// <summary>The full path to the Stardew Valley executable.</summary>
|
||||
private static readonly string GameExecutablePath = File.Exists(Path.Combine(Constants.ExecutionPath, "StardewValley.exe"))
|
||||
? Path.Combine(Constants.ExecutionPath, "StardewValley.exe") // Linux or Mac
|
||||
: Path.Combine(Constants.ExecutionPath, "Stardew Valley.exe"); // Windows
|
||||
|
||||
/// <summary>The full path to the folder containing mods.</summary>
|
||||
private static readonly string ModPath = Path.Combine(Constants.ExecutionPath, "Mods");
|
||||
|
||||
public static SGame gamePtr;
|
||||
public static bool ready;
|
||||
|
||||
public static Assembly StardewAssembly;
|
||||
public static Type StardewProgramType;
|
||||
public static FieldInfo StardewGameInfo;
|
||||
|
||||
public static Thread gameThread;
|
||||
public static Thread consoleInputThread;
|
||||
|
||||
public static Texture2D DebugPixel { get; private set; }
|
||||
|
||||
// ReSharper disable once PossibleNullReferenceException
|
||||
public static int BuildType => (int)StardewProgramType.GetField("buildType", BindingFlags.Public | BindingFlags.Static).GetValue(null);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// <summary>
|
||||
/// Main method holding the API execution
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
|
||||
|
||||
try
|
||||
{
|
||||
Log.AsyncY($"SMAPI {Constants.Version}");
|
||||
Log.AsyncY($"Stardew Valley {Game1.version} on {Environment.OSVersion}");
|
||||
Program.CheckForUpdateAsync();
|
||||
Program.ConfigureUI();
|
||||
Program.CreateDirectories();
|
||||
Program.StartGame();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Catch and display all exceptions.
|
||||
Console.WriteLine(e);
|
||||
Console.ReadKey();
|
||||
Log.AsyncR("Critical error: " + e);
|
||||
}
|
||||
|
||||
Log.AsyncY("The API will now terminate. Press any key to continue...");
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set up the console properties
|
||||
/// </summary>
|
||||
private static void ConfigureUI()
|
||||
{
|
||||
Console.Title = Constants.ConsoleTitle;
|
||||
#if DEBUG
|
||||
Console.Title += " - DEBUG IS NOT FALSE, AUTHOUR NEEDS TO REUPLOAD THIS VERSION";
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>Create and verify the SMAPI directories.</summary>
|
||||
private static void CreateDirectories()
|
||||
{
|
||||
Log.AsyncY("Validating file paths...");
|
||||
VerifyPath(ModPath);
|
||||
VerifyPath(Constants.LogDir);
|
||||
if (!File.Exists(GameExecutablePath))
|
||||
throw new FileNotFoundException($"Could not find executable: {GameExecutablePath}");
|
||||
}
|
||||
|
||||
/// <summary>Asynchronously check for a new version of SMAPI, and print a message to the console if an update is available.</summary>
|
||||
private static void CheckForUpdateAsync()
|
||||
{
|
||||
new Thread(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
GitRelease release = UpdateHelper.GetLatestVersionAsync(Constants.GitHubRepository).Result;
|
||||
Version latestVersion = new Version(release.Tag);
|
||||
if (latestVersion.CompareTo(Constants.Version) > 0)
|
||||
Log.AsyncColour($"You can update SMAPI from version {Constants.Version} to {latestVersion}", ConsoleColor.Magenta);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Debug($"Couldn't check for a new version of SMAPI. This won't affect your game, but you may not be notified of new versions if this keeps happening.\n{ex}");
|
||||
}
|
||||
}).Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load Stardev Valley and control features, and launch the game.
|
||||
/// </summary>
|
||||
private static void StartGame()
|
||||
{
|
||||
// Load in the assembly - ignores security
|
||||
Log.AsyncY("Initializing SDV Assembly...");
|
||||
StardewAssembly = Assembly.UnsafeLoadFrom(GameExecutablePath);
|
||||
StardewProgramType = StardewAssembly.GetType("StardewValley.Program", true);
|
||||
StardewGameInfo = StardewProgramType.GetField("gamePtr");
|
||||
|
||||
// Change the game's version
|
||||
Log.AsyncY("Injecting New SDV Version...");
|
||||
Game1.version += $"-Z_MODDED | SMAPI {Constants.Version}";
|
||||
|
||||
// add error interceptors
|
||||
#if SMAPI_FOR_WINDOWS
|
||||
Application.ThreadException += Log.Application_ThreadException;
|
||||
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
||||
#endif
|
||||
AppDomain.CurrentDomain.UnhandledException += Log.CurrentDomain_UnhandledException;
|
||||
|
||||
// initialise game
|
||||
try
|
||||
{
|
||||
Log.AsyncY("Initializing SDV...");
|
||||
gamePtr = new SGame();
|
||||
|
||||
// hook events
|
||||
gamePtr.Exiting += (sender, e) => ready = false;
|
||||
gamePtr.Window.ClientSizeChanged += GraphicsEvents.InvokeResize;
|
||||
|
||||
// patch graphics
|
||||
Log.AsyncY("Patching SDV Graphics Profile...");
|
||||
Game1.graphics.GraphicsProfile = GraphicsProfile.HiDef;
|
||||
|
||||
// load mods
|
||||
LoadMods();
|
||||
|
||||
// initialise
|
||||
StardewGameInfo.SetValue(StardewProgramType, gamePtr);
|
||||
Log.AsyncY("Applying Final SDV Tweaks...");
|
||||
gamePtr.IsMouseVisible = false;
|
||||
gamePtr.Window.Title = "Stardew Valley - Version " + Game1.version;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR("Game failed to initialise: " + ex);
|
||||
return;
|
||||
}
|
||||
|
||||
// initialise after game launches
|
||||
new Thread(() =>
|
||||
{
|
||||
// Wait for the game to load up
|
||||
while (!ready) Thread.Sleep(1000);
|
||||
|
||||
// Create definition to listen for input
|
||||
Log.AsyncY("Initializing Console Input Thread...");
|
||||
consoleInputThread = new Thread(ConsoleInputThread);
|
||||
|
||||
// The only command in the API (at least it should be, for now)
|
||||
Command.RegisterCommand("help", "Lists all commands | 'help <cmd>' returns command description").CommandFired += help_CommandFired;
|
||||
|
||||
// Subscribe to events
|
||||
ControlEvents.KeyPressed += Events_KeyPressed;
|
||||
GameEvents.LoadContent += Events_LoadContent;
|
||||
|
||||
// Game's in memory now, send the event
|
||||
Log.AsyncY("Game Loaded");
|
||||
GameEvents.InvokeGameLoaded();
|
||||
|
||||
// Listen for command line input
|
||||
Log.AsyncY("Type 'help' for help, or 'help <cmd>' for a command's usage");
|
||||
consoleInputThread.Start();
|
||||
while (ready)
|
||||
Thread.Sleep(1000 / 10); // Check if the game is still running 10 times a second
|
||||
|
||||
// Abort the thread, we're closing
|
||||
if (consoleInputThread != null && consoleInputThread.ThreadState == ThreadState.Running)
|
||||
consoleInputThread.Abort();
|
||||
|
||||
Log.AsyncY("Game Execution Finished");
|
||||
Log.AsyncY("Shutting Down...");
|
||||
Thread.Sleep(100);
|
||||
Environment.Exit(0);
|
||||
}).Start();
|
||||
|
||||
// Start game loop
|
||||
Log.AsyncY("Starting SDV...");
|
||||
try
|
||||
{
|
||||
ready = true;
|
||||
gamePtr.Run();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ready = false;
|
||||
Log.AsyncR("Game failed to start: " + ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Create a directory path if it doesn't exist.</summary>
|
||||
/// <param name="path">The directory path.</param>
|
||||
private static void VerifyPath(string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR("Could not create a path: " + path + "\n\n" + ex);
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public static void LoadMods()
|
||||
{
|
||||
Log.AsyncY("LOADING MODS");
|
||||
foreach (string directory in Directory.GetDirectories(ModPath))
|
||||
{
|
||||
foreach (string manifestPath in Directory.GetFiles(directory, "manifest.json"))
|
||||
{
|
||||
if (manifestPath.Contains("StardewInjector"))
|
||||
continue;
|
||||
|
||||
// read manifest
|
||||
Log.AsyncG($"Found Manifest: {manifestPath}");
|
||||
Manifest manifest = new Manifest();
|
||||
try
|
||||
{
|
||||
// read manifest text
|
||||
string json = File.ReadAllText(manifestPath);
|
||||
if (string.IsNullOrEmpty(json))
|
||||
{
|
||||
Log.AsyncR($"Failed to read mod manifest '{manifestPath}'. Manifest is empty!");
|
||||
continue;
|
||||
}
|
||||
|
||||
// deserialise manifest
|
||||
manifest = manifest.InitializeConfig(manifestPath);
|
||||
if (string.IsNullOrEmpty(manifest.EntryDll))
|
||||
{
|
||||
Log.AsyncR($"Failed to read mod manifest '{manifestPath}'. EntryDll is empty!");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR($"Failed to read mod manifest '{manifestPath}'. Exception details:\n" + ex);
|
||||
continue;
|
||||
}
|
||||
|
||||
string targDir = Path.GetDirectoryName(manifestPath);
|
||||
string psDir = Path.Combine(targDir, "psconfigs");
|
||||
Log.AsyncY($"Created psconfigs directory @{psDir}");
|
||||
try
|
||||
{
|
||||
if (manifest.PerSaveConfigs)
|
||||
{
|
||||
if (!Directory.Exists(psDir))
|
||||
{
|
||||
Directory.CreateDirectory(psDir);
|
||||
Log.AsyncY($"Created psconfigs directory @{psDir}");
|
||||
}
|
||||
|
||||
if (!Directory.Exists(psDir))
|
||||
{
|
||||
Log.AsyncR($"Failed to create psconfigs directory '{psDir}'. No exception occured.");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR($"Failed to create psconfigs directory '{targDir}'. Exception details:\n" + ex);
|
||||
continue;
|
||||
}
|
||||
string targDll = string.Empty;
|
||||
try
|
||||
{
|
||||
targDll = Path.Combine(targDir, manifest.EntryDll);
|
||||
if (!File.Exists(targDll))
|
||||
{
|
||||
Log.AsyncR($"Failed to load mod '{manifest.EntryDll}'. File {targDll} does not exist!");
|
||||
continue;
|
||||
}
|
||||
|
||||
Assembly modAssembly = Assembly.UnsafeLoadFrom(targDll);
|
||||
if (modAssembly.DefinedTypes.Count(x => x.BaseType == typeof(Mod)) > 0)
|
||||
{
|
||||
Log.AsyncY("Loading Mod DLL...");
|
||||
TypeInfo tar = modAssembly.DefinedTypes.First(x => x.BaseType == typeof(Mod));
|
||||
Mod modEntry = (Mod)modAssembly.CreateInstance(tar.ToString());
|
||||
if (modEntry != null)
|
||||
{
|
||||
modEntry.PathOnDisk = targDir;
|
||||
modEntry.Manifest = manifest;
|
||||
Log.AsyncG($"LOADED MOD: {modEntry.Manifest.Name} by {modEntry.Manifest.Author} - Version {modEntry.Manifest.Version} | Description: {modEntry.Manifest.Description} (@ {targDll})");
|
||||
Constants.ModsLoaded += 1;
|
||||
modEntry.Entry();
|
||||
}
|
||||
}
|
||||
else
|
||||
Log.AsyncR("Invalid Mod DLL");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.AsyncR($"Failed to load mod '{targDll}'. Exception details:\n" + ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Log.AsyncG($"LOADED {Constants.ModsLoaded} MODS");
|
||||
Console.Title = Constants.ConsoleTitle;
|
||||
}
|
||||
|
||||
public static void ConsoleInputThread()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Command.CallCommand(Console.ReadLine());
|
||||
}
|
||||
}
|
||||
|
||||
private static void Events_LoadContent(object o, EventArgs e)
|
||||
{
|
||||
Log.AsyncY("Initializing Debug Assets...");
|
||||
DebugPixel = new Texture2D(Game1.graphics.GraphicsDevice, 1, 1);
|
||||
DebugPixel.SetData(new[] { Color.White });
|
||||
}
|
||||
|
||||
private static void Events_KeyPressed(object o, EventArgsKeyPressed e)
|
||||
{
|
||||
}
|
||||
|
||||
private static void help_CommandFired(object o, EventArgsCommand e)
|
||||
{
|
||||
if (e.Command.CalledArgs.Length > 0)
|
||||
{
|
||||
var fnd = Command.FindCommand(e.Command.CalledArgs[0]);
|
||||
if (fnd == null)
|
||||
Log.AsyncR("The command specified could not be found");
|
||||
else
|
||||
{
|
||||
Log.AsyncY(fnd.CommandArgs.Length > 0 ? $"{fnd.CommandName}: {fnd.CommandDesc} - {fnd.CommandArgs.ToSingular()}" : $"{fnd.CommandName}: {fnd.CommandDesc}");
|
||||
}
|
||||
}
|
||||
else
|
||||
Log.AsyncY("Commands: " + Command.RegisteredCommands.Select(x => x.CommandName).ToSingular());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,257 +1,257 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>StardewModdingAPI</RootNamespace>
|
||||
<AssemblyName>StardewModdingAPI</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<TargetFrameworkProfile />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Debug\SMAPI</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Release\SMAPI</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Debug\SMAPI</OutputPath>
|
||||
<DocumentationFile>bin\Debug\StardewModdingAPI.xml</DocumentationFile>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
<LangVersion>6</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Release\SMAPI</OutputPath>
|
||||
<DocumentationFile>bin\Release\StardewModdingAPI.xml</DocumentationFile>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
<LangVersion>6</LangVersion>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>icon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>StardewModdingAPI.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Linux paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/GOG Games/Stardew Valley/game</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/.local/share/Steam/steamapps/common/Stardew Valley</GamePath>
|
||||
<!-- Mac paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS</GamePath>
|
||||
<!-- Windows paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley</GamePath>
|
||||
</PropertyGroup>
|
||||
<Choose>
|
||||
<When Condition="$(OS) == 'Windows_NT'">
|
||||
<PropertyGroup>
|
||||
<DefineConstants>$(DefineConstants);SMAPI_FOR_WINDOWS</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Stardew Valley">
|
||||
<HintPath>$(GamePath)\Stardew Valley.exe</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="xTile, Version=2.0.4.0, Culture=neutral, processorArchitecture=x86">
|
||||
<HintPath>$(GamePath)\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<Otherwise>
|
||||
<PropertyGroup>
|
||||
<DefineConstants>$(DefineConstants);SMAPI_FOR_UNIX</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="MonoGame.Framework">
|
||||
<HintPath>$(GamePath)\MonoGame.Framework.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="StardewValley">
|
||||
<HintPath>$(GamePath)\StardewValley.exe</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="xTile">
|
||||
<HintPath>$(GamePath)\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Numerics">
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" Condition="$(OS) == 'Windows_NT'" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Command.cs" />
|
||||
<Compile Include="Config.cs" />
|
||||
<Compile Include="Constants.cs" />
|
||||
<Compile Include="Events\ControlEvents.cs" />
|
||||
<Compile Include="Events\EventArgsCommand.cs" />
|
||||
<Compile Include="Events\EventArgsClickableMenuChanged.cs" />
|
||||
<Compile Include="Events\EventArgsClickableMenuClosed.cs" />
|
||||
<Compile Include="Events\EventArgsControllerButtonPressed.cs" />
|
||||
<Compile Include="Events\EventArgsControllerButtonReleased.cs" />
|
||||
<Compile Include="Events\EventArgsControllerTriggerPressed.cs" />
|
||||
<Compile Include="Events\EventArgsControllerTriggerReleased.cs" />
|
||||
<Compile Include="Events\EventArgsCurrentLocationChanged.cs" />
|
||||
<Compile Include="Events\EventArgsFarmerChanged.cs" />
|
||||
<Compile Include="Events\EventArgsGameLocationsChanged.cs" />
|
||||
<Compile Include="Events\EventArgsIntChanged.cs" />
|
||||
<Compile Include="Events\EventArgsInventoryChanged.cs" />
|
||||
<Compile Include="Events\EventArgsKeyboardStateChanged.cs" />
|
||||
<Compile Include="Events\EventArgsKeyPressed.cs" />
|
||||
<Compile Include="Events\EventArgsLevelUp.cs" />
|
||||
<Compile Include="Events\EventArgsLoadedGameChanged.cs" />
|
||||
<Compile Include="Events\EventArgsLocationObjectsChanged.cs" />
|
||||
<Compile Include="Events\EventArgsMineLevelChanged.cs" />
|
||||
<Compile Include="Events\EventArgsMouseStateChanged.cs" />
|
||||
<Compile Include="Events\EventArgsNewDay.cs" />
|
||||
<Compile Include="Events\EventArgsStringChanged.cs" />
|
||||
<Compile Include="Events\GameEvents.cs" />
|
||||
<Compile Include="Events\GraphicsEvents.cs" />
|
||||
<Compile Include="Events\LocationEvents.cs" />
|
||||
<Compile Include="Events\MenuEvents.cs" />
|
||||
<Compile Include="Events\MineEvents.cs" />
|
||||
<Compile Include="Events\PlayerEvents.cs" />
|
||||
<Compile Include="Events\TimeEvents.cs" />
|
||||
<Compile Include="Extensions.cs" />
|
||||
<Compile Include="Framework\UpdateHelper.cs" />
|
||||
<Compile Include="Framework\GitRelease.cs" />
|
||||
<Compile Include="Inheritance\ChangeType.cs" />
|
||||
<Compile Include="Inheritance\ItemStackChange.cs" />
|
||||
<Compile Include="Log.cs" />
|
||||
<Compile Include="Logger.cs" />
|
||||
<Compile Include="LogWriter.cs" />
|
||||
<Compile Include="Manifest.cs" />
|
||||
<Compile Include="Mod.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Inheritance\SGame.cs" />
|
||||
<Compile Include="Version.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="packages.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="unix-launcher.sh">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="FodyWeavers.xml" />
|
||||
<Content Include="icon.ico" />
|
||||
<Content Include="steam_appid.txt">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\Fody.1.29.4\build\dotnet\Fody.targets" Condition="$(OS) == 'WINDOWS_NT' AND Exists('..\packages\Fody.1.29.4\build\dotnet\Fody.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Fody.1.29.4\build\dotnet\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.1.29.4\build\dotnet\Fody.targets'))" />
|
||||
</Target>
|
||||
<Target Name="BeforeBuild">
|
||||
<!-- if game path is invalid, show one user-friendly error instead of a slew of reference errors -->
|
||||
<Error Condition="!Exists('$(GamePath)')" Text="Failed to find the game install path automatically; edit the *.csproj file and manually add a <GamePath> setting with the full directory path containing the Stardew Valley executable." />
|
||||
</Target>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{F1A573B0-F436-472C-AE29-0B91EA6B9F8F}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>StardewModdingAPI</RootNamespace>
|
||||
<AssemblyName>StardewModdingAPI</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<TargetFrameworkProfile />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Debug\SMAPI</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Release\SMAPI</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Debug\SMAPI</OutputPath>
|
||||
<DocumentationFile>bin\Debug\StardewModdingAPI.xml</DocumentationFile>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
<LangVersion>6</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Release\SMAPI</OutputPath>
|
||||
<DocumentationFile>bin\Release\StardewModdingAPI.xml</DocumentationFile>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
<LangVersion>6</LangVersion>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>icon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>StardewModdingAPI.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Linux paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/GOG Games/Stardew Valley/game</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/.local/share/Steam/steamapps/common/Stardew Valley</GamePath>
|
||||
<!-- Mac paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS</GamePath>
|
||||
<!-- Windows paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley</GamePath>
|
||||
</PropertyGroup>
|
||||
<Choose>
|
||||
<When Condition="$(OS) == 'Windows_NT'">
|
||||
<PropertyGroup>
|
||||
<DefineConstants>$(DefineConstants);SMAPI_FOR_WINDOWS</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Stardew Valley">
|
||||
<HintPath>$(GamePath)\Stardew Valley.exe</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="xTile, Version=2.0.4.0, Culture=neutral, processorArchitecture=x86">
|
||||
<HintPath>$(GamePath)\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<Otherwise>
|
||||
<PropertyGroup>
|
||||
<DefineConstants>$(DefineConstants);SMAPI_FOR_UNIX</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="MonoGame.Framework">
|
||||
<HintPath>$(GamePath)\MonoGame.Framework.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="StardewValley">
|
||||
<HintPath>$(GamePath)\StardewValley.exe</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="xTile">
|
||||
<HintPath>$(GamePath)\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Numerics">
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" Condition="$(OS) == 'Windows_NT'" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Command.cs" />
|
||||
<Compile Include="Config.cs" />
|
||||
<Compile Include="Constants.cs" />
|
||||
<Compile Include="Events\ControlEvents.cs" />
|
||||
<Compile Include="Events\EventArgsCommand.cs" />
|
||||
<Compile Include="Events\EventArgsClickableMenuChanged.cs" />
|
||||
<Compile Include="Events\EventArgsClickableMenuClosed.cs" />
|
||||
<Compile Include="Events\EventArgsControllerButtonPressed.cs" />
|
||||
<Compile Include="Events\EventArgsControllerButtonReleased.cs" />
|
||||
<Compile Include="Events\EventArgsControllerTriggerPressed.cs" />
|
||||
<Compile Include="Events\EventArgsControllerTriggerReleased.cs" />
|
||||
<Compile Include="Events\EventArgsCurrentLocationChanged.cs" />
|
||||
<Compile Include="Events\EventArgsFarmerChanged.cs" />
|
||||
<Compile Include="Events\EventArgsGameLocationsChanged.cs" />
|
||||
<Compile Include="Events\EventArgsIntChanged.cs" />
|
||||
<Compile Include="Events\EventArgsInventoryChanged.cs" />
|
||||
<Compile Include="Events\EventArgsKeyboardStateChanged.cs" />
|
||||
<Compile Include="Events\EventArgsKeyPressed.cs" />
|
||||
<Compile Include="Events\EventArgsLevelUp.cs" />
|
||||
<Compile Include="Events\EventArgsLoadedGameChanged.cs" />
|
||||
<Compile Include="Events\EventArgsLocationObjectsChanged.cs" />
|
||||
<Compile Include="Events\EventArgsMineLevelChanged.cs" />
|
||||
<Compile Include="Events\EventArgsMouseStateChanged.cs" />
|
||||
<Compile Include="Events\EventArgsNewDay.cs" />
|
||||
<Compile Include="Events\EventArgsStringChanged.cs" />
|
||||
<Compile Include="Events\GameEvents.cs" />
|
||||
<Compile Include="Events\GraphicsEvents.cs" />
|
||||
<Compile Include="Events\LocationEvents.cs" />
|
||||
<Compile Include="Events\MenuEvents.cs" />
|
||||
<Compile Include="Events\MineEvents.cs" />
|
||||
<Compile Include="Events\PlayerEvents.cs" />
|
||||
<Compile Include="Events\TimeEvents.cs" />
|
||||
<Compile Include="Extensions.cs" />
|
||||
<Compile Include="Framework\UpdateHelper.cs" />
|
||||
<Compile Include="Framework\GitRelease.cs" />
|
||||
<Compile Include="Inheritance\ChangeType.cs" />
|
||||
<Compile Include="Inheritance\ItemStackChange.cs" />
|
||||
<Compile Include="Log.cs" />
|
||||
<Compile Include="Logger.cs" />
|
||||
<Compile Include="LogWriter.cs" />
|
||||
<Compile Include="Manifest.cs" />
|
||||
<Compile Include="Mod.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Inheritance\SGame.cs" />
|
||||
<Compile Include="Version.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="packages.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="unix-launcher.sh">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="FodyWeavers.xml" />
|
||||
<Content Include="icon.ico" />
|
||||
<Content Include="steam_appid.txt">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\Fody.1.29.4\build\dotnet\Fody.targets" Condition="$(OS) == 'WINDOWS_NT' AND Exists('..\packages\Fody.1.29.4\build\dotnet\Fody.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Fody.1.29.4\build\dotnet\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.1.29.4\build\dotnet\Fody.targets'))" />
|
||||
</Target>
|
||||
<Target Name="BeforeBuild">
|
||||
<!-- if game path is invalid, show one user-friendly error instead of a slew of reference errors -->
|
||||
<Error Condition="!Exists('$(GamePath)')" Text="Failed to find the game install path automatically; edit the *.csproj file and manually add a <GamePath> setting with the full directory path containing the Stardew Valley executable." />
|
||||
</Target>
|
||||
</Project>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Costura.Fody" version="1.3.3.0" targetFramework="net461" developmentDependency="true" />
|
||||
<package id="Fody" version="1.29.4" targetFramework="net461" developmentDependency="true" />
|
||||
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Costura.Fody" version="1.3.3.0" targetFramework="net461" developmentDependency="true" />
|
||||
<package id="Fody" version="1.29.4" targetFramework="net461" developmentDependency="true" />
|
||||
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
|
||||
</packages>
|
File diff suppressed because it is too large
Load Diff
|
@ -1,126 +1,126 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{28480467-1A48-46A7-99F8-236D95225359}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>TrainerMod</RootNamespace>
|
||||
<AssemblyName>TrainerMod</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Debug\Mods\TrainerMod\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<LangVersion>6</LangVersion>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Release\Mods\TrainerMod\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<LangVersion>6</LangVersion>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Linux paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/GOG Games/Stardew Valley/game</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/.local/share/Steam/steamapps/common/Stardew Valley</GamePath>
|
||||
<!-- Mac paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS</GamePath>
|
||||
<!-- Windows paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley</GamePath>
|
||||
</PropertyGroup>
|
||||
<Choose>
|
||||
<When Condition="$(OS) == 'Windows_NT'">
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Stardew Valley">
|
||||
<HintPath>$(GamePath)\Stardew Valley.exe</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="xTile, Version=2.0.4.0, Culture=neutral, processorArchitecture=x86">
|
||||
<HintPath>$(GamePath)\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<Otherwise>
|
||||
<ItemGroup>
|
||||
<Reference Include="MonoGame.Framework">
|
||||
<HintPath>$(GamePath)\MonoGame.Framework.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="StardewValley">
|
||||
<HintPath>$(GamePath)\StardewValley.exe</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="xTile">
|
||||
<HintPath>$(GamePath)\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="TrainerMod.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\StardewModdingAPI\StardewModdingAPI.csproj">
|
||||
<Project>{f1a573b0-f436-472c-ae29-0b91ea6b9f8f}</Project>
|
||||
<Name>StardewModdingAPI</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="manifest.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Target Name="BeforeBuild">
|
||||
<!-- if game path is invalid, show one user-friendly error instead of a slew of reference errors -->
|
||||
<Error Condition="!Exists('$(GamePath)')" Text="Failed to find the game install path automatically; edit the *.csproj file and manually add a <GamePath> setting with the full directory path containing the Stardew Valley executable." />
|
||||
</Target>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{28480467-1A48-46A7-99F8-236D95225359}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>TrainerMod</RootNamespace>
|
||||
<AssemblyName>TrainerMod</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Debug\Mods\TrainerMod\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<LangVersion>6</LangVersion>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)\..\bin\Release\Mods\TrainerMod\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<LangVersion>6</LangVersion>
|
||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Linux paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/GOG Games/Stardew Valley/game</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/.local/share/Steam/steamapps/common/Stardew Valley</GamePath>
|
||||
<!-- Mac paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS</GamePath>
|
||||
<!-- Windows paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley</GamePath>
|
||||
</PropertyGroup>
|
||||
<Choose>
|
||||
<When Condition="$(OS) == 'Windows_NT'">
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Stardew Valley">
|
||||
<HintPath>$(GamePath)\Stardew Valley.exe</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="xTile, Version=2.0.4.0, Culture=neutral, processorArchitecture=x86">
|
||||
<HintPath>$(GamePath)\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<Otherwise>
|
||||
<ItemGroup>
|
||||
<Reference Include="MonoGame.Framework">
|
||||
<HintPath>$(GamePath)\MonoGame.Framework.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="StardewValley">
|
||||
<HintPath>$(GamePath)\StardewValley.exe</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="xTile">
|
||||
<HintPath>$(GamePath)\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="TrainerMod.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\StardewModdingAPI\StardewModdingAPI.csproj">
|
||||
<Project>{f1a573b0-f436-472c-ae29-0b91ea6b9f8f}</Project>
|
||||
<Name>StardewModdingAPI</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="manifest.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Target Name="BeforeBuild">
|
||||
<!-- if game path is invalid, show one user-friendly error instead of a slew of reference errors -->
|
||||
<Error Condition="!Exists('$(GamePath)')" Text="Failed to find the game install path automatically; edit the *.csproj file and manually add a <GamePath> setting with the full directory path containing the Stardew Valley executable." />
|
||||
</Target>
|
||||
</Project>
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
|
||||
</packages>
|
Loading…
Reference in New Issue