Commit a006addb authored by nanahira's avatar nanahira

Merge branch 'server-patch-reversedeck' of ../versions/ygopro-mc into server-develop

parents 6ad5982b efa05ad5
...@@ -654,7 +654,6 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -654,7 +654,6 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
turn_player = 0; turn_player = 0;
phase = 1; phase = 1;
deck_reversed = false; deck_reversed = false;
std::memset(deck_top, 0, sizeof(deck_top));
#endif #endif
RefreshExtra(0); RefreshExtra(0);
RefreshExtra(1); RefreshExtra(1);
...@@ -1180,14 +1179,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) { ...@@ -1180,14 +1179,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
break; break;
} }
case MSG_DECK_TOP: { case MSG_DECK_TOP: {
#ifdef YGOPRO_SERVER_MODE
auto player = BufferIO::ReadUInt8(pbuf);
auto seq = BufferIO::ReadUInt8(pbuf);
auto code = BufferIO::ReadInt32(pbuf);
deck_top[player] = code;
#else
pbuf += 6; pbuf += 6;
#endif
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]); NetServer::ReSendToPlayer(players[1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
...@@ -1988,7 +1980,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) { ...@@ -1988,7 +1980,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) {
uint32_t position = 0; uint32_t position = 0;
while(qbuf < query_buffer + qlen) { while(qbuf < query_buffer + qlen) {
auto clen = BufferIO::ReadInt32(qbuf); auto clen = BufferIO::ReadInt32(qbuf);
if(qbuf + clen == query_buffer + qlen) { if(qbuf + clen - 4 == query_buffer + qlen) {
// last card // last card
code = *(uint32_t*)(qbuf + 4); code = *(uint32_t*)(qbuf + 4);
position = GetPosition(qbuf, 8); position = GetPosition(qbuf, 8);
...@@ -2002,7 +1994,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) { ...@@ -2002,7 +1994,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) {
BufferIO::WriteInt8(pbuf, MSG_DECK_TOP); BufferIO::WriteInt8(pbuf, MSG_DECK_TOP);
BufferIO::WriteInt8(pbuf, i); BufferIO::WriteInt8(pbuf, i);
BufferIO::WriteInt8(pbuf, 0); BufferIO::WriteInt8(pbuf, 0);
BufferIO::WriteInt32(pbuf, deck_top[i]); BufferIO::WriteInt32(pbuf, code);
}); });
} }
......
...@@ -75,7 +75,6 @@ protected: ...@@ -75,7 +75,6 @@ protected:
unsigned char turn_player{ 0 }; unsigned char turn_player{ 0 };
unsigned short phase{ 0 }; unsigned short phase{ 0 };
bool deck_reversed{ false }; bool deck_reversed{ false };
uint32_t deck_top[2]{};
#endif #endif
Replay last_replay; Replay last_replay;
bool match_mode{ false }; bool match_mode{ false };
......
...@@ -652,7 +652,6 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -652,7 +652,6 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
turn_player = 0; turn_player = 0;
phase = 1; phase = 1;
deck_reversed = false; deck_reversed = false;
std::memset(deck_top, 0, sizeof(deck_top));
#endif #endif
RefreshExtra(0); RefreshExtra(0);
RefreshExtra(1); RefreshExtra(1);
...@@ -1142,14 +1141,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) { ...@@ -1142,14 +1141,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
break; break;
} }
case MSG_DECK_TOP: { case MSG_DECK_TOP: {
#ifdef YGOPRO_SERVER_MODE
auto player = BufferIO::ReadUInt8(pbuf);
auto seq = BufferIO::ReadUInt8(pbuf);
auto code = BufferIO::ReadInt32(pbuf);
deck_top[player] = code;
#else
pbuf += 6; pbuf += 6;
#endif
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]); NetServer::ReSendToPlayer(players[1]);
NetServer::ReSendToPlayer(players[2]); NetServer::ReSendToPlayer(players[2]);
...@@ -2072,17 +2064,17 @@ void TagDuel::RequestField(DuelPlayer* dp) { ...@@ -2072,17 +2064,17 @@ void TagDuel::RequestField(DuelPlayer* dp) {
RefreshRemoved(player, 0xefffff, 0, dp); RefreshRemoved(player, 0xefffff, 0, dp);
uint8_t query_buffer[SIZE_QUERY_BUFFER]; uint8_t query_buffer[SIZE_QUERY_BUFFER];
for(uint8_t i = 0; i < 2; ++i) { for(uint8_t i = 0; i < 2; ++i) {
// get decktop card // get decktop card
auto qlen = query_field_card(pduel, i, LOCATION_DECK, QUERY_CODE | QUERY_POSITION, query_buffer, 0); auto qlen = query_field_card(pduel, i, LOCATION_DECK, QUERY_CODE | QUERY_POSITION, query_buffer, 0);
if(!qlen) if(!qlen)
continue; // no cards in deck continue; // no cards in deck
uint8_t* qbuf = query_buffer; uint8_t *qbuf = query_buffer;
uint32_t code = 0; uint32_t code = 0;
uint32_t position = 0; uint32_t position = 0;
while(qbuf < query_buffer + qlen) { while(qbuf < query_buffer + qlen) {
auto clen = BufferIO::ReadInt32(qbuf); auto clen = BufferIO::ReadInt32(qbuf);
if(qbuf + clen == query_buffer + qlen) { if(qbuf + clen - 4 == query_buffer + qlen) {
// last card // last card
code = *(uint32_t*)(qbuf + 4); code = *(uint32_t*)(qbuf + 4);
position = GetPosition(qbuf, 8); position = GetPosition(qbuf, 8);
...@@ -2096,7 +2088,7 @@ void TagDuel::RequestField(DuelPlayer* dp) { ...@@ -2096,7 +2088,7 @@ void TagDuel::RequestField(DuelPlayer* dp) {
BufferIO::WriteInt8(pbuf, MSG_DECK_TOP); BufferIO::WriteInt8(pbuf, MSG_DECK_TOP);
BufferIO::WriteInt8(pbuf, i); BufferIO::WriteInt8(pbuf, i);
BufferIO::WriteInt8(pbuf, 0); BufferIO::WriteInt8(pbuf, 0);
BufferIO::WriteInt32(pbuf, deck_top[i]); BufferIO::WriteInt32(pbuf, code);
}); });
} }
......
...@@ -71,7 +71,6 @@ protected: ...@@ -71,7 +71,6 @@ protected:
unsigned char turn_player{ 0 }; unsigned char turn_player{ 0 };
unsigned short phase{ 0 }; unsigned short phase{ 0 };
bool deck_reversed{ false }; bool deck_reversed{ false };
uint32_t deck_top[2]{};
#endif #endif
bool ready[4]; bool ready[4];
bool surrender[4]; bool surrender[4];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment