18 lines
773 B
C#
18 lines
773 B
C#
namespace Civilization.Core;
|
|
|
|
public readonly struct Vec2I(int x, int y) : IEquatable<Vec2I>
|
|
{
|
|
public int X { get; } = x;
|
|
public int Y { get; } = y;
|
|
|
|
public static Vec2I operator +(Vec2I a, Vec2I b) => new(a.X + b.X, a.Y + b.Y);
|
|
public static Vec2I operator -(Vec2I a, Vec2I b) => new(a.X - b.X, a.Y - b.Y);
|
|
|
|
public static bool operator ==(Vec2I left, Vec2I right) => left.Equals(right);
|
|
public static bool operator !=(Vec2I left, Vec2I right) => !left.Equals(right);
|
|
|
|
public override string ToString() => $"({X}, {Y})";
|
|
public bool Equals(Vec2I other) => X == other.X && Y == other.Y;
|
|
public override bool Equals(object? obj) => obj is Vec2I other && Equals(other);
|
|
public override int GetHashCode() => HashCode.Combine(X, Y);
|
|
} |