Commit efa05ad5 authored by nanahira's avatar nanahira

fix

parent cba72d5e
...@@ -612,7 +612,6 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -612,7 +612,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);
...@@ -1102,14 +1101,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) { ...@@ -1102,14 +1101,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)
...@@ -1910,7 +1902,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) { ...@@ -1910,7 +1902,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);
...@@ -1924,7 +1916,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) { ...@@ -1924,7 +1916,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);
}); });
} }
......
...@@ -72,7 +72,6 @@ protected: ...@@ -72,7 +72,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 };
......
...@@ -605,7 +605,6 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -605,7 +605,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);
...@@ -1064,14 +1063,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) { ...@@ -1064,14 +1063,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]);
...@@ -1998,12 +1990,12 @@ void TagDuel::RequestField(DuelPlayer* dp) { ...@@ -1998,12 +1990,12 @@ void TagDuel::RequestField(DuelPlayer* dp) {
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);
...@@ -2017,7 +2009,7 @@ void TagDuel::RequestField(DuelPlayer* dp) { ...@@ -2017,7 +2009,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);
}); });
} }
......
...@@ -68,7 +68,6 @@ protected: ...@@ -68,7 +68,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