Commit 0fa2798c authored by mercury233's avatar mercury233

update MSG_SHUFFLE_SET_CARD

parent 203708a2
...@@ -2207,7 +2207,13 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2207,7 +2207,13 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
} }
case MSG_SHUFFLE_SET_CARD: { case MSG_SHUFFLE_SET_CARD: {
std::vector<ClientCard*>::iterator cit; std::vector<ClientCard*>::iterator cit;
std::vector<ClientCard*>* lst = 0;
int loc = BufferIO::ReadInt8(pbuf);
int count = BufferIO::ReadInt8(pbuf); int count = BufferIO::ReadInt8(pbuf);
if(loc == LOCATION_MZONE)
lst = mainGame->dField.mzone;
else
lst = mainGame->dField.szone;
ClientCard* mc[5]; ClientCard* mc[5];
ClientCard* swp; ClientCard* swp;
int c, l, s, ps; int c, l, s, ps;
...@@ -2216,7 +2222,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2216,7 +2222,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
l = BufferIO::ReadInt8(pbuf); l = BufferIO::ReadInt8(pbuf);
s = BufferIO::ReadInt8(pbuf); s = BufferIO::ReadInt8(pbuf);
BufferIO::ReadInt8(pbuf); BufferIO::ReadInt8(pbuf);
mc[i] = mainGame->dField.mzone[c][s]; mc[i] = lst[c][s];
mc[i]->SetCode(0); mc[i]->SetCode(0);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) { if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
mc[i]->dPos = irr::core::vector3df((3.95f - mc[i]->curPos.X) / 10, 0, 0.05f); mc[i]->dPos = irr::core::vector3df((3.95f - mc[i]->curPos.X) / 10, 0, 0.05f);
...@@ -2234,9 +2240,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2234,9 +2240,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO::ReadInt8(pbuf); BufferIO::ReadInt8(pbuf);
ps = mc[i]->sequence; ps = mc[i]->sequence;
if (l > 0) { if (l > 0) {
swp = mainGame->dField.mzone[c][s]; swp = lst[c][s];
mainGame->dField.mzone[c][ps] = swp; lst[c][ps] = swp;
mainGame->dField.mzone[c][s] = mc[i]; lst[c][s] = mc[i];
mc[i]->sequence = s; mc[i]->sequence = s;
swp->sequence = ps; swp->sequence = ps;
} }
......
...@@ -497,6 +497,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) { ...@@ -497,6 +497,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
break; break;
} }
case MSG_SHUFFLE_SET_CARD: { case MSG_SHUFFLE_SET_CARD: {
pbuf++;
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8; pbuf += count * 8;
DuelClient::ClientAnalyze(offset, pbuf - offset); DuelClient::ClientAnalyze(offset, pbuf - offset);
......
...@@ -874,14 +874,21 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -874,14 +874,21 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break; break;
} }
case MSG_SHUFFLE_SET_CARD: { case MSG_SHUFFLE_SET_CARD: {
int loc = BufferIO::ReadInt8(pbuf);
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8; pbuf += count * 8;
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)
NetServer::ReSendToPlayer(*oit); NetServer::ReSendToPlayer(*oit);
RefreshMzone(0, 0x181fff, 0); if(loc == LOCATION_MZONE) {
RefreshMzone(1, 0x181fff, 0); RefreshMzone(0, 0x181fff, 0);
RefreshMzone(1, 0x181fff, 0);
}
else {
RefreshSzone(0, 0x181fff, 0);
RefreshSzone(1, 0x181fff, 0);
}
break; break;
} }
case MSG_NEW_TURN: { case MSG_NEW_TURN: {
......
...@@ -415,6 +415,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) { ...@@ -415,6 +415,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
break; break;
} }
case MSG_SHUFFLE_SET_CARD: { case MSG_SHUFFLE_SET_CARD: {
pbuf++;
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8; pbuf += count * 8;
DuelClient::ClientAnalyze(offset, pbuf - offset); DuelClient::ClientAnalyze(offset, pbuf - offset);
......
...@@ -832,6 +832,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -832,6 +832,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
break; break;
} }
case MSG_SHUFFLE_SET_CARD: { case MSG_SHUFFLE_SET_CARD: {
int loc = BufferIO::ReadInt8(pbuf);
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8; pbuf += count * 8;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
...@@ -840,8 +841,13 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -840,8 +841,13 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer::ReSendToPlayer(players[3]); NetServer::ReSendToPlayer(players[3]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit); NetServer::ReSendToPlayer(*oit);
RefreshMzone(0, 0x181fff, 0); if(loc == LOCATION_MZONE) {
RefreshMzone(1, 0x181fff, 0); RefreshMzone(0, 0x181fff, 0);
RefreshMzone(1, 0x181fff, 0);
} else {
RefreshSzone(0, 0x181fff, 0);
RefreshSzone(1, 0x181fff, 0);
}
break; break;
} }
case MSG_NEW_TURN: { case MSG_NEW_TURN: {
......
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