Network: First round seems to work fine now. Pot/sets not yet displayed correctly.

This commit is contained in:
lotodore
2007-05-24 20:26:23 +00:00
parent 69ab45c902
commit 5431f0b93a
19 changed files with 233 additions and 147 deletions
+3 -3
View File
@@ -163,7 +163,7 @@ Client Reply/Request: Player's Action
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Game State | Player Action | | Game State | Player Action |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Player Bet | | Player Bet (additional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
[ Game State is confirmed to ensure consistency. ] [ Game State is confirmed to ensure consistency. ]
@@ -190,9 +190,9 @@ Server Notification: Player's Action Done
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Player Action | Reserved | | Player Action | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Player Bet | | Total Player Bet |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Current Player Money | | Player Money |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pot Size | | Pot Size |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+1 -1
View File
@@ -28,7 +28,7 @@
using namespace std; using namespace std;
LocalPlayer::LocalPlayer(ConfigFile *c, BoardInterface *b, int id, unsigned uniqueId, PlayerType type, std::string name, std::string avatar, int sC, bool aS, int mB) LocalPlayer::LocalPlayer(ConfigFile *c, BoardInterface *b, int id, unsigned uniqueId, PlayerType type, std::string name, std::string avatar, int sC, bool aS, int mB)
: PlayerInterface(), myConfig(c), actualHand(0), actualBoard(b), myCardsValue(0), myID(id), myUniqueID(uniqueId), myType(type), myName(name), myAvatar(avatar), myDude(0), myDude4(0), myCardsValueInt(0), myOdds(-1.0), myCash(sC), mySet(0), myAction(0), myButton(mB), myActiveStatus(aS), myTurn(0), myRoundStartCash(0), sBluff(0), sBluffStatus(0) : PlayerInterface(), myConfig(c), actualHand(0), actualBoard(b), myCardsValue(0), myID(id), myUniqueID(uniqueId), myType(type), myName(name), myAvatar(avatar), myDude(0), myDude4(0), myCardsValueInt(0), myOdds(-1.0), myCash(sC), mySet(0), myLastRelativeSet(0), myAction(0), myButton(mB), myActiveStatus(aS), myTurn(0), myRoundStartCash(0), sBluff(0), sBluffStatus(0)
{ {
// for statistic development // for statistic development
+13 -10
View File
@@ -43,10 +43,10 @@ public:
unsigned getMyUniqueID() const { return myUniqueID; } unsigned getMyUniqueID() const { return myUniqueID; }
PlayerType getMyType() const { return myType; } PlayerType getMyType() const { return myType; }
void setMyDude(const int& theValue) { myDude = theValue; } void setMyDude(int theValue) { myDude = theValue; }
int getMyDude() const { return myDude; } int getMyDude() const { return myDude; }
void setMyDude4(const int& theValue) { myDude4 = theValue; } void setMyDude4(int theValue) { myDude4 = theValue; }
int getMyDude4() const { return myDude4; } int getMyDude4() const { return myDude4; }
void setMyName(const std::string& theValue) { myName = theValue; } void setMyName(const std::string& theValue) { myName = theValue; }
@@ -55,17 +55,19 @@ public:
void setMyAvatar(const std::string& theValue) { myAvatar = theValue; } void setMyAvatar(const std::string& theValue) { myAvatar = theValue; }
std::string getMyAvatar() const { return myAvatar; } std::string getMyAvatar() const { return myAvatar; }
void setMyCash(const int& theValue) { myCash = theValue; } void setMyCash(int theValue) { myCash = theValue; }
int getMyCash() const { return myCash; } int getMyCash() const { return myCash; }
void setMySet(const int& theValue) { mySet += theValue; myCash -= theValue; } void setMySet(int theValue) { myLastRelativeSet = theValue; mySet += theValue; myCash -= theValue; }
void setMySetAbsolute(int theValue) { mySet = theValue; }
void setMySetNull() { mySet = 0; } void setMySetNull() { mySet = 0; }
int getMySet() const { return mySet;} int getMySet() const { return mySet;}
int getMyLastRelativeSet() const { return myLastRelativeSet; }
void setMyAction(const int& theValue) { myAction = theValue; } void setMyAction(int theValue) { myAction = theValue; }
int getMyAction() const { return myAction; } int getMyAction() const { return myAction; }
void setMyButton(const int& theValue) { myButton = theValue; } void setMyButton(int theValue) { myButton = theValue; }
int getMyButton() const { return myButton; } int getMyButton() const { return myButton; }
void setMyActiveStatus(bool theValue) { myActiveStatus = theValue; } void setMyActiveStatus(bool theValue) { myActiveStatus = theValue; }
@@ -80,18 +82,18 @@ public:
void setMyCardsFlip(bool theValue){ myCardsFlip = theValue;} void setMyCardsFlip(bool theValue){ myCardsFlip = theValue;}
bool getMyCardsFlip() const{ return myCardsFlip;} bool getMyCardsFlip() const{ return myCardsFlip;}
void setMyCardsValueInt(const int& theValue) { myCardsValueInt = theValue;} void setMyCardsValueInt(int theValue) { myCardsValueInt = theValue;}
int getMyCardsValueInt() const { return myCardsValueInt; } int getMyCardsValueInt() const { return myCardsValueInt; }
int* getMyBestHandPosition() { return myBestHandPosition; } int* getMyBestHandPosition() { return myBestHandPosition; }
void setMyRoundStartCash(const int& theValue) { myRoundStartCash = theValue;} void setMyRoundStartCash(int theValue) { myRoundStartCash = theValue;}
int getMyRoundStartCash() const { return myRoundStartCash; } int getMyRoundStartCash() const { return myRoundStartCash; }
void setMyAverageSets(const int& theValue) { myAverageSets[0] = myAverageSets[1]; myAverageSets[1] = myAverageSets[2]; myAverageSets[2] = myAverageSets[3]; myAverageSets[3] = theValue; } void setMyAverageSets(int theValue) { myAverageSets[0] = myAverageSets[1]; myAverageSets[1] = myAverageSets[2]; myAverageSets[2] = myAverageSets[3]; myAverageSets[3] = theValue; }
int getMyAverageSets() const { return (myAverageSets[0]+myAverageSets[1]+myAverageSets[2]+myAverageSets[3])/4; } int getMyAverageSets() const { return (myAverageSets[0]+myAverageSets[1]+myAverageSets[2]+myAverageSets[3])/4; }
void setMyAggressive(const bool& theValue) { void setMyAggressive(bool theValue) {
int i; int i;
for(i=0; i<6; i++) { for(i=0; i<6; i++) {
myAggressive[i] = myAggressive[i+1]; myAggressive[i] = myAggressive[i+1];
@@ -162,6 +164,7 @@ private:
int myCards[2]; int myCards[2];
int myCash; int myCash;
int mySet; int mySet;
int myLastRelativeSet;
int myAction; // 0 = none, 1 = fold, 2 = check, 3 = call, 4 = bet, 5 = raise, 6 = allin int myAction; // 0 = none, 1 = fold, 2 = check, 3 = call, 4 = bet, 5 = raise, 6 = allin
int myButton; // 0 = none, 1 = dealer, 2 =small, 3 = big int myButton; // 0 = none, 1 = dealer, 2 =small, 3 = big
bool myActiveStatus; // 0 = inactive, 1 = active bool myActiveStatus; // 0 = inactive, 1 = active
+5 -5
View File
@@ -51,11 +51,11 @@ ClientHand::ClientHand(boost::shared_ptr<EngineFactory> f, GuiInterface *g, Boar
// the rest of the buttons are assigned later as received from the server. // the rest of the buttons are assigned later as received from the server.
// Preflop, Flop, Turn und River erstellen // Preflop, Flop, Turn und River erstellen
myPreflop = myFactory->createPreflop(this, myID, actualQuantityPlayers, dealerPosition, smallBlind); myPreflop = myFactory->createPreflop(this, myID, actualQuantityPlayers, dealerPosition, smallBlind);
myFlop = myFactory->createFlop(this, myID, actualQuantityPlayers, dealerPosition, smallBlind); myFlop = myFactory->createFlop(this, myID, actualQuantityPlayers, dealerPosition, smallBlind);
myTurn = myFactory->createTurn(this, myID, actualQuantityPlayers, dealerPosition, smallBlind); myTurn = myFactory->createTurn(this, myID, actualQuantityPlayers, dealerPosition, smallBlind);
myRiver = myFactory->createRiver(this, myID, actualQuantityPlayers, dealerPosition, smallBlind); myRiver = myFactory->createRiver(this, myID, actualQuantityPlayers, dealerPosition, smallBlind);
} }
+1 -1
View File
@@ -23,7 +23,7 @@ using namespace std;
ClientPlayer::ClientPlayer(ConfigFile *c, BoardInterface *b, int id, unsigned uniqueId, PlayerType type, std::string name, std::string avatar, int sC, bool aS, int mB) ClientPlayer::ClientPlayer(ConfigFile *c, BoardInterface *b, int id, unsigned uniqueId, PlayerType type, std::string name, std::string avatar, int sC, bool aS, int mB)
: PlayerInterface(), myConfig(c), actualHand(0), actualBoard(b), myCardsValue(0), myID(id), myUniqueID(uniqueId), myType(type), myName(name), myAvatar(avatar), myDude(0), myDude4(0), myCardsValueInt(0), myOdds(-1.0), myCash(sC), mySet(0), myAction(0), myButton(mB), myActiveStatus(aS), myTurn(0), myRoundStartCash(0), sBluff(0), sBluffStatus(0) : PlayerInterface(), myConfig(c), actualHand(0), actualBoard(b), myCardsValue(0), myID(id), myUniqueID(uniqueId), myType(type), myName(name), myAvatar(avatar), myDude(0), myDude4(0), myCardsValueInt(0), myOdds(-1.0), myCash(sC), mySet(0), myLastRelativeSet(0), myAction(0), myButton(mB), myActiveStatus(aS), myTurn(0), myRoundStartCash(0), sBluff(0), sBluffStatus(0)
{ {
} }
+15 -12
View File
@@ -41,10 +41,10 @@ public:
unsigned getMyUniqueID() const { return myUniqueID; } unsigned getMyUniqueID() const { return myUniqueID; }
PlayerType getMyType() const { return myType; } PlayerType getMyType() const { return myType; }
void setMyDude(const int& theValue) { myDude = theValue; } void setMyDude(int theValue) { myDude = theValue; }
int getMyDude() const { return myDude; } int getMyDude() const { return myDude; }
void setMyDude4(const int& theValue) { myDude4 = theValue; } void setMyDude4(int theValue) { myDude4 = theValue; }
int getMyDude4() const { return myDude4; } int getMyDude4() const { return myDude4; }
void setMyName(const std::string& theValue) { myName = theValue; } void setMyName(const std::string& theValue) { myName = theValue; }
@@ -53,17 +53,19 @@ public:
void setMyAvatar(const std::string& theValue) { myAvatar = theValue; } void setMyAvatar(const std::string& theValue) { myAvatar = theValue; }
std::string getMyAvatar() const { return myAvatar; } std::string getMyAvatar() const { return myAvatar; }
void setMyCash(const int& theValue) { myCash = theValue; } void setMyCash(int theValue) { myCash = theValue; }
int getMyCash() const { return myCash; } int getMyCash() const { return myCash; }
void setMySet(const int& theValue) { mySet += theValue; myCash -= theValue; } void setMySet(int theValue) { myLastRelativeSet = theValue; mySet += theValue; myCash -= theValue; }
void setMySetNull() { mySet = 0; } void setMySetAbsolute(int theValue) { mySet = theValue; }
int getMySet() const { return mySet;} void setMySetNull() { mySet = 0; }
int getMySet() const { return mySet;}
int getMyLastRelativeSet() const { return myLastRelativeSet; }
void setMyAction(const int& theValue) { myAction = theValue; } void setMyAction(int theValue) { myAction = theValue; }
int getMyAction() const { return myAction; } int getMyAction() const { return myAction; }
void setMyButton(const int& theValue) { myButton = theValue; } void setMyButton(int theValue) { myButton = theValue; }
int getMyButton() const { return myButton; } int getMyButton() const { return myButton; }
void setMyActiveStatus(bool theValue) { myActiveStatus = theValue; } void setMyActiveStatus(bool theValue) { myActiveStatus = theValue; }
@@ -78,18 +80,18 @@ public:
void setMyCardsFlip(bool theValue){ myCardsFlip = theValue;} void setMyCardsFlip(bool theValue){ myCardsFlip = theValue;}
bool getMyCardsFlip() const{ return myCardsFlip;} bool getMyCardsFlip() const{ return myCardsFlip;}
void setMyCardsValueInt(const int& theValue) { myCardsValueInt = theValue;} void setMyCardsValueInt(int theValue) { myCardsValueInt = theValue;}
int getMyCardsValueInt() const { return myCardsValueInt; } int getMyCardsValueInt() const { return myCardsValueInt; }
int* getMyBestHandPosition() { return myBestHandPosition; } int* getMyBestHandPosition() { return myBestHandPosition; }
void setMyRoundStartCash(const int& theValue) { myRoundStartCash = theValue;} void setMyRoundStartCash(int theValue) { myRoundStartCash = theValue;}
int getMyRoundStartCash() const { return myRoundStartCash; } int getMyRoundStartCash() const { return myRoundStartCash; }
void setMyAverageSets(const int& theValue) { myAverageSets[0] = myAverageSets[1]; myAverageSets[1] = myAverageSets[2]; myAverageSets[2] = myAverageSets[3]; myAverageSets[3] = theValue; } void setMyAverageSets(int theValue) { myAverageSets[0] = myAverageSets[1]; myAverageSets[1] = myAverageSets[2]; myAverageSets[2] = myAverageSets[3]; myAverageSets[3] = theValue; }
int getMyAverageSets() const { return (myAverageSets[0]+myAverageSets[1]+myAverageSets[2]+myAverageSets[3])/4; } int getMyAverageSets() const { return (myAverageSets[0]+myAverageSets[1]+myAverageSets[2]+myAverageSets[3])/4; }
void setMyAggressive(const bool& theValue) { void setMyAggressive(bool theValue) {
int i; int i;
for(i=0; i<6; i++) { for(i=0; i<6; i++) {
myAggressive[i] = myAggressive[i+1]; myAggressive[i] = myAggressive[i+1];
@@ -160,6 +162,7 @@ private:
int myCards[2]; int myCards[2];
int myCash; int myCash;
int mySet; int mySet;
int myLastRelativeSet;
int myAction; // 0 = none, 1 = fold, 2 = check, 3 = call, 4 = bet, 5 = raise, 6 = allin int myAction; // 0 = none, 1 = fold, 2 = check, 3 = call, 4 = bet, 5 = raise, 6 = allin
int myButton; // 0 = none, 1 = dealer, 2 =small, 3 = big int myButton; // 0 = none, 1 = dealer, 2 =small, 3 = big
bool myActiveStatus; // 0 = inactive, 1 = active bool myActiveStatus; // 0 = inactive, 1 = active
+12 -10
View File
@@ -38,10 +38,10 @@ public:
virtual unsigned getMyUniqueID() const =0; virtual unsigned getMyUniqueID() const =0;
virtual PlayerType getMyType() const =0; virtual PlayerType getMyType() const =0;
virtual void setMyDude(const int& theValue) =0; virtual void setMyDude(int theValue) =0;
virtual int getMyDude() const =0; virtual int getMyDude() const =0;
virtual void setMyDude4(const int& theValue) =0; virtual void setMyDude4(int theValue) =0;
virtual int getMyDude4() const =0; virtual int getMyDude4() const =0;
virtual void setMyName(const std::string& theValue) =0; virtual void setMyName(const std::string& theValue) =0;
@@ -50,17 +50,19 @@ public:
virtual void setMyAvatar(const std::string& theValue) =0; virtual void setMyAvatar(const std::string& theValue) =0;
virtual std::string getMyAvatar() const =0; virtual std::string getMyAvatar() const =0;
virtual void setMyCash(const int& theValue) =0; virtual void setMyCash(int theValue) =0;
virtual int getMyCash() const =0; virtual int getMyCash() const =0;
virtual void setMySet(const int& theValue) =0; virtual void setMySet(int theValue) =0;
virtual void setMySetAbsolute(int theValue) =0;
virtual void setMySetNull() =0; virtual void setMySetNull() =0;
virtual int getMySet() const =0; virtual int getMySet() const =0;
virtual int getMyLastRelativeSet() const =0;
virtual void setMyAction(const int& theValue) =0; virtual void setMyAction(int theValue) =0;
virtual int getMyAction() const =0; virtual int getMyAction() const =0;
virtual void setMyButton(const int& theValue) =0; virtual void setMyButton(int theValue) =0;
virtual int getMyButton() const =0; virtual int getMyButton() const =0;
virtual void setMyActiveStatus(bool theValue) =0; virtual void setMyActiveStatus(bool theValue) =0;
@@ -75,18 +77,18 @@ public:
virtual void setMyCardsFlip(bool theValue) =0; virtual void setMyCardsFlip(bool theValue) =0;
virtual bool getMyCardsFlip() const =0; virtual bool getMyCardsFlip() const =0;
virtual void setMyCardsValueInt(const int& theValue) =0; virtual void setMyCardsValueInt(int theValue) =0;
virtual int getMyCardsValueInt() const =0; virtual int getMyCardsValueInt() const =0;
virtual int* getMyBestHandPosition() =0; virtual int* getMyBestHandPosition() =0;
virtual void setMyRoundStartCash(const int& theValue) =0; virtual void setMyRoundStartCash(int theValue) =0;
virtual int getMyRoundStartCash() const =0; virtual int getMyRoundStartCash() const =0;
virtual void setMyAverageSets(const int& theValue) =0; virtual void setMyAverageSets(int theValue) =0;
virtual int getMyAverageSets() const =0; virtual int getMyAverageSets() const =0;
virtual void setMyAggressive(const bool& theValue) =0; virtual void setMyAggressive(bool theValue) =0;
virtual int getMyAggressive() const =0; virtual int getMyAggressive() const =0;
virtual void setSBluff ( int theValue ) =0; virtual void setSBluff ( int theValue ) =0;
+13 -7
View File
@@ -1485,7 +1485,7 @@ void mainWindowImpl::myFold(){
statusBar()->clearMessage(); statusBar()->clearMessage();
//Spiel läuft weiter //Spiel läuft weiter
nextPlayerAnimation(); myActionDone();
} }
void mainWindowImpl::myCheck() { void mainWindowImpl::myCheck() {
@@ -1504,7 +1504,7 @@ void mainWindowImpl::myCheck() {
statusBar()->clearMessage(); statusBar()->clearMessage();
//Spiel läuft weiter //Spiel läuft weiter
nextPlayerAnimation(); myActionDone();
} }
void mainWindowImpl::myCall(){ void mainWindowImpl::myCall(){
@@ -1550,7 +1550,7 @@ void mainWindowImpl::myCall(){
statusBar()->clearMessage(); statusBar()->clearMessage();
//Spiel läuft weiter //Spiel läuft weiter
nextPlayerAnimation(); myActionDone();
} }
void mainWindowImpl::myBet(){ void mainWindowImpl::myBet(){
@@ -1648,7 +1648,7 @@ void mainWindowImpl::mySet(){
currentHand->setLastPlayersTurn(0); currentHand->setLastPlayersTurn(0);
//Spiel läuft weiter //Spiel läuft weiter
nextPlayerAnimation(); myActionDone();
} }
void mainWindowImpl::myAllIn(){ void mainWindowImpl::myAllIn(){
@@ -1686,14 +1686,20 @@ void mainWindowImpl::myAllIn(){
currentHand->setLastPlayersTurn(0); currentHand->setLastPlayersTurn(0);
//Spiel läuft weiter //Spiel läuft weiter
myActionDone();
}
void mainWindowImpl::myActionDone() {
// If a network client is running, we need
// to transfer the action to the server.
mySession->sendClientPlayerAction();
nextPlayerAnimation(); nextPlayerAnimation();
} }
void mainWindowImpl::nextPlayerAnimation() { void mainWindowImpl::nextPlayerAnimation() {
// TODO ugliest hack ever
mySession->sendClientPlayerAction();
HandInterface *currentHand = mySession->getCurrentGame()->getCurrentHand(); HandInterface *currentHand = mySession->getCurrentGame()->getCurrentHand();
//refresh Change Player //refresh Change Player
+2
View File
@@ -159,6 +159,8 @@ public slots:
void myRaise(); void myRaise();
void myAllIn(); void myAllIn();
void myActionDone();
void dealFlopCards0(); void dealFlopCards0();
void dealFlopCards1(); void dealFlopCards1();
void dealFlopCards2(); void dealFlopCards2();
+18
View File
@@ -219,6 +219,24 @@ protected:
ClientStateWaitHand(); ClientStateWaitHand();
}; };
// State: Hand Loop.
class ClientStateRunHand : public ClientState
{
public:
// Access the state singleton.
static ClientStateRunHand &Instance();
virtual ~ClientStateRunHand();
// select on socket.
virtual int Process(ClientThread &client);
protected:
// Protected constructor - this is a singleton.
ClientStateRunHand();
};
// State: Final (TODO). // State: Final (TODO).
class ClientStateFinal : public ClientState class ClientStateFinal : public ClientState
{ {
+1
View File
@@ -114,6 +114,7 @@ friend class ClientStateStartSession;
friend class ClientStateWaitSession; friend class ClientStateWaitSession;
friend class ClientStateWaitGame; friend class ClientStateWaitGame;
friend class ClientStateWaitHand; friend class ClientStateWaitHand;
friend class ClientStateRunHand;
friend class ClientStateFinal; friend class ClientStateFinal;
}; };
+73 -12
View File
@@ -498,16 +498,18 @@ ClientStateWaitHand::~ClientStateWaitHand()
int int
ClientStateWaitHand::Process(ClientThread &client) ClientStateWaitHand::Process(ClientThread &client)
{ {
int retVal = MSG_SOCK_INTERNAL_PENDING;
ClientContext &context = client.GetContext(); ClientContext &context = client.GetContext();
// delegate to receiver helper class // Delegate to receiver helper class.
boost::shared_ptr<NetPacket> tmpPacket = client.GetReceiver().Recv(context.GetSocket()); boost::shared_ptr<NetPacket> tmpPacket = client.GetReceiver().Recv(context.GetSocket());
if (tmpPacket.get()) if (tmpPacket.get())
{ {
// TODO: Hack
if (tmpPacket->ToNetPacketHandStart()) if (tmpPacket->ToNetPacketHandStart())
{ {
// Hand was started.
// These are the cards. Good luck.
NetPacketHandStart::Data tmpData; NetPacketHandStart::Data tmpData;
tmpPacket->ToNetPacketHandStart()->GetData(tmpData); tmpPacket->ToNetPacketHandStart()->GetData(tmpData);
int myCards[2]; int myCards[2];
@@ -517,12 +519,48 @@ ClientStateWaitHand::Process(ClientThread &client)
client.GetGame()->initHand(); client.GetGame()->initHand();
client.GetGame()->startHand(); client.GetGame()->startHand();
client.GetGui().dealHoleCards(); client.GetGui().dealHoleCards();
client.SetState(ClientStateRunHand::Instance());
retVal = MSG_NET_GAME_CLIENT_HAND;
} }
else if (tmpPacket->ToNetPacketPlayersActionDone()) }
return MSG_SOCK_INTERNAL_PENDING;
}
//-----------------------------------------------------------------------------
ClientStateRunHand &
ClientStateRunHand::Instance()
{
static ClientStateRunHand state;
return state;
}
ClientStateRunHand::ClientStateRunHand()
{
}
ClientStateRunHand::~ClientStateRunHand()
{
}
int
ClientStateRunHand::Process(ClientThread &client)
{
ClientContext &context = client.GetContext();
// Delegate to receiver helper class.
boost::shared_ptr<NetPacket> tmpPacket = client.GetReceiver().Recv(context.GetSocket());
if (tmpPacket.get())
{
boost::shared_ptr<Game> curGame = client.GetGame();
if (tmpPacket->ToNetPacketPlayersActionDone())
{ {
NetPacketPlayersActionDone::Data actionDoneData; NetPacketPlayersActionDone::Data actionDoneData;
tmpPacket->ToNetPacketPlayersActionDone()->GetData(actionDoneData); tmpPacket->ToNetPacketPlayersActionDone()->GetData(actionDoneData);
PlayerInterface *tmpPlayer = client.GetGame()->getPlayerByUniqueId(actionDoneData.playerId); PlayerInterface *tmpPlayer = curGame->getPlayerByUniqueId(actionDoneData.playerId);
assert(tmpPlayer); // TODO: throw exception assert(tmpPlayer); // TODO: throw exception
if (actionDoneData.gameState == GAME_STATE_PREFLOP_SMALL_BLIND) if (actionDoneData.gameState == GAME_STATE_PREFLOP_SMALL_BLIND)
@@ -531,10 +569,10 @@ ClientStateWaitHand::Process(ClientThread &client)
tmpPlayer->setMyButton(BUTTON_BIG_BLIND); tmpPlayer->setMyButton(BUTTON_BIG_BLIND);
tmpPlayer->setMyAction(actionDoneData.playerAction); tmpPlayer->setMyAction(actionDoneData.playerAction);
tmpPlayer->setMySet(actionDoneData.playerBet); tmpPlayer->setMySetAbsolute(actionDoneData.totalPlayerBet);
//assert(tmpPlayer->getMyCash() == actionDoneData.curPlayerMoney); // TODO: throw exception tmpPlayer->setMyCash(actionDoneData.playerMoney);
client.GetGame()->getCurrentHand()->getBoard()->setPot(actionDoneData.potSize); curGame->getCurrentHand()->getBoard()->setPot(actionDoneData.potSize);
client.GetGame()->getCurrentHand()->getBoard()->setSets(actionDoneData.curHandBets); curGame->getCurrentHand()->getBoard()->setSets(actionDoneData.curHandBets);
client.GetGui().refreshSet(); client.GetGui().refreshSet();
client.GetGui().refreshPot(); client.GetGui().refreshPot();
client.GetGui().refreshAction(); client.GetGui().refreshAction();
@@ -543,13 +581,36 @@ ClientStateWaitHand::Process(ClientThread &client)
{ {
NetPacketPlayersTurn::Data turnData; NetPacketPlayersTurn::Data turnData;
tmpPacket->ToNetPacketPlayersTurn()->GetData(turnData); tmpPacket->ToNetPacketPlayersTurn()->GetData(turnData);
PlayerInterface *tmpPlayer = client.GetGame()->getPlayerByUniqueId(turnData.playerId); PlayerInterface *tmpPlayer = curGame->getPlayerByUniqueId(turnData.playerId);
assert(tmpPlayer); // TODO: throw exception assert(tmpPlayer); // TODO: throw exception
if (tmpPlayer->getMyID() == 0) // Is this the GUI player? // Set round.
{ curGame->getCurrentHand()->setActualRound(turnData.gameState);
client.GetGui().meInAction();
// Next player's turn.
// TODO: no switch needed here if game states are polymorphic
switch(turnData.gameState) {
case GAME_STATE_PREFLOP: {
curGame->getCurrentHand()->getPreflop()->setPlayersTurn(tmpPlayer->getMyID());
} break;
case GAME_STATE_FLOP: {
curGame->getCurrentHand()->getFlop()->setPlayersTurn(tmpPlayer->getMyID());
} break;
case GAME_STATE_TURN: {
curGame->getCurrentHand()->getTurn()->setPlayersTurn(tmpPlayer->getMyID());
} break;
case GAME_STATE_RIVER: {
curGame->getCurrentHand()->getRiver()->setPlayersTurn(tmpPlayer->getMyID());
} break;
default: {
//
}
} }
client.GetGui().nextPlayerAnimation();
if (tmpPlayer->getMyID() == 0) // Is this the GUI player?
client.GetGui().meInAction();
} }
} }
+6 -5
View File
@@ -84,14 +84,15 @@ ClientThread::Init(
void void
ClientThread::SendPlayerAction() ClientThread::SendPlayerAction()
{ {
// TODO: ugly hack // Warning: This function is called in the context of the GUI thread.
// Create a network packet containing the current player action.
boost::shared_ptr<NetPacket> action(new NetPacketPlayersAction); boost::shared_ptr<NetPacket> action(new NetPacketPlayersAction);
NetPacketPlayersAction::Data actionData; NetPacketPlayersAction::Data actionData;
actionData.gameState = (GameState)GetGame()->getCurrentHand()->getActualRound(); actionData.gameState = static_cast<GameState>(GetGame()->getCurrentHand()->getActualRound());
actionData.playerAction = (PlayerAction)GetGame()->getPlayerArray()[0]->getMyAction(); actionData.playerAction = static_cast<PlayerAction>(GetGame()->getPlayerArray()[0]->getMyAction());
actionData.playerBet = GetGame()->getPlayerArray()[0]->getMySet(); actionData.playerBet = GetGame()->getPlayerArray()[0]->getMyLastRelativeSet();
static_cast<NetPacketPlayersAction *>(action.get())->SetData(actionData); static_cast<NetPacketPlayersAction *>(action.get())->SetData(actionData);
// The sender is thread-safe, so just dump the packet.
GetSender().Send(GetContext().GetSocket(), action); GetSender().Send(GetContext().GetSocket(), action);
} }
+6 -6
View File
@@ -150,8 +150,8 @@ struct GCC_PACKED NetPacketPlayersActionDoneData
u_int16_t playerId; u_int16_t playerId;
u_int16_t playerAction; u_int16_t playerAction;
u_int16_t reserved; u_int16_t reserved;
u_int32_t playerBet; u_int32_t totalPlayerBet;
u_int32_t curPlayerMoney; u_int32_t playerMoney;
u_int32_t potSize; u_int32_t potSize;
u_int32_t curHandBets; u_int32_t curHandBets;
}; };
@@ -1064,8 +1064,8 @@ NetPacketPlayersActionDone::SetData(const NetPacketPlayersActionDone::Data &inDa
tmpData->gameState = htons(inData.gameState); tmpData->gameState = htons(inData.gameState);
tmpData->playerId = htons(inData.playerId); tmpData->playerId = htons(inData.playerId);
tmpData->playerAction = htons(inData.playerAction); tmpData->playerAction = htons(inData.playerAction);
tmpData->playerBet = htonl(inData.playerBet); tmpData->totalPlayerBet = htonl(inData.totalPlayerBet);
tmpData->curPlayerMoney = htonl(inData.curPlayerMoney); tmpData->playerMoney = htonl(inData.playerMoney);
tmpData->potSize = htonl(inData.potSize); tmpData->potSize = htonl(inData.potSize);
tmpData->curHandBets = htonl(inData.curHandBets); tmpData->curHandBets = htonl(inData.curHandBets);
} }
@@ -1079,8 +1079,8 @@ NetPacketPlayersActionDone::GetData(NetPacketPlayersActionDone::Data &outData) c
outData.gameState = static_cast<GameState>(ntohs(tmpData->gameState)); outData.gameState = static_cast<GameState>(ntohs(tmpData->gameState));
outData.playerId = ntohs(tmpData->playerId); outData.playerId = ntohs(tmpData->playerId);
outData.playerAction = static_cast<PlayerAction>(ntohs(tmpData->playerAction)); outData.playerAction = static_cast<PlayerAction>(ntohs(tmpData->playerAction));
outData.playerBet = ntohl(tmpData->playerBet); outData.totalPlayerBet = ntohl(tmpData->totalPlayerBet);
outData.curPlayerMoney = ntohl(tmpData->curPlayerMoney); outData.playerMoney = ntohl(tmpData->playerMoney);
outData.potSize = ntohl(tmpData->potSize); outData.potSize = ntohl(tmpData->potSize);
outData.curHandBets = ntohl(tmpData->curHandBets); outData.curHandBets = ntohl(tmpData->curHandBets);
} }
+42 -52
View File
@@ -207,6 +207,23 @@ ServerRecvStateInit::Process(ServerRecvThread &server)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
ServerRecvStateRunning::ServerRecvStateRunning()
{
}
ServerRecvStateRunning::~ServerRecvStateRunning()
{
}
void
ServerRecvStateRunning::HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> connData)
{
// Do not accept new connections in this state.
server.RejectNewConnection(connData);
}
//-----------------------------------------------------------------------------
ServerRecvStateStartGame & ServerRecvStateStartGame &
ServerRecvStateStartGame::Instance() ServerRecvStateStartGame::Instance()
{ {
@@ -222,13 +239,6 @@ ServerRecvStateStartGame::~ServerRecvStateStartGame()
{ {
} }
void
ServerRecvStateStartGame::HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> connData)
{
// Do not accept new connections in this state.
server.RejectNewConnection(connData);
}
int int
ServerRecvStateStartGame::Process(ServerRecvThread &server) ServerRecvStateStartGame::Process(ServerRecvThread &server)
{ {
@@ -261,13 +271,6 @@ ServerRecvStateStartHand::~ServerRecvStateStartHand()
{ {
} }
void
ServerRecvStateStartHand::HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> connData)
{
// Do not accept new connections in this state.
server.RejectNewConnection(connData);
}
int int
ServerRecvStateStartHand::Process(ServerRecvThread &server) ServerRecvStateStartHand::Process(ServerRecvThread &server)
{ {
@@ -307,8 +310,8 @@ ServerRecvStateStartHand::Process(ServerRecvThread &server)
actionDoneData.gameState = GAME_STATE_PREFLOP_SMALL_BLIND; actionDoneData.gameState = GAME_STATE_PREFLOP_SMALL_BLIND;
actionDoneData.playerId = playerArray[i]->getMyUniqueID(); actionDoneData.playerId = playerArray[i]->getMyUniqueID();
actionDoneData.playerAction = (PlayerAction)playerArray[i]->getMyAction(); actionDoneData.playerAction = (PlayerAction)playerArray[i]->getMyAction();
actionDoneData.playerBet = playerArray[i]->getMySet(); actionDoneData.totalPlayerBet = playerArray[i]->getMySet();
actionDoneData.curPlayerMoney = playerArray[i]->getMyCash(); actionDoneData.playerMoney = playerArray[i]->getMyCash();
actionDoneData.potSize = curGame.getCurrentHand()->getBoard()->getPot(); actionDoneData.potSize = curGame.getCurrentHand()->getBoard()->getPot();
actionDoneData.curHandBets = playerArray[i]->getMySet(); // first bet only actionDoneData.curHandBets = playerArray[i]->getMySet(); // first bet only
static_cast<NetPacketPlayersActionDone *>(notifySmallBlind.get())->SetData(actionDoneData); static_cast<NetPacketPlayersActionDone *>(notifySmallBlind.get())->SetData(actionDoneData);
@@ -325,8 +328,8 @@ ServerRecvStateStartHand::Process(ServerRecvThread &server)
actionDoneData.gameState = GAME_STATE_PREFLOP_BIG_BLIND; actionDoneData.gameState = GAME_STATE_PREFLOP_BIG_BLIND;
actionDoneData.playerId = playerArray[i]->getMyUniqueID(); actionDoneData.playerId = playerArray[i]->getMyUniqueID();
actionDoneData.playerAction = (PlayerAction)playerArray[i]->getMyAction(); actionDoneData.playerAction = (PlayerAction)playerArray[i]->getMyAction();
actionDoneData.playerBet = playerArray[i]->getMySet(); actionDoneData.totalPlayerBet = playerArray[i]->getMySet();
actionDoneData.curPlayerMoney = playerArray[i]->getMyCash(); actionDoneData.playerMoney = playerArray[i]->getMyCash();
actionDoneData.potSize = curGame.getCurrentHand()->getBoard()->getPot(); actionDoneData.potSize = curGame.getCurrentHand()->getBoard()->getPot();
actionDoneData.curHandBets = curGame.getCurrentHand()->getBoard()->getSets(); actionDoneData.curHandBets = curGame.getCurrentHand()->getBoard()->getSets();
static_cast<NetPacketPlayersActionDone *>(notifyBigBlind.get())->SetData(actionDoneData); static_cast<NetPacketPlayersActionDone *>(notifyBigBlind.get())->SetData(actionDoneData);
@@ -357,13 +360,6 @@ ServerRecvStateStartRound::~ServerRecvStateStartRound()
{ {
} }
void
ServerRecvStateStartRound::HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> connData)
{
// Do not accept new connections in this state.
server.RejectNewConnection(connData);
}
int int
ServerRecvStateStartRound::Process(ServerRecvThread &server) ServerRecvStateStartRound::Process(ServerRecvThread &server)
{ {
@@ -402,19 +398,19 @@ ServerRecvStateStartRound::GameRun(Game &curGame, int state)
{ {
// TODO: no switch needed here if game states are polymorphic // TODO: no switch needed here if game states are polymorphic
switch(state) { switch(state) {
case 0: { case GAME_STATE_PREFLOP: {
// Preflop starten // Preflop starten
curGame.getCurrentHand()->getPreflop()->preflopRun(); curGame.getCurrentHand()->getPreflop()->preflopRun();
} break; } break;
case 1: { case GAME_STATE_FLOP: {
// Flop starten // Flop starten
curGame.getCurrentHand()->getFlop()->flopRun(); curGame.getCurrentHand()->getFlop()->flopRun();
} break; } break;
case 2: { case GAME_STATE_TURN: {
// Turn starten // Turn starten
curGame.getCurrentHand()->getTurn()->turnRun(); curGame.getCurrentHand()->getTurn()->turnRun();
} break; } break;
case 3: { case GAME_STATE_RIVER: {
// River starten // River starten
curGame.getCurrentHand()->getRiver()->riverRun(); curGame.getCurrentHand()->getRiver()->riverRun();
} break; } break;
@@ -430,16 +426,16 @@ ServerRecvStateStartRound::GetCurrentPlayer(Game &curGame)
int curPlayerNum = 0; int curPlayerNum = 0;
// TODO: no switch needed here if game states are polymorphic // TODO: no switch needed here if game states are polymorphic
switch(curGame.getCurrentHand()->getActualRound()) { switch(curGame.getCurrentHand()->getActualRound()) {
case 0: { case GAME_STATE_PREFLOP: {
curPlayerNum = curGame.getCurrentHand()->getPreflop()->getPlayersTurn(); curPlayerNum = curGame.getCurrentHand()->getPreflop()->getPlayersTurn();
} break; } break;
case 1: { case GAME_STATE_FLOP: {
curPlayerNum = curGame.getCurrentHand()->getFlop()->getPlayersTurn(); curPlayerNum = curGame.getCurrentHand()->getFlop()->getPlayersTurn();
} break; } break;
case 2: { case GAME_STATE_TURN: {
curPlayerNum = curGame.getCurrentHand()->getTurn()->getPlayersTurn(); curPlayerNum = curGame.getCurrentHand()->getTurn()->getPlayersTurn();
} break; } break;
case 3: { case GAME_STATE_RIVER: {
curPlayerNum = curGame.getCurrentHand()->getRiver()->getPlayersTurn(); curPlayerNum = curGame.getCurrentHand()->getRiver()->getPlayersTurn();
} break; } break;
default: { default: {
@@ -467,17 +463,10 @@ ServerRecvStateWaitPlayerAction::~ServerRecvStateWaitPlayerAction()
{ {
} }
void
ServerRecvStateWaitPlayerAction::HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> connData)
{
// Do not accept new connections in this state.
server.RejectNewConnection(connData);
}
int int
ServerRecvStateWaitPlayerAction::Process(ServerRecvThread &server) ServerRecvStateWaitPlayerAction::Process(ServerRecvThread &server)
{ {
int retVal = MSG_SOCK_INIT_DONE; int retVal = MSG_SOCK_INTERNAL_PENDING;
SOCKET recvSock = server.Select(); SOCKET recvSock = server.Select();
if (recvSock != INVALID_SOCKET) if (recvSock != INVALID_SOCKET)
@@ -505,23 +494,31 @@ ServerRecvStateWaitPlayerAction::Process(ServerRecvThread &server)
packet->ToNetPacketPlayersAction()->GetData(actionData); packet->ToNetPacketPlayersAction()->GetData(actionData);
Game &curGame = server.GetGame(); Game &curGame = server.GetGame();
PlayerInterface *tmpPlayer = curGame.getPlayerByUniqueId(session.playerData->GetUniqueId());
assert(tmpPlayer); // TODO throw exception
tmpPlayer->setMyAction(actionData.playerAction);
tmpPlayer->setMySet(actionData.playerBet);
boost::shared_ptr<NetPacket> notifyActionDone(new NetPacketPlayersActionDone); boost::shared_ptr<NetPacket> notifyActionDone(new NetPacketPlayersActionDone);
NetPacketPlayersActionDone::Data actionDoneData; NetPacketPlayersActionDone::Data actionDoneData;
actionDoneData.gameState = GAME_STATE_PREFLOP; // TODO actionDoneData.gameState = static_cast<GameState>(curGame.getCurrentHand()->getActualRound());
actionDoneData.playerId = session.playerData->GetUniqueId(); actionDoneData.playerId = session.playerData->GetUniqueId();
actionDoneData.playerAction = actionData.playerAction; actionDoneData.playerAction = actionData.playerAction;
actionDoneData.playerBet = actionData.playerBet; actionDoneData.totalPlayerBet = tmpPlayer->getMySet();
actionDoneData.curPlayerMoney = 0; actionDoneData.playerMoney = tmpPlayer->getMyCash();
actionDoneData.potSize = curGame.getCurrentHand()->getBoard()->getPot(); actionDoneData.potSize = curGame.getCurrentHand()->getBoard()->getPot();
actionDoneData.curHandBets = curGame.getCurrentHand()->getBoard()->getSets(); actionDoneData.curHandBets = curGame.getCurrentHand()->getBoard()->getSets();
static_cast<NetPacketPlayersActionDone *>(notifyActionDone.get())->SetData(actionDoneData); static_cast<NetPacketPlayersActionDone *>(notifyActionDone.get())->SetData(actionDoneData);
server.SendToAllPlayers(notifyActionDone); server.SendToAllPlayers(notifyActionDone);
server.SetState(ServerRecvStateStartRound::Instance());
retVal = MSG_NET_GAME_SERVER_ACTION;
} }
} }
} }
return MSG_SOCK_INTERNAL_PENDING; return retVal;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -541,13 +538,6 @@ ServerRecvStateFinal::~ServerRecvStateFinal()
{ {
} }
void
ServerRecvStateFinal::HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> connData)
{
// Do not accept new connections in this state.
server.RejectNewConnection(connData);
}
int int
ServerRecvStateFinal::Process(ServerRecvThread &server) ServerRecvStateFinal::Process(ServerRecvThread &server)
{ {
+2 -2
View File
@@ -295,8 +295,8 @@ public:
GameState gameState; GameState gameState;
u_int16_t playerId; u_int16_t playerId;
PlayerAction playerAction; PlayerAction playerAction;
u_int32_t playerBet; u_int32_t totalPlayerBet;
u_int32_t curPlayerMoney; u_int32_t playerMoney;
u_int32_t potSize; u_int32_t potSize;
u_int32_t curHandBets; u_int32_t curHandBets;
}; };
+18 -20
View File
@@ -69,8 +69,21 @@ private:
unsigned m_curUniquePlayerId; unsigned m_curUniquePlayerId;
}; };
// Abstract State: Game is running.
class ServerRecvStateRunning : public ServerRecvState
{
public:
virtual ~ServerRecvStateRunning();
//
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
protected:
ServerRecvStateRunning();
};
// State: Start server game. // State: Start server game.
class ServerRecvStateStartGame : public ServerRecvState class ServerRecvStateStartGame : public ServerRecvStateRunning
{ {
public: public:
// Access the state singleton. // Access the state singleton.
@@ -78,9 +91,6 @@ public:
virtual ~ServerRecvStateStartGame(); virtual ~ServerRecvStateStartGame();
//
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
// //
virtual int Process(ServerRecvThread &server); virtual int Process(ServerRecvThread &server);
@@ -91,7 +101,7 @@ protected:
}; };
// State: Start new hand. // State: Start new hand.
class ServerRecvStateStartHand : public ServerRecvState class ServerRecvStateStartHand : public ServerRecvStateRunning
{ {
public: public:
// Access the state singleton. // Access the state singleton.
@@ -99,9 +109,6 @@ public:
virtual ~ServerRecvStateStartHand(); virtual ~ServerRecvStateStartHand();
//
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
// //
virtual int Process(ServerRecvThread &server); virtual int Process(ServerRecvThread &server);
@@ -112,7 +119,7 @@ protected:
}; };
// State: Start new round. // State: Start new round.
class ServerRecvStateStartRound : public ServerRecvState class ServerRecvStateStartRound : public ServerRecvStateRunning
{ {
public: public:
// Access the state singleton. // Access the state singleton.
@@ -120,9 +127,6 @@ public:
virtual ~ServerRecvStateStartRound(); virtual ~ServerRecvStateStartRound();
//
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
// //
virtual int Process(ServerRecvThread &server); virtual int Process(ServerRecvThread &server);
@@ -136,7 +140,7 @@ protected:
}; };
// State: Wait for a player action. // State: Wait for a player action.
class ServerRecvStateWaitPlayerAction : public ServerRecvState class ServerRecvStateWaitPlayerAction : public ServerRecvStateRunning
{ {
public: public:
// Access the state singleton. // Access the state singleton.
@@ -144,9 +148,6 @@ public:
virtual ~ServerRecvStateWaitPlayerAction(); virtual ~ServerRecvStateWaitPlayerAction();
//
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
// //
virtual int Process(ServerRecvThread &server); virtual int Process(ServerRecvThread &server);
@@ -158,7 +159,7 @@ protected:
// State: Final. // State: Final.
class ServerRecvStateFinal : public ServerRecvState class ServerRecvStateFinal : public ServerRecvStateRunning
{ {
public: public:
// Access the state singleton. // Access the state singleton.
@@ -166,9 +167,6 @@ public:
virtual ~ServerRecvStateFinal(); virtual ~ServerRecvStateFinal();
//
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
// //
virtual int Process(ServerRecvThread &server); virtual int Process(ServerRecvThread &server);
+1 -1
View File
@@ -163,11 +163,11 @@ private:
ConfigFile *m_playerConfig; ConfigFile *m_playerConfig;
friend class ServerRecvStateInit; friend class ServerRecvStateInit;
friend class ServerRecvStateRunning;
friend class ServerRecvStateStartGame; friend class ServerRecvStateStartGame;
friend class ServerRecvStateStartHand; friend class ServerRecvStateStartHand;
friend class ServerRecvStateStartRound; friend class ServerRecvStateStartRound;
friend class ServerRecvStateWaitPlayerAction; friend class ServerRecvStateWaitPlayerAction;
friend class ServerRecvStateFinal;
}; };
#endif #endif
+1
View File
@@ -67,6 +67,7 @@
#define MSG_NET_GAME_CLIENT_HAND 7 #define MSG_NET_GAME_CLIENT_HAND 7
#define MSG_NET_GAME_SERVER_HAND 8 #define MSG_NET_GAME_SERVER_HAND 8
#define MSG_NET_GAME_SERVER_ROUND 10 #define MSG_NET_GAME_SERVER_ROUND 10
#define MSG_NET_GAME_SERVER_ACTION 12
#endif #endif