Calculate player numbers in a different way, so that a player number on the server can be converted to a player number on the client.
This commit is contained in:
@@ -1651,7 +1651,8 @@ ClientStateWaitHand::InternalHandlePacket(boost::shared_ptr<ClientThread> client
|
|||||||
if (numPlayers && seatStates && *seatStates) {
|
if (numPlayers && seatStates && *seatStates) {
|
||||||
for (int i = 0; i < (int)numPlayers; i++) {
|
for (int i = 0; i < (int)numPlayers; i++) {
|
||||||
NetPlayerState_t *seatState = seatStates[i];
|
NetPlayerState_t *seatState = seatStates[i];
|
||||||
boost::shared_ptr<PlayerInterface> tmpPlayer = client->GetGame()->getPlayerByNumber((i + client->GetOrigGuiPlayerNum()) % numPlayers);
|
int numberDiff = client->GetStartData().numberOfPlayers - client->GetOrigGuiPlayerNum();
|
||||||
|
boost::shared_ptr<PlayerInterface> tmpPlayer = client->GetGame()->getPlayerByNumber((i + numberDiff) % client->GetStartData().numberOfPlayers);
|
||||||
if (!tmpPlayer)
|
if (!tmpPlayer)
|
||||||
throw ClientException(__FILE__, __LINE__, ERR_NET_UNKNOWN_PLAYER_ID, 0);
|
throw ClientException(__FILE__, __LINE__, ERR_NET_UNKNOWN_PLAYER_ID, 0);
|
||||||
switch (*seatState)
|
switch (*seatState)
|
||||||
|
|||||||
@@ -1102,11 +1102,8 @@ ClientThread::MapPlayerDataList()
|
|||||||
|
|
||||||
while (i != end) {
|
while (i != end) {
|
||||||
boost::shared_ptr<PlayerData> tmpData(new PlayerData(*(*i)));
|
boost::shared_ptr<PlayerData> tmpData(new PlayerData(*(*i)));
|
||||||
int numberDiff = tmpData->GetNumber() - m_origGuiPlayerNum;
|
int numberDiff = GetStartData().numberOfPlayers - m_origGuiPlayerNum;
|
||||||
if (numberDiff >= 0)
|
tmpData->SetNumber((tmpData->GetNumber() + numberDiff) % GetStartData().numberOfPlayers);
|
||||||
tmpData->SetNumber(numberDiff);
|
|
||||||
else
|
|
||||||
tmpData->SetNumber(numPlayers + numberDiff);
|
|
||||||
mappedList.push_back(tmpData);
|
mappedList.push_back(tmpData);
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1197,7 +1197,8 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr<ServerGame> server)
|
|||||||
}
|
}
|
||||||
PlayerListIterator player_i = curGame.getSeatsList()->begin();
|
PlayerListIterator player_i = curGame.getSeatsList()->begin();
|
||||||
PlayerListIterator player_end = curGame.getSeatsList()->end();
|
PlayerListIterator player_end = curGame.getSeatsList()->end();
|
||||||
while (player_i != player_end) {
|
unsigned playerCounter = 0;
|
||||||
|
while (player_i != player_end && playerCounter < server->GetStartData().numberOfPlayers) {
|
||||||
NetPlayerState_t *seatState = (NetPlayerState_t *)calloc(1, sizeof(NetPlayerState_t));
|
NetPlayerState_t *seatState = (NetPlayerState_t *)calloc(1, sizeof(NetPlayerState_t));
|
||||||
if ((*player_i)->getMyCash() <= 0) {
|
if ((*player_i)->getMyCash() <= 0) {
|
||||||
*seatState = NetPlayerState_playerStateNoMoney;
|
*seatState = NetPlayerState_playerStateNoMoney;
|
||||||
@@ -1208,6 +1209,7 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr<ServerGame> server)
|
|||||||
}
|
}
|
||||||
ASN_SEQUENCE_ADD(&netHandStart->seatStates.list, seatState);
|
ASN_SEQUENCE_ADD(&netHandStart->seatStates.list, seatState);
|
||||||
++player_i;
|
++player_i;
|
||||||
|
++playerCounter;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!errorFlag) {
|
if (!errorFlag) {
|
||||||
|
|||||||
Reference in New Issue
Block a user