Commit c7a3fc33 authored by nanahira's avatar nanahira

add skip action

parent 029608bf
......@@ -640,6 +640,8 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->btnChainAlways->setVisible(false);
mainGame->btnChainWhenAvail->setVisible(false);
mainGame->btnCancelOrFinish->setVisible(false);
if(!mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
mainGame->dInfo.isReplaySkiping = false;
mainGame->stMessage->setText(dataManager.GetSysString(1500));
mainGame->PopupElement(mainGame->wMessage);
mainGame->gMutex.Unlock();
......@@ -906,7 +908,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int type = BufferIO::ReadInt8(pbuf);
/*int player = */BufferIO::ReadInt8(pbuf);
int data = BufferIO::ReadInt32(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
switch (type) {
case HINT_EVENT: {
......@@ -1000,6 +1002,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case MSG_WIN: {
mainGame->dInfo.isFinished = true;
if(!mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
mainGame->dInfo.isReplaySkiping = false;
mainGame->gMutex.Lock();
mainGame->dField.RefreshAllCards();
mainGame->gMutex.Unlock();
}
int player = BufferIO::ReadInt8(pbuf);
int type = BufferIO::ReadInt8(pbuf);
mainGame->showcarddif = 110;
......@@ -1860,7 +1868,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if (code != 0)
pcard->SetCode(code);
}
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
soundManager.PlaySoundEffect(SOUND_REVEAL);
myswprintf(textBuffer, dataManager.GetSysString(207), count);
......@@ -1900,7 +1908,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if (code != 0)
pcard->SetCode(code);
}
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
soundManager.PlaySoundEffect(SOUND_REVEAL);
myswprintf(textBuffer, dataManager.GetSysString(207), count);
......@@ -1933,7 +1941,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
std::vector<ClientCard*> field_confirm;
std::vector<ClientCard*> panel_confirm;
ClientCard* pcard;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
pbuf += count * 7;
return true;
}
......@@ -2033,7 +2041,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if(mainGame->dField.deck[player].size() < 2)
return true;
bool rev = mainGame->dField.deck_reversed;
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
mainGame->dField.deck_reversed = false;
if(rev) {
for (size_t i = 0; i < mainGame->dField.deck[player].size(); ++i)
......@@ -2045,7 +2053,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->dField.deck[player][i]->code = 0;
mainGame->dField.deck[player][i]->is_reversed = false;
}
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
soundManager.PlaySoundEffect(SOUND_SHUFFLE);
for (int i = 0; i < 5; ++i) {
for (auto cit = mainGame->dField.deck[player].begin(); cit != mainGame->dField.deck[player].end(); ++cit) {
......@@ -2070,7 +2078,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_SHUFFLE_HAND: {
int player = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
int count = BufferIO::ReadInt8(pbuf);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
if(count > 1)
soundManager.PlaySoundEffect(SOUND_SHUFFLE);
mainGame->WaitFrameSignal(5);
......@@ -2099,7 +2107,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
for (auto cit = mainGame->dField.hand[player].begin(); cit != mainGame->dField.hand[player].end(); ++cit)
(*cit)->SetCode(BufferIO::ReadInt32(pbuf));
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
for (auto cit = mainGame->dField.hand[player].begin(); cit != mainGame->dField.hand[player].end(); ++cit) {
(*cit)->is_hovered = false;
mainGame->dField.MoveCard(*cit, 5);
......@@ -2113,7 +2121,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int count = BufferIO::ReadInt8(pbuf);
if((mainGame->dField.extra[player].size() - mainGame->dField.extra_p_count[player]) < 2)
return true;
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
if(count > 1)
soundManager.PlaySoundEffect(SOUND_SHUFFLE);
for (int i = 0; i < 5; ++i) {
......@@ -2143,7 +2151,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case MSG_SWAP_GRAVE_DECK: {
int player = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
mainGame->dField.grave[player].swap(mainGame->dField.deck[player]);
for (auto cit = mainGame->dField.grave[player].begin(); cit != mainGame->dField.grave[player].end(); ++cit)
(*cit)->location = LOCATION_GRAVE;
......@@ -2187,7 +2195,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case MSG_REVERSE_DECK: {
mainGame->dField.deck_reversed = !mainGame->dField.deck_reversed;
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
for(size_t i = 0; i < mainGame->dField.deck[0].size(); ++i)
mainGame->dField.MoveCard(mainGame->dField.deck[0][i], 10);
for(size_t i = 0; i < mainGame->dField.deck[1].size(); ++i)
......@@ -2226,14 +2234,14 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO::ReadInt8(pbuf);
mc[i] = lst[c][s];
mc[i]->SetCode(0);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
mc[i]->dPos = irr::core::vector3df((3.95f - mc[i]->curPos.X) / 10, 0, 0.05f);
mc[i]->dRot = irr::core::vector3df(0, 0, 0);
mc[i]->is_moving = true;
mc[i]->aniFrame = 10;
}
}
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping)
if(!mainGame->dInfo.isReplaySkiping)
mainGame->WaitFrameSignal(20);
for (int i = 0; i < count; ++i) {
c = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
......@@ -2249,7 +2257,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
swp->sequence = ps;
}
}
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
soundManager.PlaySoundEffect(SOUND_SHUFFLE);
for (int i = 0; i < count; ++i) {
mainGame->dField.MoveCard(mc[i], 10);
......@@ -2286,7 +2294,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
else
mainGame->dInfo.tag_player[1] = !mainGame->dInfo.tag_player[1];
}
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
soundManager.PlaySoundEffect(SOUND_NEXT_TURN);
mainGame->showcardcode = 10;
mainGame->showcarddif = 30;
......@@ -2334,7 +2342,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
mainGame->btnPhaseStatus->setPressed(true);
mainGame->btnPhaseStatus->setVisible(true);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
soundManager.PlaySoundEffect(SOUND_PHASE);
mainGame->showcard = 101;
mainGame->WaitFrameSignal(40);
......@@ -2353,7 +2361,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int cs = BufferIO::ReadInt8(pbuf);
int cp = BufferIO::ReadInt8(pbuf);
int reason = BufferIO::ReadInt32(pbuf);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
if(cl & LOCATION_REMOVED && pl != cl)
soundManager.PlaySoundEffect(SOUND_BANISHED);
else if(reason & REASON_DESTROY && pl != cl)
......@@ -2363,7 +2371,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
ClientCard* pcard = new ClientCard();
pcard->position = cp;
pcard->SetCode(code);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
mainGame->gMutex.Lock();
mainGame->dField.AddCard(pcard, cc, cl, cs);
mainGame->gMutex.Unlock();
......@@ -2380,7 +2388,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->ClearTarget();
for(auto eqit = pcard->equipped.begin(); eqit != pcard->equipped.end(); ++eqit)
(*eqit)->equipTarget = 0;
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
mainGame->dField.FadeCard(pcard, 5, 20);
mainGame->WaitFrameSignal(20);
mainGame->gMutex.Lock();
......@@ -2412,7 +2420,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->is_showequip = false;
pcard->is_showtarget = false;
pcard->is_showchaintarget = false;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
mainGame->dField.RemoveCard(pc, pl, ps);
pcard->position = cp;
mainGame->dField.AddCard(pcard, cc, cl, cs);
......@@ -2464,7 +2472,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->is_showtarget = false;
pcard->is_showchaintarget = false;
ClientCard* olcard = mainGame->dField.GetCard(cc, cl & 0x7f, cs);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
mainGame->dField.RemoveCard(pc, pl, ps);
olcard->overlayed.push_back(pcard);
mainGame->dField.overlay_cards.insert(pcard);
......@@ -2493,7 +2501,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
} else if (!(cl & 0x80)) {
ClientCard* olcard = mainGame->dField.GetCard(pc, pl & 0x7f, ps);
ClientCard* pcard = olcard->overlayed[pp];
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
olcard->overlayed.erase(olcard->overlayed.begin() + pcard->sequence);
pcard->overlayTarget = 0;
pcard->position = cp;
......@@ -2523,7 +2531,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
ClientCard* olcard1 = mainGame->dField.GetCard(pc, pl & 0x7f, ps);
ClientCard* pcard = olcard1->overlayed[pp];
ClientCard* olcard2 = mainGame->dField.GetCard(cc, cl & 0x7f, cs);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
olcard1->overlayed.erase(olcard1->overlayed.begin() + pcard->sequence);
olcard2->overlayed.push_back(pcard);
pcard->sequence = olcard2->overlayed.size() - 1;
......@@ -2566,7 +2574,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if (code != 0 && pcard->code != code)
pcard->SetCode(code);
pcard->position = cp;
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
myswprintf(event_string, dataManager.GetSysString(1600));
mainGame->dField.MoveCard(pcard, 10);
mainGame->WaitFrameSignal(11);
......@@ -2579,7 +2587,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
/*int cl = */BufferIO::ReadInt8(pbuf);
/*int cs = */BufferIO::ReadInt8(pbuf);
/*int cp = */BufferIO::ReadInt8(pbuf);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping)
if(!mainGame->dInfo.isReplaySkiping)
soundManager.PlaySoundEffect(SOUND_SET);
myswprintf(event_string, dataManager.GetSysString(1601));
return true;
......@@ -2598,7 +2606,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
myswprintf(event_string, dataManager.GetSysString(1602));
ClientCard* pc1 = mainGame->dField.GetCard(c1, l1, s1);
ClientCard* pc2 = mainGame->dField.GetCard(c2, l2, s2);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
mainGame->gMutex.Lock();
mainGame->dField.RemoveCard(c1, l1, s1);
mainGame->dField.RemoveCard(c2, l2, s2);
......@@ -2633,7 +2641,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
/*int cl = */BufferIO::ReadInt8(pbuf);
/*int cs = */BufferIO::ReadInt8(pbuf);
/*int cp = */BufferIO::ReadInt8(pbuf);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
soundManager.PlaySoundEffect(SOUND_SUMMON);
myswprintf(event_string, dataManager.GetSysString(1603), dataManager.GetName(code));
mainGame->showcardcode = code;
......@@ -2656,7 +2664,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
/*int cl = */BufferIO::ReadInt8(pbuf);
/*int cs = */BufferIO::ReadInt8(pbuf);
/*int cp = */BufferIO::ReadInt8(pbuf);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
CardData cd;
if(dataManager.GetData(code, &cd) && (cd.type & TYPE_TOKEN))
soundManager.PlaySoundEffect(SOUND_TOKEN);
......@@ -2685,7 +2693,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
ClientCard* pcard = mainGame->dField.GetCard(cc, cl, cs);
pcard->SetCode(code);
pcard->position = cp;
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
soundManager.PlaySoundEffect(SOUND_FILP);
myswprintf(event_string, dataManager.GetSysString(1607), dataManager.GetName(code));
mainGame->dField.MoveCard(pcard, 10);
......@@ -2715,7 +2723,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int cs = BufferIO::ReadInt8(pbuf);
int desc = BufferIO::ReadInt32(pbuf);
/*int ct = */BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
soundManager.PlaySoundEffect(SOUND_ACTIVATE);
ClientCard* pcard = mainGame->dField.GetCard(pcc, pcl, pcs, subs);
......@@ -2756,7 +2764,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case MSG_CHAINED: {
int ct = BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
myswprintf(event_string, dataManager.GetSysString(1609), dataManager.GetName(mainGame->dField.current_chain.code));
mainGame->gMutex.Lock();
......@@ -2769,7 +2777,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case MSG_CHAIN_SOLVING: {
int ct = BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
if (mainGame->dField.chains.size() > 1) {
if (mainGame->dField.last_chain)
......@@ -2800,7 +2808,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_CHAIN_NEGATED:
case MSG_CHAIN_DISABLED: {
int ct = BufferIO::ReadInt8(pbuf);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
mainGame->showcardcode = mainGame->dField.chains[ct - 1].code;
mainGame->showcarddif = 0;
mainGame->showcard = 3;
......@@ -2815,7 +2823,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_RANDOM_SELECTED: {
/*int player = */BufferIO::ReadInt8(pbuf);
int count = BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
pbuf += count * 4;
return true;
}
......@@ -2840,7 +2848,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_BECOME_TARGET: {
//soundManager.PlaySoundEffect(SOUND_TARGET);
int count = BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
pbuf += count * 4;
return true;
}
......@@ -2878,7 +2886,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if(!mainGame->dField.deck_reversed || code)
pcard->SetCode(code & 0x7fffffff);
}
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
for (int i = 0; i < count; ++i) {
pcard = mainGame->dField.GetCard(player, LOCATION_DECK, mainGame->dField.deck[player].size() - 1);
mainGame->dField.deck[player].erase(mainGame->dField.deck[player].end() - 1);
......@@ -2908,7 +2916,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int final = mainGame->dInfo.lp[player] - val;
if (final < 0)
final = 0;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
mainGame->dInfo.lp[player] = final;
myswprintf(mainGame->dInfo.strLP[player], L"%d", mainGame->dInfo.lp[player]);
return true;
......@@ -2937,7 +2945,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int player = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
int val = BufferIO::ReadInt32(pbuf);
int final = mainGame->dInfo.lp[player] + val;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
mainGame->dInfo.lp[player] = final;
myswprintf(mainGame->dInfo.strLP[player], L"%d", mainGame->dInfo.lp[player]);
return true;
......@@ -2973,7 +2981,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO::ReadInt8(pbuf);
ClientCard* pc1 = mainGame->dField.GetCard(c1, l1, s1);
ClientCard* pc2 = mainGame->dField.GetCard(c2, l2, s2);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
if(pc1->equipTarget)
pc1->equipTarget->equipped.erase(pc1);
pc1->equipTarget = pc2;
......@@ -2999,7 +3007,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_LPUPDATE: {
int player = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
int val = BufferIO::ReadInt32(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
mainGame->dInfo.lp[player] = val;
myswprintf(mainGame->dInfo.strLP[player], L"%d", mainGame->dInfo.lp[player]);
return true;
......@@ -3020,7 +3028,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int s1 = BufferIO::ReadInt8(pbuf);
BufferIO::ReadInt8(pbuf);
ClientCard* pc = mainGame->dField.GetCard(c1, l1, s1);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
pc->equipTarget->equipped.erase(pc);
pc->equipTarget = 0;
} else {
......@@ -3046,7 +3054,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO::ReadInt8(pbuf);
ClientCard* pc1 = mainGame->dField.GetCard(c1, l1, s1);
ClientCard* pc2 = mainGame->dField.GetCard(c2, l2, s2);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
pc1->cardTarget.insert(pc2);
pc2->ownerTarget.insert(pc1);
} else {
......@@ -3072,7 +3080,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO::ReadInt8(pbuf);
ClientCard* pc1 = mainGame->dField.GetCard(c1, l1, s1);
ClientCard* pc2 = mainGame->dField.GetCard(c2, l2, s2);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
pc1->cardTarget.erase(pc2);
pc2->ownerTarget.erase(pc1);
} else {
......@@ -3093,7 +3101,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int final = mainGame->dInfo.lp[player] - cost;
if (final < 0)
final = 0;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) {
if(mainGame->dInfo.isReplaySkiping) {
mainGame->dInfo.lp[player] = final;
myswprintf(mainGame->dInfo.strLP[player], L"%d", mainGame->dInfo.lp[player]);
return true;
......@@ -3124,7 +3132,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if (pc->counters.count(type))
pc->counters[type] += count;
else pc->counters[type] = count;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
soundManager.PlaySoundEffect(SOUND_COUNTER_ADD);
myswprintf(textBuffer, dataManager.GetSysString(1617), dataManager.GetName(pc->code), count, dataManager.GetCounterName(type));
......@@ -3147,7 +3155,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pc->counters[type] -= count;
if (pc->counters[type] <= 0)
pc->counters.erase(type);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
soundManager.PlaySoundEffect(SOUND_COUNTER_REMOVE);
myswprintf(textBuffer, dataManager.GetSysString(1618), dataManager.GetName(pc->code), count, dataManager.GetCounterName(type));
......@@ -3170,7 +3178,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int ld = BufferIO::ReadInt8(pbuf);
int sd = BufferIO::ReadInt8(pbuf);
BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
float sy;
if (ld != 0) {
......@@ -3226,7 +3234,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int datk = BufferIO::ReadInt32(pbuf);
int ddef = BufferIO::ReadInt32(pbuf);
/*int dd = */BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
mainGame->gMutex.Lock();
ClientCard* pcard = mainGame->dField.GetCard(ca, la, sa);
......@@ -3282,7 +3290,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
*pwbuf++ = L']';
}
*pwbuf = 0;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
soundManager.PlaySoundEffect(SOUND_COIN);
mainGame->gMutex.Lock();
......@@ -3306,7 +3314,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
*pwbuf++ = L']';
}
*pwbuf = 0;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
soundManager.PlaySoundEffect(SOUND_DICE);
mainGame->gMutex.Lock();
......@@ -3320,7 +3328,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case MSG_ROCK_PAPER_SCISSORS: {
/*int player = */mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
mainGame->gMutex.Lock();
mainGame->PopupElement(mainGame->wHand);
......@@ -3329,7 +3337,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case MSG_HAND_RES: {
int res = BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
mainGame->stHintMsg->setVisible(false);
int res1 = (res & 0x3) - 1;
......@@ -3461,7 +3469,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if(chtype == CHINT_TURN) {
if(value == 0)
return true;
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
if(mainGame->dInfo.isReplaySkiping)
return true;
if(pcard->location & LOCATION_ONFIELD)
pcard->is_highlighting = true;
......@@ -3501,7 +3509,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
size_t pcount = (size_t)BufferIO::ReadInt8(pbuf);
size_t hcount = (size_t)BufferIO::ReadInt8(pbuf);
int topcode = BufferIO::ReadInt32(pbuf);
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
for (auto cit = mainGame->dField.deck[player].begin(); cit != mainGame->dField.deck[player].end(); ++cit) {
if(player == 0) (*cit)->dPos.Y = 0.4f;
else (*cit)->dPos.Y = -0.6f;
......@@ -3526,7 +3534,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->WaitFrameSignal(5);
}
//
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping)
if(!mainGame->dInfo.isReplaySkiping)
mainGame->gMutex.Lock();
if(mainGame->dField.deck[player].size() > mcount) {
while(mainGame->dField.deck[player].size() > mcount) {
......@@ -3574,10 +3582,10 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
}
mainGame->dField.extra_p_count[player] = pcount;
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping)
if(!mainGame->dInfo.isReplaySkiping)
mainGame->gMutex.Unlock();
//
if(!mainGame->dInfo.isReplay || !mainGame->dInfo.isReplaySkiping) {
if(!mainGame->dInfo.isReplaySkiping) {
for (auto cit = mainGame->dField.deck[player].begin(); cit != mainGame->dField.deck[player].end(); ++cit) {
ClientCard* pcard = *cit;
mainGame->dField.GetCardLocation(pcard, &pcard->curPos, &pcard->curRot);
......
......@@ -1665,6 +1665,17 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break;
}
case irr::KEY_KEY_Z: {
if(!mainGame->dInfo.isReplay && !mainGame->HasFocus(EGUIET_EDIT_BOX)) {
mainGame->dInfo.isReplaySkiping = event.KeyInput.PressedDown;
if(mainGame->dInfo.isStarted && !mainGame->dInfo.isReplaySkiping) {
mainGame->gMutex.Lock();
mainGame->dField.RefreshAllCards();
mainGame->gMutex.Unlock();
}
}
break;
}
case irr::KEY_F1:
case irr::KEY_F2:
case irr::KEY_F3:
......
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