Transfer blind values as 32 bit values in network games. This version is not compatible to the current beta server.
This commit is contained in:
+11
-8
@@ -1,4 +1,5 @@
|
|||||||
Changelog:
|
Changelog:
|
||||||
|
10-10-2007: All blinds are 32 Bit now.
|
||||||
10-03-2007: Added basic structure: Game Info Block
|
10-03-2007: Added basic structure: Game Info Block
|
||||||
09-05-2007: Minimum packet length is now definitely 8.
|
09-05-2007: Minimum packet length is now definitely 8.
|
||||||
08-26-2007: Server sends player name only on request.
|
08-26-2007: Server sends player name only on request.
|
||||||
@@ -150,21 +151,23 @@ Server/Client Reply: Avatar End
|
|||||||
Basic Structure: Game Info Block
|
Basic Structure: Game Info Block
|
||||||
|
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| Max Number of Players | First Small Blind |
|
| Max Number of Players | Raise Interval Mode |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| Raise Interval Mode | Raise Small Blind Interval |
|
| Raise Small Blind Interval | Raise Mode |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| Raise Mode | End Raise Mode |
|
| End Raise Mode | Number of Manual Blinds |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
||||||
| End Raise Small Blind Value | Number of Manual Blinds |
|
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| Proposed GUI Speed | Player Action Timeout |
|
| Proposed GUI Speed | Player Action Timeout |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
| First Small Blind |
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
| End Raise Small Blind Value |
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| Start Money |
|
| Start Money |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
\ Manual Blind Slot #1 | Manual Blind Slot #2 /
|
| \
|
||||||
| +-------------------------------+
|
\ Manual Blind Slots /
|
||||||
/ Manual Blind Slot #n | padding |
|
/ |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -168,15 +168,15 @@ struct GCC_PACKED NetPacketAvatarEndData
|
|||||||
struct GCC_PACKED GameInfoData
|
struct GCC_PACKED GameInfoData
|
||||||
{
|
{
|
||||||
u_int16_t maxNumberOfPlayers;
|
u_int16_t maxNumberOfPlayers;
|
||||||
u_int16_t firstSmallBlind;
|
|
||||||
u_int16_t raiseIntervalMode;
|
u_int16_t raiseIntervalMode;
|
||||||
u_int16_t raiseSmallBlindInterval;
|
u_int16_t raiseSmallBlindInterval;
|
||||||
u_int16_t raiseMode;
|
u_int16_t raiseMode;
|
||||||
u_int16_t endRaiseMode;
|
u_int16_t endRaiseMode;
|
||||||
u_int16_t endRaiseSmallBlindValue;
|
|
||||||
u_int16_t numberOfManualBlinds;
|
u_int16_t numberOfManualBlinds;
|
||||||
u_int16_t proposedGuiSpeed;
|
u_int16_t proposedGuiSpeed;
|
||||||
u_int16_t playerActionTimeout;
|
u_int16_t playerActionTimeout;
|
||||||
|
u_int32_t firstSmallBlind;
|
||||||
|
u_int32_t endRaiseSmallBlindValue;
|
||||||
u_int32_t startMoney;
|
u_int32_t startMoney;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -479,26 +479,26 @@ void SetGameInfoData(const GameData &inData, GameInfoData *outData)
|
|||||||
u_int16_t numManualBlinds = (u_int16_t)inData.manualBlindsList.size();
|
u_int16_t numManualBlinds = (u_int16_t)inData.manualBlindsList.size();
|
||||||
|
|
||||||
outData->maxNumberOfPlayers = htons(inData.maxNumberOfPlayers);
|
outData->maxNumberOfPlayers = htons(inData.maxNumberOfPlayers);
|
||||||
outData->firstSmallBlind = htons(inData.firstSmallBlind);
|
|
||||||
outData->raiseIntervalMode = htons(inData.raiseIntervalMode);
|
outData->raiseIntervalMode = htons(inData.raiseIntervalMode);
|
||||||
outData->raiseSmallBlindInterval = inData.raiseIntervalMode == RAISE_ON_HANDNUMBER
|
outData->raiseSmallBlindInterval = inData.raiseIntervalMode == RAISE_ON_HANDNUMBER
|
||||||
? htons(inData.raiseSmallBlindEveryHandsValue) : htons(inData.raiseSmallBlindEveryMinutesValue);
|
? htons(inData.raiseSmallBlindEveryHandsValue) : htons(inData.raiseSmallBlindEveryMinutesValue);
|
||||||
outData->raiseMode = htons(inData.raiseMode);
|
outData->raiseMode = htons(inData.raiseMode);
|
||||||
outData->endRaiseMode = htons(inData.afterManualBlindsMode);
|
outData->endRaiseMode = htons(inData.afterManualBlindsMode);
|
||||||
outData->endRaiseSmallBlindValue = htons(inData.afterMBAlwaysRaiseValue);
|
|
||||||
outData->numberOfManualBlinds = htons(numManualBlinds);
|
outData->numberOfManualBlinds = htons(numManualBlinds);
|
||||||
outData->proposedGuiSpeed = htons(inData.guiSpeed);
|
outData->proposedGuiSpeed = htons(inData.guiSpeed);
|
||||||
outData->playerActionTimeout = htons(inData.playerActionTimeoutSec);
|
outData->playerActionTimeout = htons(inData.playerActionTimeoutSec);
|
||||||
|
outData->endRaiseSmallBlindValue = htonl(inData.afterMBAlwaysRaiseValue);
|
||||||
|
outData->firstSmallBlind = htonl(inData.firstSmallBlind);
|
||||||
outData->startMoney = htonl(inData.startMoney);
|
outData->startMoney = htonl(inData.startMoney);
|
||||||
|
|
||||||
if (numManualBlinds)
|
if (numManualBlinds)
|
||||||
{
|
{
|
||||||
u_int16_t *manualBlindsPtr = (u_int16_t *)((char *)outData + sizeof(GameInfoData));
|
u_int32_t *manualBlindsPtr = (u_int32_t *)((char *)outData + sizeof(GameInfoData));
|
||||||
list<int>::const_iterator i = inData.manualBlindsList.begin();
|
list<int>::const_iterator i = inData.manualBlindsList.begin();
|
||||||
list<int>::const_iterator end = inData.manualBlindsList.end();
|
list<int>::const_iterator end = inData.manualBlindsList.end();
|
||||||
while (i != end)
|
while (i != end)
|
||||||
{
|
{
|
||||||
*manualBlindsPtr = htons(*i);
|
*manualBlindsPtr = htonl(*i);
|
||||||
++manualBlindsPtr;
|
++manualBlindsPtr;
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
@@ -512,8 +512,6 @@ void GetGameInfoData(const GameInfoData *inData, GameData &outData)
|
|||||||
u_int16_t numManualBlinds = ntohs(inData->numberOfManualBlinds);
|
u_int16_t numManualBlinds = ntohs(inData->numberOfManualBlinds);
|
||||||
|
|
||||||
outData.maxNumberOfPlayers = ntohs(inData->maxNumberOfPlayers);
|
outData.maxNumberOfPlayers = ntohs(inData->maxNumberOfPlayers);
|
||||||
outData.firstSmallBlind = ntohs(inData->firstSmallBlind);
|
|
||||||
/*remove me*/ outData.smallBlind = ntohs(inData->firstSmallBlind); // TODO remove
|
|
||||||
outData.raiseIntervalMode = static_cast<RaiseIntervalMode>(ntohs(inData->raiseIntervalMode));
|
outData.raiseIntervalMode = static_cast<RaiseIntervalMode>(ntohs(inData->raiseIntervalMode));
|
||||||
outData.raiseSmallBlindEveryHandsValue = outData.raiseSmallBlindEveryMinutesValue = 0;
|
outData.raiseSmallBlindEveryHandsValue = outData.raiseSmallBlindEveryMinutesValue = 0;
|
||||||
if (outData.raiseIntervalMode == RAISE_ON_HANDNUMBER)
|
if (outData.raiseIntervalMode == RAISE_ON_HANDNUMBER)
|
||||||
@@ -522,17 +520,19 @@ void GetGameInfoData(const GameInfoData *inData, GameData &outData)
|
|||||||
outData.raiseSmallBlindEveryMinutesValue = ntohs(inData->raiseSmallBlindInterval);
|
outData.raiseSmallBlindEveryMinutesValue = ntohs(inData->raiseSmallBlindInterval);
|
||||||
outData.raiseMode = static_cast<RaiseMode>(ntohs(inData->raiseMode));
|
outData.raiseMode = static_cast<RaiseMode>(ntohs(inData->raiseMode));
|
||||||
outData.afterManualBlindsMode = static_cast<AfterManualBlindsMode>(ntohs(inData->endRaiseMode));
|
outData.afterManualBlindsMode = static_cast<AfterManualBlindsMode>(ntohs(inData->endRaiseMode));
|
||||||
outData.afterMBAlwaysRaiseValue = ntohs(inData->endRaiseSmallBlindValue);
|
|
||||||
outData.guiSpeed = ntohs(inData->proposedGuiSpeed);
|
outData.guiSpeed = ntohs(inData->proposedGuiSpeed);
|
||||||
outData.playerActionTimeoutSec = ntohs(inData->playerActionTimeout);
|
outData.playerActionTimeoutSec = ntohs(inData->playerActionTimeout);
|
||||||
|
outData.firstSmallBlind = ntohl(inData->firstSmallBlind);
|
||||||
|
/*remove me*/ outData.smallBlind = ntohs(inData->firstSmallBlind); // TODO remove
|
||||||
|
outData.afterMBAlwaysRaiseValue = ntohl(inData->endRaiseSmallBlindValue);
|
||||||
outData.startMoney = ntohl(inData->startMoney);
|
outData.startMoney = ntohl(inData->startMoney);
|
||||||
|
|
||||||
if (numManualBlinds)
|
if (numManualBlinds)
|
||||||
{
|
{
|
||||||
const u_int16_t *manualBlindsPtr = (const u_int16_t *)((const char *)inData + sizeof(GameInfoData));
|
const u_int32_t *manualBlindsPtr = (const u_int32_t *)((const char *)inData + sizeof(GameInfoData));
|
||||||
for (u_int16_t i = 0; i < numManualBlinds; i++)
|
for (u_int16_t i = 0; i < numManualBlinds; i++)
|
||||||
{
|
{
|
||||||
outData.manualBlindsList.push_back(ntohs(*manualBlindsPtr));
|
outData.manualBlindsList.push_back(ntohl(*manualBlindsPtr));
|
||||||
++manualBlindsPtr;
|
++manualBlindsPtr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -546,13 +546,13 @@ CheckGameInfoData(const GameInfoData *tmpData)
|
|||||||
int proposedGuiSpeed = ntohs(tmpData->proposedGuiSpeed);
|
int proposedGuiSpeed = ntohs(tmpData->proposedGuiSpeed);
|
||||||
if (maxNumPlayers < MIN_NUMBER_OF_PLAYERS
|
if (maxNumPlayers < MIN_NUMBER_OF_PLAYERS
|
||||||
|| maxNumPlayers > MAX_NUMBER_OF_PLAYERS
|
|| maxNumPlayers > MAX_NUMBER_OF_PLAYERS
|
||||||
|| !ntohs(tmpData->firstSmallBlind)
|
|
||||||
|| !ntohs(tmpData->raiseIntervalMode)
|
|| !ntohs(tmpData->raiseIntervalMode)
|
||||||
|| !ntohs(tmpData->raiseSmallBlindInterval)
|
|| !ntohs(tmpData->raiseSmallBlindInterval)
|
||||||
|| !ntohs(tmpData->raiseMode)
|
|| !ntohs(tmpData->raiseMode)
|
||||||
|| !ntohs(tmpData->endRaiseMode)
|
|| !ntohs(tmpData->endRaiseMode)
|
||||||
|| proposedGuiSpeed < MIN_GUI_SPEED
|
|| proposedGuiSpeed < MIN_GUI_SPEED
|
||||||
|| proposedGuiSpeed > MAX_GUI_SPEED
|
|| proposedGuiSpeed > MAX_GUI_SPEED
|
||||||
|
|| !ntohl(tmpData->firstSmallBlind)
|
||||||
|| !ntohl(tmpData->startMoney))
|
|| !ntohl(tmpData->startMoney))
|
||||||
{
|
{
|
||||||
throw NetException(ERR_SOCK_INVALID_PACKET, 0);
|
throw NetException(ERR_SOCK_INVALID_PACKET, 0);
|
||||||
@@ -1551,7 +1551,7 @@ NetPacketGameListNew::SetData(const NetPacketGameListNew::Data &inData)
|
|||||||
u_int16_t curNumPlayers = (u_int16_t)inData.gameInfo.players.size();
|
u_int16_t curNumPlayers = (u_int16_t)inData.gameInfo.players.size();
|
||||||
u_int16_t numManualBlinds = (u_int16_t)inData.gameInfo.data.manualBlindsList.size();
|
u_int16_t numManualBlinds = (u_int16_t)inData.gameInfo.data.manualBlindsList.size();
|
||||||
|
|
||||||
int manualBlindsSize = ADD_PADDING(numManualBlinds * sizeof(u_int16_t));
|
int manualBlindsSize = numManualBlinds * sizeof(u_int32_t);
|
||||||
|
|
||||||
// Some basic checks, so we don't use up too much memory.
|
// Some basic checks, so we don't use up too much memory.
|
||||||
// The constructed packet will also be checked.
|
// The constructed packet will also be checked.
|
||||||
@@ -1606,7 +1606,7 @@ NetPacketGameListNew::GetData(NetPacketGameListNew::Data &outData) const
|
|||||||
NetPacketGameListNewData *tmpData = (NetPacketGameListNewData *)GetRawData();
|
NetPacketGameListNewData *tmpData = (NetPacketGameListNewData *)GetRawData();
|
||||||
|
|
||||||
u_int16_t numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
u_int16_t numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
||||||
int manualBlindsSize = ADD_PADDING(numManualBlinds * sizeof(u_int16_t));
|
int manualBlindsSize = numManualBlinds * sizeof(u_int32_t);
|
||||||
|
|
||||||
outData.gameId = ntohl(tmpData->gameId);
|
outData.gameId = ntohl(tmpData->gameId);
|
||||||
outData.gameInfo.mode = static_cast<GameMode>(ntohs(tmpData->gameMode));
|
outData.gameInfo.mode = static_cast<GameMode>(ntohs(tmpData->gameMode));
|
||||||
@@ -1643,7 +1643,7 @@ NetPacketGameListNew::InternalCheck(const NetPacketHeader* data) const
|
|||||||
int gameNameLength = ntohs(tmpData->gameNameLength);
|
int gameNameLength = ntohs(tmpData->gameNameLength);
|
||||||
int curNumPlayers = ntohs(tmpData->curNumberOfPlayers);
|
int curNumPlayers = ntohs(tmpData->curNumberOfPlayers);
|
||||||
u_int16_t numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
u_int16_t numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
||||||
int manualBlindsLength = ADD_PADDING(numManualBlinds * sizeof(u_int16_t));
|
int manualBlindsLength = numManualBlinds * sizeof(u_int32_t);
|
||||||
// Exact checking of dynamic packet size.
|
// Exact checking of dynamic packet size.
|
||||||
if (dataLen !=
|
if (dataLen !=
|
||||||
sizeof(NetPacketGameListNewData)
|
sizeof(NetPacketGameListNewData)
|
||||||
@@ -2062,7 +2062,7 @@ NetPacketCreateGame::SetData(const NetPacketCreateGame::Data &inData)
|
|||||||
if (numManualBlinds > MAX_NUM_MANUAL_BLINDS)
|
if (numManualBlinds > MAX_NUM_MANUAL_BLINDS)
|
||||||
throw NetException(ERR_NET_TOO_MANY_MANUAL_BLINDS, 0);
|
throw NetException(ERR_NET_TOO_MANY_MANUAL_BLINDS, 0);
|
||||||
|
|
||||||
int manualBlindsSize = ADD_PADDING(numManualBlinds * sizeof(u_int16_t));
|
int manualBlindsSize = numManualBlinds * sizeof(u_int32_t);
|
||||||
// Resize the packet so that the data fits in.
|
// Resize the packet so that the data fits in.
|
||||||
Resize((u_int16_t)
|
Resize((u_int16_t)
|
||||||
(sizeof(NetPacketCreateGameData) + manualBlindsSize + ADD_PADDING(gameNameLen) + ADD_PADDING(passwordLen)));
|
(sizeof(NetPacketCreateGameData) + manualBlindsSize + ADD_PADDING(gameNameLen) + ADD_PADDING(passwordLen)));
|
||||||
@@ -2090,7 +2090,7 @@ NetPacketCreateGame::GetData(NetPacketCreateGame::Data &outData) const
|
|||||||
NetPacketCreateGameData *tmpData = (NetPacketCreateGameData *)GetRawData();
|
NetPacketCreateGameData *tmpData = (NetPacketCreateGameData *)GetRawData();
|
||||||
|
|
||||||
u_int16_t numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
u_int16_t numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
||||||
int manualBlindsSize = ADD_PADDING(numManualBlinds * sizeof(u_int16_t));
|
int manualBlindsSize = numManualBlinds * sizeof(u_int32_t);
|
||||||
|
|
||||||
GetGameInfoData(&tmpData->gameData, outData.gameData);
|
GetGameInfoData(&tmpData->gameData, outData.gameData);
|
||||||
|
|
||||||
@@ -2114,7 +2114,7 @@ NetPacketCreateGame::InternalCheck(const NetPacketHeader* data) const
|
|||||||
int passwordLength = ntohs(tmpData->passwordLength);
|
int passwordLength = ntohs(tmpData->passwordLength);
|
||||||
int gameNameLength = ntohs(tmpData->gameNameLength);
|
int gameNameLength = ntohs(tmpData->gameNameLength);
|
||||||
int numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
int numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
||||||
int manualBlindsLength = ADD_PADDING(numManualBlinds * sizeof(u_int16_t));
|
int manualBlindsLength = numManualBlinds * sizeof(u_int32_t);
|
||||||
// Exact checking of dynamic packet size.
|
// Exact checking of dynamic packet size.
|
||||||
if (dataLen <
|
if (dataLen <
|
||||||
sizeof(NetPacketCreateGameData)
|
sizeof(NetPacketCreateGameData)
|
||||||
@@ -2271,7 +2271,7 @@ NetPacketJoinGameAck::SetData(const NetPacketJoinGameAck::Data &inData)
|
|||||||
if (numManualBlinds > MAX_NUM_MANUAL_BLINDS)
|
if (numManualBlinds > MAX_NUM_MANUAL_BLINDS)
|
||||||
throw NetException(ERR_NET_TOO_MANY_MANUAL_BLINDS, 0);
|
throw NetException(ERR_NET_TOO_MANY_MANUAL_BLINDS, 0);
|
||||||
|
|
||||||
int manualBlindsSize = ADD_PADDING(numManualBlinds * sizeof(u_int16_t));
|
int manualBlindsSize = numManualBlinds * sizeof(u_int32_t);
|
||||||
// Resize the packet so that the data fits in.
|
// Resize the packet so that the data fits in.
|
||||||
Resize((u_int16_t)
|
Resize((u_int16_t)
|
||||||
(sizeof(NetPacketJoinGameAckData) + manualBlindsSize));
|
(sizeof(NetPacketJoinGameAckData) + manualBlindsSize));
|
||||||
@@ -2312,7 +2312,7 @@ NetPacketJoinGameAck::InternalCheck(const NetPacketHeader* data) const
|
|||||||
u_int16_t dataLen = ntohs(data->length);
|
u_int16_t dataLen = ntohs(data->length);
|
||||||
NetPacketJoinGameAckData *tmpData = (NetPacketJoinGameAckData *)data;
|
NetPacketJoinGameAckData *tmpData = (NetPacketJoinGameAckData *)data;
|
||||||
int numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
int numManualBlinds = ntohs(tmpData->gameData.numberOfManualBlinds);
|
||||||
int manualBlindsLength = ADD_PADDING(numManualBlinds * sizeof(u_int16_t));
|
int manualBlindsLength = numManualBlinds * sizeof(u_int32_t);
|
||||||
// Exact checking of dynamic packet size.
|
// Exact checking of dynamic packet size.
|
||||||
if (dataLen <
|
if (dataLen <
|
||||||
sizeof(NetPacketJoinGameAckData)
|
sizeof(NetPacketJoinGameAckData)
|
||||||
|
|||||||
Reference in New Issue
Block a user