Commit efa05ad5 authored by nanahira's avatar nanahira

fix

parent cba72d5e
......@@ -612,7 +612,6 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
turn_player = 0;
phase = 1;
deck_reversed = false;
std::memset(deck_top, 0, sizeof(deck_top));
#endif
RefreshExtra(0);
RefreshExtra(1);
......@@ -1102,14 +1101,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
break;
}
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;
#endif
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
......@@ -1910,7 +1902,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) {
uint32_t position = 0;
while(qbuf < query_buffer + qlen) {
auto clen = BufferIO::ReadInt32(qbuf);
if(qbuf + clen == query_buffer + qlen) {
if(qbuf + clen - 4 == query_buffer + qlen) {
// last card
code = *(uint32_t*)(qbuf + 4);
position = GetPosition(qbuf, 8);
......@@ -1924,7 +1916,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) {
BufferIO::WriteInt8(pbuf, MSG_DECK_TOP);
BufferIO::WriteInt8(pbuf, i);
BufferIO::WriteInt8(pbuf, 0);
BufferIO::WriteInt32(pbuf, deck_top[i]);
BufferIO::WriteInt32(pbuf, code);
});
}
......
......@@ -72,7 +72,6 @@ protected:
unsigned char turn_player{ 0 };
unsigned short phase{ 0 };
bool deck_reversed{ false };
uint32_t deck_top[2]{};
#endif
Replay last_replay;
bool match_mode{ false };
......
......@@ -605,7 +605,6 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
turn_player = 0;
phase = 1;
deck_reversed = false;
std::memset(deck_top, 0, sizeof(deck_top));
#endif
RefreshExtra(0);
RefreshExtra(1);
......@@ -1064,14 +1063,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
break;
}
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;
#endif
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]);
NetServer::ReSendToPlayer(players[2]);
......@@ -1993,17 +1985,17 @@ void TagDuel::RequestField(DuelPlayer* dp) {
RefreshRemoved(player, 0xefffff, 0, dp);
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
auto qlen = query_field_card(pduel, i, LOCATION_DECK, QUERY_CODE | QUERY_POSITION, query_buffer, 0);
if(!qlen)
continue; // no cards in deck
uint8_t* qbuf = query_buffer;
uint8_t *qbuf = query_buffer;
uint32_t code = 0;
uint32_t position = 0;
while(qbuf < query_buffer + qlen) {
auto clen = BufferIO::ReadInt32(qbuf);
if(qbuf + clen == query_buffer + qlen) {
if(qbuf + clen - 4 == query_buffer + qlen) {
// last card
code = *(uint32_t*)(qbuf + 4);
position = GetPosition(qbuf, 8);
......@@ -2017,7 +2009,7 @@ void TagDuel::RequestField(DuelPlayer* dp) {
BufferIO::WriteInt8(pbuf, MSG_DECK_TOP);
BufferIO::WriteInt8(pbuf, i);
BufferIO::WriteInt8(pbuf, 0);
BufferIO::WriteInt32(pbuf, deck_top[i]);
BufferIO::WriteInt32(pbuf, code);
});
}
......
......@@ -68,7 +68,6 @@ protected:
unsigned char turn_player{ 0 };
unsigned short phase{ 0 };
bool deck_reversed{ false };
uint32_t deck_top[2]{};
#endif
bool ready[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