Verify that the launched exe belongs to the selected content package, and if not, ask if the player wants to relaunch with the correct exe. Closes #955
This commit is contained in:
@@ -11,6 +11,7 @@ using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using GameAnalyticsSDK.Net;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
@@ -386,6 +387,8 @@ namespace Barotrauma
|
||||
LocationType.Init();
|
||||
MainMenuScreen.Select();
|
||||
|
||||
CheckContentPackage();
|
||||
|
||||
TitleScreen.LoadState = 100.0f;
|
||||
hasLoaded = true;
|
||||
if (GameSettings.VerboseLogging)
|
||||
@@ -396,6 +399,27 @@ namespace Barotrauma
|
||||
|
||||
}
|
||||
|
||||
private void CheckContentPackage()
|
||||
{
|
||||
var exePaths = Config.SelectedContentPackage.GetFilesOfType(ContentType.Executable);
|
||||
if (exePaths.Count > 0 && AppDomain.CurrentDomain.FriendlyName != exePaths[0])
|
||||
{
|
||||
var msgBox = new GUIMessageBox(TextManager.Get("Error"),
|
||||
TextManager.Get("IncorrectExe")
|
||||
.Replace("[selectedpackage]", Config.SelectedContentPackage.Name)
|
||||
.Replace("[exename]", exePaths[0]),
|
||||
new string[] { TextManager.Get("Yes"), TextManager.Get("No") });
|
||||
msgBox.Buttons[0].OnClicked += (_, userdata) =>
|
||||
{
|
||||
string fullPath = Path.GetFullPath(exePaths[0]);
|
||||
Process.Start(fullPath);
|
||||
Exit();
|
||||
return true;
|
||||
};
|
||||
msgBox.Buttons[1].OnClicked = msgBox.Close;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UnloadContent will be called once per game and is the place to unload
|
||||
/// all content.
|
||||
|
||||
@@ -5,6 +5,7 @@ using Microsoft.Xna.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using System.Xml.Linq;
|
||||
@@ -101,6 +102,29 @@ namespace Barotrauma
|
||||
Screen.SelectNull();
|
||||
|
||||
NetLobbyScreen = new NetLobbyScreen();
|
||||
|
||||
CheckContentPackage();
|
||||
}
|
||||
|
||||
|
||||
private void CheckContentPackage()
|
||||
{
|
||||
var exePaths = Config.SelectedContentPackage.GetFilesOfType(ContentType.ServerExecutable);
|
||||
if (exePaths.Count > 0 && AppDomain.CurrentDomain.FriendlyName != exePaths[0])
|
||||
{
|
||||
DebugConsole.ShowQuestionPrompt(TextManager.Get("IncorrectExe")
|
||||
.Replace("[selectedpackage]", Config.SelectedContentPackage.Name)
|
||||
.Replace("[exename]", exePaths[0]),
|
||||
(option) =>
|
||||
{
|
||||
if (option.ToLower() == "y" || option.ToLower() == "yes")
|
||||
{
|
||||
string fullPath = Path.GetFullPath(exePaths[0]);
|
||||
Process.Start(fullPath);
|
||||
ShouldRun = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void StartServer()
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
<ApplySettingsNo>Discard</ApplySettingsNo>
|
||||
<RestartRequiredLabel>Restart required</RestartRequiredLabel>
|
||||
<RestartRequiredText>You need to restart the game for the resolution changes to take effect.</RestartRequiredText>
|
||||
<IncorrectExe>The executable you've launched is not present in the content package [selectedpackage]. Do you want to launch [exename]?</IncorrectExe>
|
||||
|
||||
<!-- Round summary -->
|
||||
<RoundSummaryProgress>[sub] has made its way to [location].</RoundSummaryProgress>
|
||||
|
||||
@@ -57,4 +57,5 @@
|
||||
<Jobs file="Content/Jobs.xml" />
|
||||
<Sounds file="Content/Sounds/sounds.xml" />
|
||||
<Executable file="Barotrauma.exe" />
|
||||
<ServerExecutable file="BarotraumaServer.exe" />
|
||||
</contentpackage>
|
||||
|
||||
@@ -13,7 +13,8 @@ namespace Barotrauma
|
||||
Item,
|
||||
Character,
|
||||
Structure,
|
||||
Executable,
|
||||
Executable,
|
||||
ServerExecutable,
|
||||
LocationTypes,
|
||||
LevelGenerationParameters,
|
||||
RandomEvents,
|
||||
@@ -144,7 +145,7 @@ namespace Barotrauma
|
||||
var md5 = MD5.Create();
|
||||
foreach (ContentFile file in files)
|
||||
{
|
||||
if (file.type == ContentType.Executable) continue;
|
||||
if (file.type == ContentType.Executable || file.type == ContentType.ServerExecutable) continue;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user