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);
}
}
}