2023-07-18 17:09:27 +02:00
|
|
|
namespace pacMan.GameStuff.Items;
|
2023-05-22 22:57:45 +02:00
|
|
|
|
2023-07-13 14:00:42 +02:00
|
|
|
public interface IPlayer
|
|
|
|
{
|
2023-07-19 16:03:43 +02:00
|
|
|
string UserName { get; init; }
|
2023-07-13 14:00:42 +02:00
|
|
|
Character PacMan { get; init; }
|
|
|
|
string Colour { get; init; }
|
2023-07-14 19:14:19 +02:00
|
|
|
Box? Box { get; init; }
|
2023-07-13 14:00:42 +02:00
|
|
|
State State { get; set; }
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum State
|
|
|
|
{
|
|
|
|
WaitingForPlayers,
|
|
|
|
Ready,
|
2023-07-15 14:55:16 +02:00
|
|
|
InGame,
|
|
|
|
Disconnected
|
2023-07-13 14:00:42 +02:00
|
|
|
}
|
|
|
|
|
2023-07-12 14:07:32 +02:00
|
|
|
public class Player : IPlayer, IEquatable<Player>
|
2023-05-22 22:57:45 +02:00
|
|
|
{
|
2023-07-12 14:07:32 +02:00
|
|
|
public bool Equals(Player? other)
|
|
|
|
{
|
|
|
|
if (ReferenceEquals(null, other)) return false;
|
|
|
|
if (ReferenceEquals(this, other)) return true;
|
2023-07-19 16:03:43 +02:00
|
|
|
return UserName == other.UserName;
|
2023-07-12 14:07:32 +02:00
|
|
|
}
|
|
|
|
|
2023-07-19 16:03:43 +02:00
|
|
|
public required string UserName { get; init; }
|
2023-06-24 19:43:03 +02:00
|
|
|
public required Character PacMan { get; init; }
|
|
|
|
public required string Colour { get; init; }
|
2023-07-14 19:14:19 +02:00
|
|
|
public Box? Box { get; init; }
|
2023-07-01 18:54:59 +02:00
|
|
|
public State State { get; set; } = State.WaitingForPlayers;
|
2023-07-12 14:07:32 +02:00
|
|
|
|
|
|
|
public override bool Equals(object? obj)
|
|
|
|
{
|
|
|
|
if (ReferenceEquals(null, obj)) return false;
|
|
|
|
if (ReferenceEquals(this, obj)) return true;
|
|
|
|
return obj.GetType() == GetType() && Equals((Player)obj);
|
|
|
|
}
|
|
|
|
|
2023-07-19 16:03:43 +02:00
|
|
|
public override int GetHashCode() => UserName.GetHashCode();
|
2023-07-12 14:07:32 +02:00
|
|
|
}
|