Unstable v0.19.1.0

This commit is contained in:
Juan Pablo Arce
2022-08-19 13:59:08 -03:00
parent 6b55adcdd9
commit 1219615d64
192 changed files with 3875 additions and 2648 deletions
@@ -5,5 +5,13 @@ namespace Barotrauma
private None() { }
public static Option<T> Create() => new None<T>();
public override Option<T> Fallback(Option<T> fallback) => fallback;
public override T Fallback(T fallback) => fallback;
public override bool ValueEquals(T value) => false;
public override string ToString()
=> $"None<{typeof(T).Name}>";
}
}
@@ -1,3 +1,4 @@
#nullable enable
using System;
namespace Barotrauma
@@ -23,7 +24,7 @@ namespace Barotrauma
outValue = value;
return true;
case None<T> _:
outValue = default;
outValue = default!;
return false;
default:
throw new ArgumentOutOfRangeException();
@@ -37,5 +38,30 @@ namespace Barotrauma
None<T> _ => Option<TType>.None(),
_ => throw new ArgumentOutOfRangeException()
};
public abstract Option<T> Fallback(Option<T> fallback);
public abstract T Fallback(T fallback);
public abstract bool ValueEquals(T value);
public override bool Equals(object? obj)
=> obj switch
{
Some<T> { Value: var value } => this is Some<T> { Value: { } selfValue } && selfValue.Equals(value),
None<T> _ => IsNone(),
T value => this is Some<T> { Value: { } selfValue } && selfValue.Equals(value),
_ => false
};
public override int GetHashCode()
=> this is Some<T> { Value: { } value } ? value.GetHashCode() : 0;
public static bool operator ==(Option<T> a, Option<T> b)
=> a.Equals(b);
public static bool operator !=(Option<T> a, Option<T> b)
=> !(a == b);
public abstract override string ToString();
}
}
@@ -13,5 +13,13 @@ namespace Barotrauma
}
public static Option<T> Create(T value) => new Some<T>(value);
public override Option<T> Fallback(Option<T> fallback) => this;
public override T Fallback(T fallback) => Value;
public override bool ValueEquals(T value) => Value.Equals(value);
public override string ToString()
=> $"Some<{typeof(T).Name}>({Value})";
}
}