Console client: Display cards of player for each hand. Display server messages.

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