fix(core): Removes implicit cast between Serial and uint (#728)

* Fixes spellbooks using serial ctor
* Fixes misc items where someone thought they had an amount and it didn't
* Fixes all `Food` types.
This commit is contained in:
Kamron Batman 2021-08-25 00:27:19 -07:00 • committed by GitHub
parent 17521c9cd7
commit 0dc4acc164
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
74 changed files with 319 additions and 248 deletions

View file

@ -66,29 +66,65 @@ namespace Server
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(Serial l, Serial r) => l.Value == r.Value;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(Serial l, uint r) => l.Value == r;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator !=(Serial l, Serial r) => l.Value != r.Value;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator !=(Serial l, uint r) => l.Value != r;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator >(Serial l, Serial r) => l.Value > r.Value;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator >(Serial l, uint r) => l.Value > r;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator <(Serial l, Serial r) => l.Value < r.Value;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator <(Serial l, uint r) => l.Value < r;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator >=(Serial l, Serial r) => l.Value >= r.Value;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator >=(Serial l, uint r) => l.Value >= r;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator <=(Serial l, Serial r) => l.Value <= r.Value;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator <=(Serial l, uint r) => l.Value <= r;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Serial operator +(Serial l, Serial r) => (Serial)(l.Value + r.Value);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Serial operator +(Serial l, uint r) => (Serial)(l.Value + r);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Serial operator ++(Serial l) => (Serial)(l.Value + 1);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Serial operator -(Serial l, Serial r) => (Serial)(l.Value - r.Value);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Serial operator -(Serial l, uint r) => (Serial)(l.Value - r);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Serial operator --(Serial l) => (Serial)(l.Value - 1);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override string ToString() => $"0x{Value:X8}";
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator uint(Serial a) => a.Value;
public static explicit operator uint(Serial a) => a.Value;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator Serial(uint a) => new(a);
public static explicit operator Serial(uint a) => new(a);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(Serial other) => Value == other.Value;