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)
{
lock (m_list)
+11 -1
View File
@@ -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;
}
}
+5 -4
View File
@@ -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;
+8 -6
View File
@@ -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;
}
}
+24 -9
View File
@@ -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;
}
}
+2 -2
View File
@@ -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()