using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MinecraftClient.Protocol { /// /// Information about a player (player tab list item) /// public struct PlayerInfo : IComparable { private Guid _uuid; private string _name; private string _displayName; public Guid UUID { get { return _uuid; } } public string Name { get { return _name; } } public string DisplayName { get { return _displayName; } } /// /// Create a new PlayerInfo structure /// /// Player Id /// Player Name public PlayerInfo(Guid uuid, string name) { _uuid = uuid; _name = name; _displayName = name; } /// /// Create a new PlayerInfo structure /// /// Player Id /// Player Name /// Player Display Name public PlayerInfo(Guid uuid, string name, string displayName) : this(uuid, name) { _displayName = displayName; } /// /// String representation of the player /// /// Player display name public override string ToString() { return DisplayName; } /// /// Compare a player to another player /// /// Other player /// TRUE if same player Id public override bool Equals(object obj) { if (obj is PlayerInfo) return UUID.Equals(((PlayerInfo)obj).UUID); return base.Equals(obj); } /// /// Basic hash function for player, from Player Id /// /// Interger hash /// Required when overriding Equals() public override int GetHashCode() { return UUID.GetHashCode(); } /// /// Allows sorting players by name /// /// Other player to compare to /// Comparition with the player's name int IComparable.CompareTo(PlayerInfo obj) { return Name.CompareTo(obj.Name); } } }