Merge branch 'master' of https://github.com/Regalis11/Barotrauma into develop

This commit is contained in:
EvilFactory
2023-03-13 13:32:14 -03:00
335 changed files with 11052 additions and 5179 deletions
@@ -348,12 +348,7 @@ namespace Barotrauma
}
private static T? ReadNullable<T>(IReadMessage inc, NetworkSerialize attribute, ReadOnlyBitField bitField) where T : struct =>
ReadOption<T>(inc, attribute, bitField) switch
{
Some<T> { Value: var value } => value,
None<T> _ => null,
_ => throw new ArgumentOutOfRangeException()
};
ReadOption<T>(inc, attribute, bitField).TryUnwrap(out var value) ? value : null;
private static void WriteNullable<T>(T? value, NetworkSerialize attribute, IWriteMessage msg, WriteOnlyBitField bitField) where T : struct =>
WriteOption<T>(value.HasValue ? Option<T>.Some(value.Value) : Option<T>.None(), attribute, msg, bitField);
@@ -378,7 +373,7 @@ namespace Barotrauma
{
ToolBox.ThrowIfNull(option);
if (option.TryUnwrap(out T value))
if (option.TryUnwrap(out T? value))
{
bitField.WriteBoolean(true);
if (TryFindBehavior(out ReadWriteBehavior<T> behavior))
@@ -31,7 +31,7 @@ namespace Barotrauma.Networking
/// </summary>
public OrderChatMessage(Order order, Character targetCharacter, Character sender, bool isNewOrder = true)
: this(order,
order?.GetChatMessage(targetCharacter?.Name, sender?.CurrentHull?.DisplayName?.Value, givingOrderToSelf: targetCharacter == sender, orderOption: order.Option, isNewOrder: isNewOrder),
order?.GetChatMessage(targetCharacter?.Name, (order.TargetEntity as Hull ?? sender?.CurrentHull)?.DisplayName?.Value, givingOrderToSelf: targetCharacter == sender, orderOption: order.Option, isNewOrder: isNewOrder),
targetCharacter, sender, isNewOrder)
{
@@ -110,7 +110,7 @@ namespace Barotrauma.Networking
WriteOrder(msg, Order, TargetCharacter, IsNewOrder);
}
public struct OrderMessageInfo
public readonly struct OrderMessageInfo
{
public Identifier OrderIdentifier { get; }
public OrderPrefab OrderPrefab => OrderPrefab.Prefabs[OrderIdentifier];
@@ -112,27 +112,24 @@ namespace Barotrauma.Networking
switch (typeString)
{
case "float":
if (!(a is float?)) return false;
if (!(b is float?)) return false;
return MathUtils.NearlyEqual((float)a, (float)b);
if (a is not float fa) { return false; }
if (b is not float fb) { return false; }
return MathUtils.NearlyEqual(fa, fb);
case "int":
if (!(a is int?)) return false;
if (!(b is int?)) return false;
return (int)a == (int)b;
if (a is not int ia) { return false; }
if (b is not int ib) { return false; }
return ia == ib;
case "bool":
if (!(a is bool?)) return false;
if (!(b is bool?)) return false;
return (bool)a == (bool)b;
if (a is not bool ba) { return false; }
if (b is not bool bb) { return false; }
return ba == bb;
case "Enum":
if (!(a is Enum)) return false;
if (!(b is Enum)) return false;
return ((Enum)a).Equals((Enum)b);
if (a is not Enum ea) { return false; }
if (b is not Enum eb) { return false; }
return ea.Equals(eb);
default:
if (a == null || b == null)
{
return (a == null) == (b == null);
}
return a.ToString().Equals(b.ToString(), StringComparison.OrdinalIgnoreCase);
return ReferenceEquals(a,b)
|| string.Equals(a?.ToString(), b?.ToString(), StringComparison.OrdinalIgnoreCase);
}
}
@@ -205,7 +202,7 @@ namespace Barotrauma.Networking
public void Write(IWriteMessage msg, object overrideValue = null)
{
if (overrideValue == null) { overrideValue = Value; }
overrideValue ??= Value;
switch (typeString)
{
case "float":
@@ -295,10 +292,7 @@ namespace Barotrauma.Networking
var saveProperties = SerializableProperty.GetProperties<Serialize>(this);
foreach (var property in saveProperties)
{
object value = property.GetValue(this);
if (value == null) { continue; }
string typeName = SerializableProperty.GetSupportedTypeName(value.GetType());
string typeName = SerializableProperty.GetSupportedTypeName(property.PropertyType);
if (typeName != null || property.PropertyType.IsEnum)
{
NetPropertyData netPropertyData = new NetPropertyData(this, property, typeName);
@@ -758,6 +752,9 @@ namespace Barotrauma.Networking
get;
set;
}
[Serialize(defaultValue: "", IsPropertySaveable.Yes)]
public LanguageIdentifier Language { get; set; }
private SelectionMode subSelectionMode;
[Serialize(SelectionMode.Manual, IsPropertySaveable.Yes)]
@@ -1,5 +1,4 @@
using Barotrauma.Networking;
using System;
using System.Collections.Generic;
namespace Barotrauma