Console client: Display cards of player for each hand. Display server messages.
This commit is contained in:
@@ -42,6 +42,14 @@ namespace pokerth_console
|
||||
}
|
||||
}
|
||||
|
||||
public PlayerInfo GetPlayerInfo(uint id)
|
||||
{
|
||||
lock (m_list)
|
||||
{
|
||||
return m_list[id];
|
||||
}
|
||||
}
|
||||
|
||||
public bool HasPlayer(uint id)
|
||||
{
|
||||
lock (m_list)
|
||||
|
||||
@@ -25,13 +25,14 @@ namespace pokerth_console
|
||||
{
|
||||
class PokerTHData
|
||||
{
|
||||
public PokerTHData()
|
||||
public PokerTHData(string name)
|
||||
{
|
||||
m_gameInfoList = new GameInfoList();
|
||||
m_playerInfoList = new PlayerInfoList();
|
||||
m_mutex = new Object();
|
||||
m_myPlayerId = 0;
|
||||
m_myGameId = 0;
|
||||
m_myName = name;
|
||||
}
|
||||
|
||||
public GameInfoList GameList
|
||||
@@ -50,6 +51,14 @@ namespace pokerth_console
|
||||
}
|
||||
}
|
||||
|
||||
public string MyName
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_myName;
|
||||
}
|
||||
}
|
||||
|
||||
public uint MyPlayerId
|
||||
{
|
||||
get
|
||||
@@ -91,5 +100,6 @@ namespace pokerth_console
|
||||
private Object m_mutex;
|
||||
private uint m_myPlayerId;
|
||||
private uint m_myGameId;
|
||||
private string m_myName;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,11 +29,12 @@ namespace pokerth_console
|
||||
static int Main(string[] args)
|
||||
{
|
||||
Settings settings = new Settings();
|
||||
PokerTHData data = new PokerTHData();
|
||||
Client client = new Client(settings, data);
|
||||
PokerTHData data = new PokerTHData("Testuser1");
|
||||
ConsoleCallback callback = new ConsoleCallback();
|
||||
Client client = new Client(settings, data, callback);
|
||||
client.Connect();
|
||||
client.Start();
|
||||
Thread.Sleep(5000);
|
||||
Thread.Sleep(2000);
|
||||
Console.WriteLine("Open Games:");
|
||||
Console.Write(data.GameList.ToString());
|
||||
Console.WriteLine();
|
||||
@@ -41,7 +42,7 @@ namespace pokerth_console
|
||||
string input = Console.ReadLine();
|
||||
uint gameId = Convert.ToUInt32(input);
|
||||
client.JoinGame(gameId);
|
||||
Thread.Sleep(5000000);
|
||||
input = Console.ReadLine();
|
||||
client.SetTerminateFlag();
|
||||
client.WaitTermination();
|
||||
return 0;
|
||||
|
||||
@@ -27,22 +27,23 @@ namespace pokerth_console
|
||||
{
|
||||
class Client
|
||||
{
|
||||
public Client(Settings settings, PokerTHData data)
|
||||
public Client(Settings settings, PokerTHData data, ICallback callback)
|
||||
{
|
||||
m_tcpClient = new TcpClient();
|
||||
m_settings = settings;
|
||||
m_data = data;
|
||||
m_callback = callback;
|
||||
}
|
||||
|
||||
public void Connect()
|
||||
{
|
||||
// Connect to the server.
|
||||
// Try IPv6 first.
|
||||
IPAddress[] addresses = new IPAddress[2];
|
||||
/*IPAddress[] addresses = new IPAddress[2];
|
||||
addresses[0] = IPAddress.Parse(m_settings.ServerSettings.IPv6Address);
|
||||
addresses[1] = IPAddress.Parse(m_settings.ServerSettings.IPv4Address);
|
||||
m_tcpClient.Connect(addresses, m_settings.ServerSettings.Port);
|
||||
//m_tcpClient.Connect("localhost", 7234);
|
||||
m_tcpClient.Connect(addresses, m_settings.ServerSettings.Port);*/
|
||||
m_tcpClient.Connect("localhost", 7234);
|
||||
}
|
||||
|
||||
public void Start()
|
||||
@@ -71,7 +72,7 @@ namespace pokerth_console
|
||||
|
||||
protected void StartReceiveThread()
|
||||
{
|
||||
m_receiver = new ReceiverThread(m_tcpClient.GetStream(), m_sender, m_data);
|
||||
m_receiver = new ReceiverThread(m_tcpClient.GetStream(), m_sender, m_data, m_callback);
|
||||
m_receiver.Run();
|
||||
}
|
||||
|
||||
@@ -86,7 +87,7 @@ namespace pokerth_console
|
||||
NetPacket init = new NetPacketInit();
|
||||
init.Properties.Add(NetPacket.PropertyType.RequestedVersionMajor, "5");
|
||||
init.Properties.Add(NetPacket.PropertyType.RequestedVersionMinor, "0");
|
||||
init.Properties.Add(NetPacket.PropertyType.PlayerName, "Testuser1");
|
||||
init.Properties.Add(NetPacket.PropertyType.PlayerName, m_data.MyName);
|
||||
init.Properties.Add(NetPacket.PropertyType.PlayerPassword, "");
|
||||
m_sender.Send(init);
|
||||
}
|
||||
@@ -104,5 +105,6 @@ namespace pokerth_console
|
||||
private SenderThread m_sender;
|
||||
private Settings m_settings;
|
||||
private PokerTHData m_data;
|
||||
private ICallback m_callback;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,10 +25,11 @@ namespace pokerth_console
|
||||
{
|
||||
class NetParser : INetPacketVisitor
|
||||
{
|
||||
public NetParser(PokerTHData data, SenderThread sender)
|
||||
public NetParser(PokerTHData data, SenderThread sender, ICallback callback)
|
||||
{
|
||||
m_data = data;
|
||||
m_sender = sender;
|
||||
m_callback = callback;
|
||||
}
|
||||
|
||||
public void VisitInit(NetPacketInit p)
|
||||
@@ -40,6 +41,7 @@ namespace pokerth_console
|
||||
{
|
||||
m_data.MyPlayerId =
|
||||
Convert.ToUInt32(p.Properties[NetPacket.PropertyType.PlayerId]);
|
||||
m_callback.InitDone();
|
||||
}
|
||||
|
||||
public void VisitGameListNew(NetPacketGameListNew p)
|
||||
@@ -86,6 +88,7 @@ namespace pokerth_console
|
||||
{
|
||||
m_data.MyGameId =
|
||||
Convert.ToUInt32(p.Properties[NetPacket.PropertyType.GameId]);
|
||||
m_callback.JoinedGame(m_data.GameList.GetGameInfo(m_data.MyGameId).Name);
|
||||
}
|
||||
|
||||
public void VisitStartEvent(NetPacketStartEvent p)
|
||||
@@ -113,41 +116,53 @@ namespace pokerth_console
|
||||
|
||||
public void VisitGameStart(NetPacketGameStart p)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
// TODO
|
||||
// Generate player list.
|
||||
List<string> players = new List<string>();
|
||||
|
||||
List<uint> slots = p.ListProperties[NetPacket.ListPropertyType.PropPlayerSlots].
|
||||
ConvertAll<uint>(Convert.ToUInt32);
|
||||
foreach (uint i in slots)
|
||||
{
|
||||
if (m_data.PlayerList.HasPlayer(i))
|
||||
players.Add(m_data.PlayerList.GetPlayerInfo(i).Name);
|
||||
else if (i == m_data.MyPlayerId)
|
||||
players.Add(m_data.MyName);
|
||||
else
|
||||
players.Add(Convert.ToString(i));
|
||||
}
|
||||
|
||||
m_callback.GameStarted(players);
|
||||
}
|
||||
|
||||
public void VisitHandStart(NetPacketHandStart p)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
// TODO
|
||||
m_callback.HandStarted(
|
||||
Convert.ToInt32(p.Properties[NetPacket.PropertyType.FirstCard]),
|
||||
Convert.ToInt32(p.Properties[NetPacket.PropertyType.SecondCard]));
|
||||
}
|
||||
|
||||
public void VisitPlayersTurn(NetPacketPlayersTurn p)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
// TODO
|
||||
}
|
||||
|
||||
public void VisitPlayersAction(NetPacketPlayersAction p)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
// TODO
|
||||
}
|
||||
|
||||
public void VisitPlayersActionDone(NetPacketPlayersActionDone p)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
// TODO
|
||||
}
|
||||
|
||||
public void VisitPlayersActionRejected(NetPacketPlayersActionRejected p)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
// TODO
|
||||
}
|
||||
|
||||
private PokerTHData m_data;
|
||||
private SenderThread m_sender;
|
||||
private ICallback m_callback;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,14 +32,14 @@ namespace pokerth_console
|
||||
const uint MaxPacketSize = 268;
|
||||
const uint MinPacketSize = 8;
|
||||
|
||||
public ReceiverThread(NetworkStream stream, SenderThread sender, PokerTHData data)
|
||||
public ReceiverThread(NetworkStream stream, SenderThread sender, PokerTHData data, ICallback callback)
|
||||
: base(stream)
|
||||
{
|
||||
m_recBuf = new byte[8192];
|
||||
m_recBufOffset = 0;
|
||||
m_packetList = new List<NetPacket>();
|
||||
m_sender = sender;
|
||||
m_parser = new NetParser(data, sender);
|
||||
m_parser = new NetParser(data, sender, callback);
|
||||
}
|
||||
|
||||
protected override void Start()
|
||||
|
||||
Reference in New Issue
Block a user