Commit f2278ae7 authored by Chen Bill's avatar Chen Bill Committed by GitHub

use vector rbegin (#2628)

* use vector rbegin

* const reference

* use vector assign

* minor update

* init
parent 85793b71
......@@ -88,11 +88,11 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, int rule) {
if(!list)
return 0;
int dc = 0;
if((int)deck.main.size() < DECK_MIN_SIZE || (int)deck.main.size() > DECK_MAX_SIZE)
if(deck.main.size() < DECK_MIN_SIZE || deck.main.size() > DECK_MAX_SIZE)
return ((unsigned)DECKERROR_MAINCOUNT << 28) + deck.main.size();
if((int)deck.extra.size() > EXTRA_MAX_SIZE)
if(deck.extra.size() > EXTRA_MAX_SIZE)
return ((unsigned)DECKERROR_EXTRACOUNT << 28) + deck.extra.size();
if((int)deck.side.size() > SIDE_MAX_SIZE)
if(deck.side.size() > SIDE_MAX_SIZE)
return ((unsigned)DECKERROR_SIDECOUNT << 28) + deck.side.size();
if (rule < 0 || rule >= 6)
return 0;
......
......@@ -567,37 +567,32 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
wchar_t formatBuffer[2048];
switch(command_location) {
case LOCATION_DECK: {
for(int i = (int)deck[command_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(deck[command_controler][i]);
selectable_cards.assign(deck[command_controler].rbegin(), deck[command_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1000), deck[command_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
}
case LOCATION_MZONE: {
ClientCard* pcard = mzone[command_controler][command_sequence];
for(int i = 0; i < (int)pcard->overlayed.size(); ++i)
selectable_cards.push_back(pcard->overlayed[i]);
selectable_cards.assign(pcard->overlayed.begin(), pcard->overlayed.end());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), pcard->overlayed.size());
mainGame->wCardSelect->setText(formatBuffer);
break;
}
case LOCATION_GRAVE: {
for(int i = (int)grave[command_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(grave[command_controler][i]);
selectable_cards.assign(grave[command_controler].rbegin(), grave[command_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[command_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
}
case LOCATION_REMOVED: {
for(int i = (int)remove[command_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(remove[command_controler][i]);
selectable_cards.assign(remove[command_controler].rbegin(), remove[command_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[command_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
}
case LOCATION_EXTRA: {
for(int i = (int)extra[command_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(extra[command_controler][i]);
selectable_cards.assign(extra[command_controler].rbegin(), extra[command_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[command_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1098,8 +1093,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_DECK: {
if(deck[hovered_controler].size() == 0)
break;
for(int i = (int)deck[hovered_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(deck[hovered_controler][i]);
selectable_cards.assign(deck[hovered_controler].rbegin(), deck[hovered_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1000), deck[hovered_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1107,8 +1101,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_MZONE: {
if(!clicked_card || clicked_card->overlayed.size() == 0)
break;
for(int i = 0; i < (int)clicked_card->overlayed.size(); ++i)
selectable_cards.push_back(clicked_card->overlayed[i]);
selectable_cards.assign(clicked_card->overlayed.begin(), clicked_card->overlayed.end());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), clicked_card->overlayed.size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1116,8 +1109,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_GRAVE: {
if(grave[hovered_controler].size() == 0)
break;
for(int i = (int)grave[hovered_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(grave[hovered_controler][i]);
selectable_cards.assign(grave[hovered_controler].rbegin(), grave[hovered_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[hovered_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1125,8 +1117,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_REMOVED: {
if(remove[hovered_controler].size() == 0)
break;
for(int i = (int)remove[hovered_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(remove[hovered_controler][i]);
selectable_cards.assign(remove[hovered_controler].rbegin(), remove[hovered_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[hovered_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1134,8 +1125,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_EXTRA: {
if(extra[hovered_controler].size() == 0)
break;
for(int i = (int)extra[hovered_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(extra[hovered_controler][i]);
selectable_cards.assign(extra[hovered_controler].rbegin(), extra[hovered_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[hovered_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1153,8 +1143,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_MZONE: {
if(!clicked_card || clicked_card->overlayed.size() == 0)
break;
for(int i = 0; i < (int)clicked_card->overlayed.size(); ++i)
selectable_cards.push_back(clicked_card->overlayed[i]);
selectable_cards.assign(clicked_card->overlayed.begin(), clicked_card->overlayed.end());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), clicked_card->overlayed.size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1162,8 +1151,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_GRAVE: {
if(grave[hovered_controler].size() == 0)
break;
for(int i = (int)grave[hovered_controler].size() - 1; i >= 0 ; --i)
selectable_cards.push_back(grave[hovered_controler][i]);
selectable_cards.assign(grave[hovered_controler].rbegin(), grave[hovered_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[hovered_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1171,8 +1159,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_REMOVED: {
if (remove[hovered_controler].size() == 0)
break;
for (int i = (int)remove[hovered_controler].size() - 1; i >= 0; --i)
selectable_cards.push_back(remove[hovered_controler][i]);
selectable_cards.assign(remove[hovered_controler].rbegin(), remove[hovered_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[hovered_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......@@ -1180,8 +1167,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_EXTRA: {
if (extra[hovered_controler].size() == 0)
break;
for (int i = (int)extra[hovered_controler].size() - 1; i >= 0; --i)
selectable_cards.push_back(extra[hovered_controler][i]);
selectable_cards.assign(extra[hovered_controler].rbegin(), extra[hovered_controler].rend());
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[hovered_controler].size());
mainGame->wCardSelect->setText(formatBuffer);
break;
......
......@@ -200,7 +200,7 @@ inline bool check_msg_size(int size) {
return true;
}
inline unsigned int GetPosition(unsigned char* qbuf, int offset) {
inline unsigned int GetPosition(unsigned char* qbuf, size_t offset) {
unsigned int info = 0;
std::memcpy(&info, qbuf + offset, sizeof info);
return info >> 24;
......
......@@ -448,28 +448,19 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
last_replay.WriteInt32(host_info.draw_count, false);
last_replay.WriteInt32(opt, false);
last_replay.Flush();
last_replay.WriteInt32(pdeck[0].main.size(), false);
for(int i = (int)pdeck[0].main.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[0].main[i]->first, 0, 0, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[0].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[0].extra.size(), false);
for(int i = (int)pdeck[0].extra.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[0].extra[i]->first, 0, 0, LOCATION_EXTRA, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[0].extra[i]->first, false);
}
last_replay.WriteInt32(pdeck[1].main.size(), false);
for(int i = (int)pdeck[1].main.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[1].main[i]->first, 1, 1, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[1].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[1].extra.size(), false);
for(int i = (int)pdeck[1].extra.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[1].extra[i]->first, 1, 1, LOCATION_EXTRA, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[1].extra[i]->first, false);
}
auto load = [&](const std::vector<code_pointer>& deck_container, uint8_t p, uint8_t location) {
last_replay.WriteInt32(deck_container.size(), false);
for (auto cit = deck_container.rbegin(); cit != deck_container.rend(); ++cit) {
new_card(pduel, (*cit)->first, p, p, location, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32((*cit)->first, false);
}
};
load(pdeck[0].main, 0, LOCATION_DECK);
load(pdeck[0].extra, 0, LOCATION_EXTRA);
load(pdeck[1].main, 1, LOCATION_DECK);
load(pdeck[1].extra, 1, LOCATION_EXTRA);
last_replay.Flush();
unsigned char startbuf[32];
unsigned char startbuf[32]{};
auto pbuf = startbuf;
BufferIO::WriteInt8(pbuf, MSG_START);
BufferIO::WriteInt8(pbuf, 0);
......
......@@ -426,52 +426,30 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
last_replay.WriteInt32(host_info.draw_count, false);
last_replay.WriteInt32(opt, false);
last_replay.Flush();
//
last_replay.WriteInt32(pdeck[0].main.size(), false);
for(int i = (int)pdeck[0].main.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[0].main[i]->first, 0, 0, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[0].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[0].extra.size(), false);
for(int i = (int)pdeck[0].extra.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[0].extra[i]->first, 0, 0, LOCATION_EXTRA, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[0].extra[i]->first, false);
}
//
last_replay.WriteInt32(pdeck[1].main.size(), false);
for(int i = (int)pdeck[1].main.size() - 1; i >= 0; --i) {
new_tag_card(pduel, pdeck[1].main[i]->first, 0, LOCATION_DECK);
last_replay.WriteInt32(pdeck[1].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[1].extra.size(), false);
for(int i = (int)pdeck[1].extra.size() - 1; i >= 0; --i) {
new_tag_card(pduel, pdeck[1].extra[i]->first, 0, LOCATION_EXTRA);
last_replay.WriteInt32(pdeck[1].extra[i]->first, false);
}
//
last_replay.WriteInt32(pdeck[3].main.size(), false);
for(int i = (int)pdeck[3].main.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[3].main[i]->first, 1, 1, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[3].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[3].extra.size(), false);
for(int i = (int)pdeck[3].extra.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[3].extra[i]->first, 1, 1, LOCATION_EXTRA, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[3].extra[i]->first, false);
}
//
last_replay.WriteInt32(pdeck[2].main.size(), false);
for(int i = (int)pdeck[2].main.size() - 1; i >= 0; --i) {
new_tag_card(pduel, pdeck[2].main[i]->first, 1, LOCATION_DECK);
last_replay.WriteInt32(pdeck[2].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[2].extra.size(), false);
for(int i = (int)pdeck[2].extra.size() - 1; i >= 0; --i) {
new_tag_card(pduel, pdeck[2].extra[i]->first, 1, LOCATION_EXTRA);
last_replay.WriteInt32(pdeck[2].extra[i]->first, false);
}
auto load_single = [&](const std::vector<code_pointer>& deck_container, uint8_t p, uint8_t location) {
last_replay.WriteInt32(deck_container.size(), false);
for (auto cit = deck_container.rbegin(); cit != deck_container.rend(); ++cit) {
new_card(pduel, (*cit)->first, p, p, location, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32((*cit)->first, false);
}
};
auto load_tag = [&](const std::vector<code_pointer>& deck_container, uint8_t p, uint8_t location) {
last_replay.WriteInt32(deck_container.size(), false);
for (auto cit = deck_container.rbegin(); cit != deck_container.rend(); ++cit) {
new_tag_card(pduel, (*cit)->first, p, location);
last_replay.WriteInt32((*cit)->first, false);
}
};
load_single(pdeck[0].main, 0, LOCATION_DECK);
load_single(pdeck[0].extra, 0, LOCATION_EXTRA);
load_tag(pdeck[1].main, 0, LOCATION_DECK);
load_tag(pdeck[1].extra, 0, LOCATION_EXTRA);
load_single(pdeck[3].main, 1, LOCATION_DECK);
load_single(pdeck[3].extra, 1, LOCATION_EXTRA);
load_tag(pdeck[2].main, 1, LOCATION_DECK);
load_tag(pdeck[2].extra, 1, LOCATION_EXTRA);
last_replay.Flush();
unsigned char startbuf[32];
unsigned char startbuf[32]{};
auto pbuf = startbuf;
BufferIO::WriteInt8(pbuf, MSG_START);
BufferIO::WriteInt8(pbuf, 0);
......
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