Faction Test 100.6.0.0
This commit is contained in:
+8
-2
@@ -1766,9 +1766,15 @@ namespace Barotrauma.CharacterEditor
|
||||
var modProject = new ModProject(contentPackage);
|
||||
var newFile = ModProject.File.FromPath<CharacterFile>(configFilePath);
|
||||
modProject.AddFile(newFile);
|
||||
|
||||
modProject.Save(contentPackage.Path);
|
||||
contentPackage = ContentPackageManager.ReloadContentPackage(contentPackage);
|
||||
|
||||
var reloadResult = ContentPackageManager.ReloadContentPackage(contentPackage);
|
||||
if (!reloadResult.TryUnwrapSuccess(out var newPackage))
|
||||
{
|
||||
throw new Exception($"Failed to reload package",
|
||||
reloadResult.TryUnwrapFailure(out var exception) ? exception : null);
|
||||
}
|
||||
contentPackage = newPackage;
|
||||
|
||||
DebugConsole.NewMessage(GetCharacterEditorTranslation("ContentPackageSaved").Replace("[path]", contentPackage.Path));
|
||||
|
||||
|
||||
@@ -956,16 +956,21 @@ namespace Barotrauma
|
||||
backgroundSprite = new Sprite("Content/UnstableBackground.png", sourceRectangle: null);
|
||||
}
|
||||
|
||||
if (backgroundSprite != null)
|
||||
var vignette = GUIStyle.GetComponentStyle("mainmenuvignette")?.GetDefaultSprite();
|
||||
float vignetteScale = Math.Min(GameMain.GraphicsWidth / vignette.size.X, GameMain.GraphicsHeight / vignette.size.Y);
|
||||
|
||||
Rectangle drawArea = new Rectangle(
|
||||
(int)(vignette.size.X * vignetteScale / 2), 0,
|
||||
(int)(GameMain.GraphicsWidth - vignette.size.X * vignetteScale / 2), GameMain.GraphicsHeight);
|
||||
|
||||
if (backgroundSprite?.Texture != null)
|
||||
{
|
||||
GUI.DrawBackgroundSprite(spriteBatch, backgroundSprite, Color.White);
|
||||
GUI.DrawBackgroundSprite(spriteBatch, backgroundSprite, Color.White, drawArea);
|
||||
}
|
||||
|
||||
var vignette = GUIStyle.GetComponentStyle("mainmenuvignette")?.GetDefaultSprite();
|
||||
if (vignette != null)
|
||||
{
|
||||
vignette.Draw(spriteBatch, Vector2.Zero, Color.White, Vector2.Zero, 0.0f,
|
||||
new Vector2(Math.Min(GameMain.GraphicsWidth / vignette.size.X, GameMain.GraphicsHeight / vignette.size.Y)));
|
||||
vignette.Draw(spriteBatch, Vector2.Zero, Color.White, Vector2.Zero, 0.0f, vignetteScale);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Barotrauma.Extensions;
|
||||
using Barotrauma.IO;
|
||||
@@ -40,6 +41,13 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
[DoesNotReturn]
|
||||
private static void LogAndThrowException(string errorMsg, string analyticsId)
|
||||
{
|
||||
GameAnalyticsManager.AddErrorEventOnce(analyticsId, GameAnalyticsManager.ErrorSeverity.Error, errorMsg);
|
||||
throw new InvalidOperationException(errorMsg);
|
||||
}
|
||||
|
||||
public override void Select()
|
||||
{
|
||||
base.Select();
|
||||
@@ -74,20 +82,11 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
if (!GameMain.Client.IsServerOwner)
|
||||
if (!GameMain.Client.IsServerOwner && GameMain.Client.ClientPeer.ServerContentPackages.Length == 0)
|
||||
{
|
||||
if (GameMain.Client.ClientPeer.ServerContentPackages.Length == 0)
|
||||
{
|
||||
string errorMsg = $"Error in ModDownloadScreen: the list of mods the server has enabled was empty. Content package list received: {GameMain.Client.ClientPeer.ContentPackageOrderReceived}";
|
||||
GameAnalyticsManager.AddErrorEventOnce("ModDownloadScreen.Select:NoContentPackages", GameAnalyticsManager.ErrorSeverity.Error, errorMsg);
|
||||
throw new InvalidOperationException(errorMsg);
|
||||
}
|
||||
if (GameMain.Client.ClientPeer.ServerContentPackages.None(p => p.CorePackage != null))
|
||||
{
|
||||
string errorMsg = $"Error in ModDownloadScreen: no core packages in the list of mods the server has enabled. Content package list received: {GameMain.Client.ClientPeer.ContentPackageOrderReceived}";
|
||||
GameAnalyticsManager.AddErrorEventOnce("ModDownloadScreen.Select:NoCorePackage", GameAnalyticsManager.ErrorSeverity.Error, errorMsg);
|
||||
throw new InvalidOperationException(errorMsg);
|
||||
}
|
||||
LogAndThrowException("Error in ModDownloadScreen: the list of mods the server has enabled was empty. "
|
||||
+$"Content package list received: {GameMain.Client.ClientPeer.ContentPackageOrderReceived}",
|
||||
analyticsId: "ModDownloadScreen.Select:NoContentPackages");
|
||||
}
|
||||
|
||||
var missingPackages = GameMain.Client.ClientPeer.ServerContentPackages
|
||||
@@ -96,11 +95,18 @@ namespace Barotrauma
|
||||
{
|
||||
if (!GameMain.Client.IsServerOwner)
|
||||
{
|
||||
var corePackage = GameMain.Client.ClientPeer.ServerContentPackages
|
||||
.Select(p => p.CorePackage)
|
||||
.OfType<CorePackage>().FirstOrDefault();
|
||||
if (corePackage is null)
|
||||
{
|
||||
LogAndThrowException($"Error in ModDownloadScreen: no core packages in the list of mods the server has enabled. " +
|
||||
$"Content package list received: {GameMain.Client.ClientPeer.ContentPackageOrderReceived}",
|
||||
analyticsId: "ModDownloadScreen.Select:NoCorePackage");
|
||||
}
|
||||
|
||||
ContentPackageManager.EnabledPackages.BackUp();
|
||||
ContentPackageManager.EnabledPackages.SetCore(
|
||||
GameMain.Client.ClientPeer.ServerContentPackages
|
||||
.Select(p => p.CorePackage)
|
||||
.OfType<CorePackage>().First());
|
||||
ContentPackageManager.EnabledPackages.SetCore(corePackage);
|
||||
List<RegularPackage> regularPackages =
|
||||
GameMain.Client.ClientPeer.ServerContentPackages
|
||||
.Select(p => p.RegularPackage)
|
||||
@@ -113,6 +119,15 @@ namespace Barotrauma
|
||||
return;
|
||||
}
|
||||
|
||||
if (missingPackages.FirstOrDefault(p => p.IsVanilla) is { } mismatchedVanilla)
|
||||
{
|
||||
LogAndThrowException("Error in ModDownloadScreen: mismatched Vanilla package: "
|
||||
+$"local hash is {ContentPackageManager.VanillaCorePackage?.Hash.StringRepresentation ?? "[NULL]"}, "
|
||||
+$"remote hash is {mismatchedVanilla.Hash.StringRepresentation}. "
|
||||
+$"Content package list received: {GameMain.Client.ClientPeer.ContentPackageOrderReceived}",
|
||||
analyticsId: "ModDownloadScreen.Select:MismatchedVanilla");
|
||||
}
|
||||
|
||||
GUIMessageBox msgBox = new GUIMessageBox(
|
||||
TextManager.Get("ModDownloadTitle"),
|
||||
"",
|
||||
@@ -291,14 +306,23 @@ namespace Barotrauma
|
||||
var serverPackages = GameMain.Client.ClientPeer.ServerContentPackages;
|
||||
CorePackage corePackage
|
||||
= downloadedPackages.FirstOrDefault(p => p is CorePackage) as CorePackage
|
||||
?? serverPackages.FirstOrDefault(p => p.CorePackage != null)
|
||||
?.CorePackage
|
||||
?? serverPackages.FirstOrDefault(p => p.CorePackage != null)?.CorePackage
|
||||
?? throw new Exception($"Failed to find core package to enable");
|
||||
|
||||
List<RegularPackage> regularPackages = new List<RegularPackage>();
|
||||
foreach (var p in serverPackages)
|
||||
{
|
||||
if (p.CorePackage != null) { continue; }
|
||||
if (p.CorePackage != null)
|
||||
{
|
||||
// This package is one of our installed core packages
|
||||
continue;
|
||||
}
|
||||
|
||||
if (corePackage.Hash.Equals(p.Hash))
|
||||
{
|
||||
// This package is the core package we downloaded from the server
|
||||
continue;
|
||||
}
|
||||
RegularPackage? matchingPackage =
|
||||
p.RegularPackage ?? downloadedPackages.FirstOrDefault(d => d is RegularPackage && d.Hash.Equals(p.Hash)) as RegularPackage;
|
||||
if (matchingPackage is null)
|
||||
@@ -355,9 +379,13 @@ namespace Barotrauma
|
||||
string dir = path.RemoveFromEnd(ModReceiver.Extension, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
SaveUtil.DecompressToDirectory(path, dir, file => { });
|
||||
ContentPackage newPackage
|
||||
= ContentPackage.TryLoad($"{dir}/{ContentPackage.FileListFileName}")
|
||||
?? throw new Exception($"Failed to load downloaded mod \"{currentDownload.Name}\"");
|
||||
var result = ContentPackage.TryLoad(Path.Combine(dir, ContentPackage.FileListFileName));
|
||||
|
||||
if (!result.TryUnwrapSuccess(out var newPackage))
|
||||
{
|
||||
throw new Exception($"Failed to load downloaded mod \"{currentDownload.Name}\"",
|
||||
result.TryUnwrapFailure(out var exception) ? exception : null);
|
||||
}
|
||||
if (!currentDownload.Hash.Equals(newPackage.Hash))
|
||||
{
|
||||
throw new Exception($"Hash mismatch for downloaded mod \"{currentDownload.Name}\" (expected {currentDownload.Hash}, got {newPackage.Hash})");
|
||||
|
||||
@@ -2740,6 +2740,7 @@ namespace Barotrauma
|
||||
}
|
||||
public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch)
|
||||
{
|
||||
if (backgroundSprite?.Texture == null) { return; }
|
||||
graphics.Clear(Color.Black);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: GameMain.ScissorTestEnable);
|
||||
GUI.DrawBackgroundSprite(spriteBatch, backgroundSprite, Color.White);
|
||||
|
||||
@@ -1352,6 +1352,10 @@ namespace Barotrauma
|
||||
|
||||
private void AddToServerList(ServerInfo serverInfo, bool skipPing = false)
|
||||
{
|
||||
if (serverInfo.PlayerCount > serverInfo.MaxPlayers) { return; }
|
||||
if (serverInfo.PlayerCount < 0) { return; }
|
||||
if (serverInfo.MaxPlayers <= 0) { return; }
|
||||
|
||||
RemoveMsgFromServerList(MsgUserData.RefreshingServerList);
|
||||
RemoveMsgFromServerList(MsgUserData.NoServers);
|
||||
var serverFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.06f), serverList.Content.RectTransform) { MinSize = new Point(0, 35) },
|
||||
|
||||
@@ -165,6 +165,7 @@ namespace Barotrauma
|
||||
|
||||
void DrawOverlay(Sprite sprite, Color color)
|
||||
{
|
||||
if (sprite.Texture == null) { return; }
|
||||
GUI.DrawBackgroundSprite(spriteBatch, sprite, color);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3086,11 +3086,17 @@ namespace Barotrauma
|
||||
|
||||
XDocument doc = new XDocument(ItemAssemblyPrefab.Save(MapEntity.SelectedList.ToList(), nameBox.Text, descriptionBox.Text, hideInMenus));
|
||||
doc.SaveSafe(filePath);
|
||||
|
||||
var resultPackage = ContentPackageManager.ReloadContentPackage(existingContentPackage) as RegularPackage;
|
||||
if (!ContentPackageManager.EnabledPackages.Regular.Contains(resultPackage))
|
||||
|
||||
var result = ContentPackageManager.ReloadContentPackage(existingContentPackage);
|
||||
if (!result.TryUnwrapSuccess(out var resultPackage))
|
||||
{
|
||||
ContentPackageManager.EnabledPackages.EnableRegular(resultPackage);
|
||||
throw new Exception($"Failed to reload content package \"{existingContentPackage.Name}\"",
|
||||
result.TryUnwrapFailure(out var exception) ? exception : null);
|
||||
}
|
||||
if (resultPackage is RegularPackage regularPackage
|
||||
&& !ContentPackageManager.EnabledPackages.Regular.Contains(regularPackage))
|
||||
{
|
||||
ContentPackageManager.EnabledPackages.EnableRegular(regularPackage);
|
||||
GameSettings.SaveCurrentConfig();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user