Faction Test 100.13.0.0

This commit is contained in:
Markus Isberg
2023-01-11 15:36:23 +02:00
parent 1650735468
commit caa5a2f762
145 changed files with 2100 additions and 1111 deletions
@@ -621,6 +621,15 @@ namespace Barotrauma
return stringValue.Split(';').Select(s => ParseTuple<T1, T2>(s, default)).ToArray();
}
public static Range<int> GetAttributeRange(this XElement element, string name, Range<int> defaultValue)
{
var attribute = element?.GetAttribute(name);
if (attribute is null) { return defaultValue; }
string stringValue = attribute.Value;
return string.IsNullOrEmpty(stringValue) ? defaultValue : ParseRange(stringValue);
}
public static string ElementInnerText(this XElement el)
{
StringBuilder str = new StringBuilder();
@@ -903,6 +912,37 @@ namespace Barotrauma
return floatArray;
}
// parse a range string, e.g "1-3" or "3"
public static Range<int> ParseRange(string rangeString)
{
if (string.IsNullOrWhiteSpace(rangeString)) { return GetDefault(rangeString); }
string[] split = rangeString.Split('-');
return split.Length switch
{
1 when TryParseInt(split[0], out int value) => new Range<int>(value, value),
2 when TryParseInt(split[0], out int min) && TryParseInt(split[1], out int max) && min < max => new Range<int>(min, max),
_ => GetDefault(rangeString)
};
static bool TryParseInt(string value, out int result)
{
if (!string.IsNullOrWhiteSpace(value))
{
return int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out result);
}
result = default;
return false;
}
static Range<int> GetDefault(string rangeString)
{
DebugConsole.ThrowError($"Error parsing range: \"{rangeString}\" (using default value 0-99)");
return new Range<int>(0, 99);
}
}
public static Identifier VariantOf(this XElement element) =>
element.GetAttributeIdentifier("inherit", element.GetAttributeIdentifier("variantof", ""));