Console client: Print player action.

This commit is contained in:
lotodore
2008-12-23 22:30:02 +00:00
parent 1548598944
commit 660168b8aa
11 changed files with 227 additions and 50 deletions
+18 -17
View File
@@ -23,23 +23,24 @@ using System.Text;
namespace pokerth_lib
{
interface INetPacketVisitor
public interface INetPacketVisitor
{
void VisitInit(NetPacketInit p);
void VisitInitAck(NetPacketInitAck p);
void VisitGameListNew(NetPacketGameListNew p);
void VisitGameListUpdate(NetPacketGameListUpdate p);
void VisitRetrievePlayerInfo(NetPacketRetrievePlayerInfo p);
void VisitPlayerInfo(NetPacketPlayerInfo p);
void VisitJoinGame(NetPacketJoinGame p);
void VisitJoinGameAck(NetPacketJoinGameAck p);
void VisitStartEvent(NetPacketStartEvent p);
void VisitStartEventAck(NetPacketStartEventAck p);
void VisitGameStart(NetPacketGameStart p);
void VisitHandStart(NetPacketHandStart p);
void VisitPlayersTurn(NetPacketPlayersTurn p);
void VisitPlayersAction(NetPacketPlayersAction p);
void VisitPlayersActionDone(NetPacketPlayersActionDone p);
void VisitPlayersActionRejected(NetPacketPlayersActionRejected p);
void VisitInit(NetPacket p);
void VisitInitAck(NetPacket p);
void VisitGameListNew(NetPacket p);
void VisitGameListUpdate(NetPacket p);
void VisitRetrievePlayerInfo(NetPacket p);
void VisitPlayerInfo(NetPacket p);
void VisitCreateGame(NetPacket p);
void VisitJoinGame(NetPacket p);
void VisitJoinGameAck(NetPacket p);
void VisitStartEvent(NetPacket p);
void VisitStartEventAck(NetPacket p);
void VisitGameStart(NetPacket p);
void VisitHandStart(NetPacket p);
void VisitPlayersTurn(NetPacket p);
void VisitPlayersAction(NetPacket p);
void VisitPlayersActionDone(NetPacket p);
void VisitPlayersActionRejected(NetPacket p);
}
}
+42 -7
View File
@@ -26,7 +26,7 @@ using System.IO;
namespace pokerth_lib
{
abstract class NetPacket
public abstract class NetPacket
{
public const int NetTypeInit = 0x0001;
public const int NetTypeInitAck = 0x0002;
@@ -133,7 +133,7 @@ namespace pokerth_lib
ActionRejectReason,
}
public enum ListPropertyType
public enum ListPropType
{
PlayerSlots,
ManualBlindSlots,
@@ -172,13 +172,16 @@ namespace pokerth_lib
case NetTypePlayersTurn :
tmpPacket = new NetPacketPlayersTurn(size, reader);
break;
case NetTypePlayersActionDone :
tmpPacket = new NetPacketPlayersActionDone(size, reader);
break;
default:
break;
}
return tmpPacket;
}
public void ScanGameInfoBlock(BinaryReader r)
protected void ScanGameInfoBlock(BinaryReader r)
{
Properties.Add(PropType.MaxNumPlayers,
Convert.ToString(IPAddress.NetworkToHostOrder((short)r.ReadUInt16())));
@@ -206,14 +209,46 @@ namespace pokerth_lib
List<string> blindSlots = new List<string>();
for (int i = 0; i < numManualBlinds; i++)
blindSlots.Add(Convert.ToString(IPAddress.NetworkToHostOrder((int)r.ReadUInt32())));
ListProperties.Add(ListPropertyType.ManualBlindSlots, blindSlots);
ListProperties.Add(ListPropType.ManualBlindSlots, blindSlots);
}
protected void WriteGameInfoBlock(BinaryWriter w)
{
w.Write(IPAddress.HostToNetworkOrder((short)
Convert.ToUInt16(Properties[PropType.MaxNumPlayers])));
w.Write(IPAddress.HostToNetworkOrder((short)
Convert.ToUInt16(Properties[PropType.RaiseIntervalMode])));
w.Write(IPAddress.HostToNetworkOrder((short)
Convert.ToUInt16(Properties[PropType.RaiseSmallBlindInterval])));
w.Write(IPAddress.HostToNetworkOrder((short)
Convert.ToUInt16(Properties[PropType.RaiseMode])));
w.Write(IPAddress.HostToNetworkOrder((short)
Convert.ToUInt16(Properties[PropType.EndRaiseMode])));
w.Write(IPAddress.HostToNetworkOrder((short)
ListProperties[ListPropType.ManualBlindSlots].Count));
w.Write(IPAddress.HostToNetworkOrder((short)
Convert.ToUInt16(Properties[PropType.ProposedGuiSpeed])));
w.Write(IPAddress.HostToNetworkOrder((short)
Convert.ToUInt16(Properties[PropType.PlayerActionTimeout])));
w.Write(IPAddress.HostToNetworkOrder((int)
Convert.ToUInt32(Properties[PropType.FirstSmallBlind])));
w.Write(IPAddress.HostToNetworkOrder((int)
Convert.ToUInt32(Properties[PropType.EndRaiseSmallBlindValue])));
w.Write(IPAddress.HostToNetworkOrder((int)
Convert.ToUInt32(Properties[PropType.StartMoney])));
foreach (string s in ListProperties[ListPropType.ManualBlindSlots])
{
w.Write(IPAddress.HostToNetworkOrder((int)
Convert.ToUInt32(s)));
}
}
public NetPacket(int type)
{
m_type = type;
m_properties = new Dictionary<PropType, string>();
m_listProperties = new Dictionary<ListPropertyType, List<string>>();
m_listProperties = new Dictionary<ListPropType, List<string>>();
}
public Dictionary<PropType, string> Properties
@@ -228,7 +263,7 @@ namespace pokerth_lib
}
}
public Dictionary<ListPropertyType, List<string>> ListProperties
public Dictionary<ListPropType, List<string>> ListProperties
{
set
{
@@ -259,6 +294,6 @@ namespace pokerth_lib
private int m_type;
private Dictionary<PropType, string> m_properties;
private Dictionary<ListPropertyType, List<string>> m_listProperties;
private Dictionary<ListPropType, List<string>> m_listProperties;
}
}
+1 -1
View File
@@ -23,7 +23,7 @@ using System.Text;
namespace pokerth_lib
{
class NetPacketException : Exception
public class NetPacketException : Exception
{
public NetPacketException(string message)
: base(message)
+1 -1
View File
@@ -98,7 +98,7 @@ namespace pokerth_lib
List<string> playerSlots = new List<string>();
for (int i = 0; i < curNumPlayers; i++)
playerSlots.Add(Convert.ToString(IPAddress.NetworkToHostOrder((int)r.ReadUInt32())));
ListProperties.Add(ListPropertyType.PlayerSlots, playerSlots);
ListProperties.Add(ListPropType.PlayerSlots, playerSlots);
}
public override void Accept(INetPacketVisitor visitor)
+1 -1
View File
@@ -58,7 +58,7 @@ namespace pokerth_lib
List<string> playerSlots = new List<string>();
for (int i = 0; i < curNumPlayers; i++)
playerSlots.Add(Convert.ToString(IPAddress.NetworkToHostOrder((int)r.ReadUInt32())));
ListProperties.Add(ListPropertyType.PlayerSlots, playerSlots);
ListProperties.Add(ListPropType.PlayerSlots, playerSlots);
}
public override void Accept(INetPacketVisitor visitor)
+48 -22
View File
@@ -32,31 +32,35 @@ namespace pokerth_lib
m_callback = callback;
}
public void VisitInit(NetPacketInit p)
public void VisitInit(NetPacket p)
{
throw new NotImplementedException();
}
public void VisitInitAck(NetPacketInitAck p)
public void VisitInitAck(NetPacket p)
{
m_data.MyPlayerId =
Convert.ToUInt32(p.Properties[NetPacket.PropType.PlayerId]);
// Add self to list.
m_data.PlayerList.AddPlayerInfo(new PlayerInfo(
m_data.MyPlayerId,
m_data.MyName));
m_callback.InitDone();
}
public void VisitGameListNew(NetPacketGameListNew p)
public void VisitGameListNew(NetPacket p)
{
// Add game to list.
m_data.GameList.AddGameInfo(new GameInfo(
Convert.ToUInt32(p.Properties[NetPacket.PropType.GameId]),
p.Properties[NetPacket.PropType.GameName],
(GameInfo.Mode)Convert.ToInt32(p.Properties[NetPacket.PropType.GameMode]),
p.ListProperties[NetPacket.ListPropertyType.PlayerSlots].
p.ListProperties[NetPacket.ListPropType.PlayerSlots].
ConvertAll<uint>(Convert.ToUInt32),
Convert.ToUInt32(p.Properties[NetPacket.PropType.StartMoney])));
}
public void VisitGameListUpdate(NetPacketGameListUpdate p)
public void VisitGameListUpdate(NetPacket p)
{
GameInfo.Mode mode =
(GameInfo.Mode)Convert.ToInt32(p.Properties[NetPacket.PropType.GameMode]);
@@ -67,12 +71,12 @@ namespace pokerth_lib
m_data.GameList.GetGameInfo(id).CurrentMode = mode;
}
public void VisitRetrievePlayerInfo(NetPacketRetrievePlayerInfo p)
public void VisitRetrievePlayerInfo(NetPacket p)
{
throw new NotImplementedException();
}
public void VisitPlayerInfo(NetPacketPlayerInfo p)
public void VisitPlayerInfo(NetPacket p)
{
// Add player to list.
m_data.PlayerList.AddPlayerInfo(new PlayerInfo(
@@ -80,19 +84,24 @@ namespace pokerth_lib
p.Properties[NetPacket.PropType.PlayerName]));
}
public void VisitJoinGame(NetPacketJoinGame p)
public void VisitCreateGame(NetPacket p)
{
throw new NotImplementedException();
}
public void VisitJoinGameAck(NetPacketJoinGameAck p)
public void VisitJoinGame(NetPacket p)
{
throw new NotImplementedException();
}
public void VisitJoinGameAck(NetPacket p)
{
m_data.MyGameId =
Convert.ToUInt32(p.Properties[NetPacket.PropType.GameId]);
m_callback.JoinedGame(m_data.GameList.GetGameInfo(m_data.MyGameId).Name);
}
public void VisitStartEvent(NetPacketStartEvent p)
public void VisitStartEvent(NetPacket p)
{
// Request player names for player ids.
List<uint> playerSlots = m_data.GameList.GetGameInfo(m_data.MyGameId).PlayerSlots;
@@ -110,17 +119,17 @@ namespace pokerth_lib
m_sender.Send(ack);
}
public void VisitStartEventAck(NetPacketStartEventAck p)
public void VisitStartEventAck(NetPacket p)
{
throw new NotImplementedException();
}
public void VisitGameStart(NetPacketGameStart p)
public void VisitGameStart(NetPacket p)
{
// Generate player list, for gui and as hand data.
List<string> strPlayers = new List<string>();
List<uint> slots = p.ListProperties[NetPacket.ListPropertyType.PlayerSlots].
List<uint> slots = p.ListProperties[NetPacket.ListPropType.PlayerSlots].
ConvertAll<uint>(Convert.ToUInt32);
m_players = new Dictionary<uint, Player>();
@@ -128,8 +137,6 @@ namespace pokerth_lib
{
if (m_data.PlayerList.HasPlayer(i))
strPlayers.Add(m_data.PlayerList.GetPlayerInfo(i).Name);
else if (i == m_data.MyPlayerId)
strPlayers.Add(m_data.MyName);
else
strPlayers.Add(Convert.ToString(i));
// Set player data.
@@ -141,7 +148,7 @@ namespace pokerth_lib
m_callback.GameStarted(strPlayers);
}
public void VisitHandStart(NetPacketHandStart p)
public void VisitHandStart(NetPacket p)
{
int[] tmpCards = new int[2];
tmpCards[0] =
@@ -156,22 +163,41 @@ namespace pokerth_lib
m_callback.HandStarted(m_data.CurHand);
}
public void VisitPlayersTurn(NetPacketPlayersTurn p)
public void VisitPlayersTurn(NetPacket p)
{
// TODO
uint curPlayer = Convert.ToUInt32(p.Properties[NetPacket.PropType.PlayerId]);
Hand.State state = (Hand.State)Convert.ToUInt16(p.Properties[NetPacket.PropType.GameState]);
if (curPlayer == m_data.MyPlayerId)
m_callback.MyTurn(state);
else
m_callback.PlayersTurn(state, m_data.PlayerList.GetPlayerInfo(curPlayer).Name);
}
public void VisitPlayersAction(NetPacketPlayersAction p)
public void VisitPlayersAction(NetPacket p)
{
throw new NotImplementedException();
}
public void VisitPlayersActionDone(NetPacketPlayersActionDone p)
public void VisitPlayersActionDone(NetPacket p)
{
// TODO
uint playerId = Convert.ToUInt32(p.Properties[NetPacket.PropType.PlayerId]);
Player curPlayer = m_data.CurHand.Players[playerId];
curPlayer.CurAction =
(Hand.Action)Convert.ToUInt16(p.Properties[NetPacket.PropType.PlayerAction]);
curPlayer.Money =
Convert.ToUInt32(p.Properties[NetPacket.PropType.PlayerMoney]);
curPlayer.TotalBet =
Convert.ToUInt32(p.Properties[NetPacket.PropType.PlayerBetTotal]);
m_callback.ActionDone(
m_data.PlayerList.GetPlayerInfo(playerId).Name,
curPlayer.CurAction,
curPlayer.TotalBet,
curPlayer.Money,
Convert.ToUInt32(p.Properties[NetPacket.PropType.HighestSet]),
Convert.ToUInt32(p.Properties[NetPacket.PropType.MinimumRaise]));
}
public void VisitPlayersActionRejected(NetPacketPlayersActionRejected p)
public void VisitPlayersActionRejected(NetPacket p)
{
// TODO
}