Unstable 0.17.7.0

This commit is contained in:
Markus Isberg
2022-04-08 00:34:17 +09:00
parent 95764d1fa8
commit 164d72ae3a
82 changed files with 852 additions and 385 deletions
@@ -17,6 +17,7 @@ namespace Barotrauma
Hull.EditFire = false;
Hull.EditWater = false;
#endif
HumanAIController.DisableCrewAI = false;
}
protected virtual void DeselectEditorSpecific() { }
@@ -131,7 +131,7 @@ namespace Barotrauma
}
else
{
connection.OverrideValue = Convert.ChangeType(overrideValue, type);
connection.OverrideValue = EventEditorScreen.ChangeType(overrideValue, type);
}
}
}
@@ -513,7 +513,7 @@ namespace Barotrauma
}
else
{
newNode.Value = Convert.ChangeType(value, type);
newNode.Value = EventEditorScreen.ChangeType(value, type);
}
}
@@ -440,7 +440,7 @@ namespace Barotrauma
}
else
{
connection.OverrideValue = Convert.ChangeType(attribute.Value, connection.ValueType);
connection.OverrideValue = ChangeType(attribute.Value, connection.ValueType);
}
}
}
@@ -524,6 +524,18 @@ namespace Barotrauma
GuiFrame.AddToGUIUpdateList();
}
public static object? ChangeType(string value, Type type)
{
if (type == typeof(Identifier))
{
return value.ToIdentifier();
}
else
{
return Convert.ChangeType(value, type);
}
}
private XElement? ExportXML()
{
XElement mainElement = new XElement("ScriptedEvent", new XAttribute("identifier", projectName.RemoveWhitespace().ToLowerInvariant()));
@@ -883,12 +883,17 @@ namespace Barotrauma
private void SerializeAll()
{
IEnumerable<ContentPackage> packages = ContentPackageManager.LocalPackages;
#if DEBUG
packages = packages.Union(ContentPackageManager.VanillaCorePackage.ToEnumerable());
#endif
System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings
{
Indent = true,
NewLineOnAttributes = true
};
foreach (var configFile in ContentPackageManager.AllPackages.SelectMany(p => p.GetFiles<LevelGenerationParametersFile>()))
foreach (var configFile in packages.SelectMany(p => p.GetFiles<LevelGenerationParametersFile>()))
{
XDocument doc = XMLExtensions.TryLoadXml(configFile.Path);
if (doc == null) { continue; }
@@ -922,7 +927,7 @@ namespace Barotrauma
}
}
foreach (var configFile in ContentPackageManager.AllPackages.SelectMany(p => p.GetFiles<CaveGenerationParametersFile>()))
foreach (var configFile in packages.SelectMany(p => p.GetFiles<CaveGenerationParametersFile>()))
{
XDocument doc = XMLExtensions.TryLoadXml(configFile.Path);
if (doc == null) { continue; }
@@ -957,7 +962,7 @@ namespace Barotrauma
}
settings.NewLineOnAttributes = false;
foreach (var configFile in ContentPackageManager.AllPackages.SelectMany(p => p.GetFiles<LevelObjectPrefabsFile>()))
foreach (var configFile in packages.SelectMany(p => p.GetFiles<LevelObjectPrefabsFile>()))
{
XDocument doc = XMLExtensions.TryLoadXml(configFile.Path);
if (doc == null) { continue; }
@@ -8,7 +8,6 @@ using Barotrauma.Networking;
using Barotrauma.Steam;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Steamworks.Data;
using Color = Microsoft.Xna.Framework.Color;
using ServerContentPackage = Barotrauma.Networking.ClientPeer.ServerContentPackage;
@@ -164,7 +163,7 @@ namespace Barotrauma
=> wp.SteamWorkshopId != mp.WorkshopId))
.Select(mp => mp.WorkshopId)
.ToArray();
if (missingIds.Any())
if (missingIds.Any() && SteamManager.IsInitialized)
{
buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), innerLayout.RectTransform), isHorizontal: true);
buttonContainerSpacing(0.15f);
@@ -208,7 +207,7 @@ namespace Barotrauma
{
if (currentDownload == p)
{
FileReceiver.FileTransferIn? getTransfer() => GameMain.Client.FileReceiver.ActiveTransfers.FirstOrDefault(t => t.FileType == FileTransferType.Mod);
FileReceiver.FileTransferIn? getTransfer() => GameMain.Client?.FileReceiver.ActiveTransfers.FirstOrDefault(t => t.FileType == FileTransferType.Mod);
if (downloadProgress.GetAnyChild<GUITextBlock>() is null)
{
@@ -2298,7 +2298,7 @@ namespace Barotrauma
text: selectedClient.Name, font: GUIStyle.LargeFont);
nameText.Text = ToolBox.LimitString(nameText.Text, nameText.Font, (int)(nameText.Rect.Width * 0.95f));
if (hasManagePermissions)
if (hasManagePermissions && !selectedClient.IsOwner)
{
PlayerFrame.UserData = selectedClient;
@@ -557,7 +557,9 @@ namespace Barotrauma
};
serverPreview = new GUIListBox(new RectTransform(Vector2.One, serverPreviewContainer.RectTransform, Anchor.Center))
{
Padding = Vector4.One * 10 * GUI.Scale
Padding = Vector4.One * 10 * GUI.Scale,
HoverCursor = CursorState.Default,
OnSelected = (component, o) => false
};
// Spacing
@@ -915,12 +917,7 @@ namespace Barotrauma
{
case "ServerListCompatible":
bool? s1Compatible = NetworkMember.IsCompatible(GameMain.Version.ToString(), s1.GameVersion);
if (!s1.ContentPackageHashes.Any()) { s1Compatible = null; }
if (s1Compatible.HasValue) { s1Compatible = s1Compatible.Value && s1.ContentPackagesMatch(); };
bool? s2Compatible = NetworkMember.IsCompatible(GameMain.Version.ToString(), s2.GameVersion);
if (!s2.ContentPackageHashes.Any()) { s2Compatible = null; }
if (s2Compatible.HasValue) { s2Compatible = s2Compatible.Value && s2.ContentPackagesMatch(); };
//convert to int to make sorting easier
//1 Compatible
@@ -1028,8 +1025,7 @@ namespace Barotrauma
foreach (GUIComponent child in serverList.Content.Children)
{
if (!(child.UserData is ServerInfo)) continue;
ServerInfo serverInfo = (ServerInfo)child.UserData;
if (!(child.UserData is ServerInfo serverInfo)) { continue; }
Version remoteVersion = null;
if (!string.IsNullOrEmpty(serverInfo.GameVersion))
@@ -1047,8 +1043,7 @@ namespace Barotrauma
else
{
bool incompatible =
(serverInfo.ContentPackageHashes.Any() && !serverInfo.ContentPackagesMatch()) ||
(remoteVersion != null && !NetworkMember.IsCompatible(GameMain.Version, remoteVersion));
remoteVersion != null && !NetworkMember.IsCompatible(GameMain.Version, remoteVersion);
var karmaFilterPassed = filterKarmaValue == TernaryOption.Any|| (filterKarmaValue == TernaryOption.Enabled) == serverInfo.KarmaEnabled;
var friendlyFireFilterPassed = filterFriendlyFireValue == TernaryOption.Any || (filterFriendlyFireValue == TernaryOption.Enabled) == serverInfo.FriendlyFireEnabled;
@@ -1798,8 +1793,7 @@ namespace Barotrauma
{
CanBeFocused = false,
Selected =
(NetworkMember.IsCompatible(GameMain.Version.ToString(), serverInfo.GameVersion) ?? true) &&
serverInfo.ContentPackagesMatch(),
(NetworkMember.IsCompatible(GameMain.Version.ToString(), serverInfo.GameVersion) ?? true),
UserData = "compatible"
};
@@ -1826,9 +1820,9 @@ namespace Barotrauma
if (serverInfo.ContentPackageNames.Any())
{
if (serverInfo.ContentPackageNames.Any(cp => !cp.Equals(GameMain.VanillaContent.Name, StringComparison.OrdinalIgnoreCase)))
if (serverInfo.ContentPackageNames.Any(p => !GameMain.VanillaContent.NameMatches(p)))
{
serverName.TextColor = new Color(219, 125, 217);
serverName.TextColor = GUIStyle.ModdedServerColor;
}
}
@@ -2841,6 +2841,7 @@ namespace Barotrauma
private void CreateLoadScreen()
{
CloseItem();
SubmarineInfo.RefreshSavedSubs();
SetMode(Mode.Default);
loadFrame = new GUIButton(new RectTransform(Vector2.One, GUI.Canvas, Anchor.Center), style: null)
@@ -3162,7 +3163,6 @@ namespace Barotrauma
}
sub.Dispose();
SubmarineInfo.RefreshSavedSubs();
CreateLoadScreen();
}
catch (Exception e)