Commit ed32d849 authored by nanahira's avatar nanahira

Merge branch 'master' of github.com:Fluorohydride/ygopro into develop

parents afc35aba c5650a69
...@@ -201,9 +201,12 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -201,9 +201,12 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
deck[controler].push_back(pcard); deck[controler].push_back(pcard);
pcard->sequence = (unsigned char)(deck[controler].size() - 1); pcard->sequence = (unsigned char)(deck[controler].size() - 1);
} else { } else {
for (auto& pcard : deck[controler]) deck[controler].push_back(0);
pcard->sequence++; for(int i = deck[controler].size() - 1; i > 0; --i) {
deck[controler].insert(deck[controler].begin(), pcard); deck[controler][i] = deck[controler][i - 1];
deck[controler][i]->sequence++;
}
deck[controler][0] = pcard;
pcard->sequence = 0; pcard->sequence = 0;
} }
pcard->is_reversed = false; pcard->is_reversed = false;
...@@ -240,13 +243,15 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -240,13 +243,15 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
extra[controler].push_back(pcard); extra[controler].push_back(pcard);
pcard->sequence = (unsigned char)(extra[controler].size() - 1); pcard->sequence = (unsigned char)(extra[controler].size() - 1);
} else { } else {
int p = extra[controler].size() - extra_p_count[controler]; extra[controler].push_back(0);
int p = extra[controler].size() - extra_p_count[controler] - 1;
for(int i = extra[controler].size() - 1; i > p; --i) { for(int i = extra[controler].size() - 1; i > p; --i) {
extra[controler][i] = extra[controler][i - 1];
extra[controler][i]->sequence++; extra[controler][i]->sequence++;
extra[controler][i]->curPos += irr::core::vector3df(0, 0, 0.01f); extra[controler][i]->curPos += irr::core::vector3df(0, 0, 0.01f);
extra[controler][i]->mTransform.setTranslation(extra[controler][i]->curPos); extra[controler][i]->mTransform.setTranslation(extra[controler][i]->curPos);
} }
extra[controler].insert(extra[controler].begin() + p, pcard); extra[controler][p] = pcard;
pcard->sequence = p; pcard->sequence = p;
} }
if (pcard->position & POS_FACEUP) if (pcard->position & POS_FACEUP)
...@@ -257,54 +262,69 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -257,54 +262,69 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
RefreshCardCountDisplay(); RefreshCardCountDisplay();
} }
ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) { ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) {
ClientCard* pcard = nullptr; ClientCard* pcard = 0;
auto erase_card = [](std::vector<ClientCard*>& lst, int seq) {
for (int i = seq; i < (int)lst.size() - 1; ++i) {
lst[i] = lst[i + 1];
lst[i]->sequence--;
lst[i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
lst[i]->mTransform.setTranslation(lst[i]->curPos);
}
lst.pop_back();
};
switch (location) { switch (location) {
case LOCATION_DECK: { case LOCATION_DECK: {
pcard = deck[controler][sequence]; pcard = deck[controler][sequence];
erase_card(deck[controler], sequence); for (size_t i = sequence; i < deck[controler].size() - 1; ++i) {
deck[controler][i] = deck[controler][i + 1];
deck[controler][i]->sequence--;
deck[controler][i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
deck[controler][i]->mTransform.setTranslation(deck[controler][i]->curPos);
}
deck[controler].erase(deck[controler].end() - 1);
break; break;
} }
case LOCATION_HAND: { case LOCATION_HAND: {
pcard = hand[controler][sequence]; pcard = hand[controler][sequence];
for (int i = sequence; i < (int)hand[controler].size() - 1; ++i) { for (size_t i = sequence; i < hand[controler].size() - 1; ++i) {
hand[controler][i] = hand[controler][i + 1]; hand[controler][i] = hand[controler][i + 1];
hand[controler][i]->sequence--; hand[controler][i]->sequence--;
} }
hand[controler].pop_back(); hand[controler].erase(hand[controler].end() - 1);
break; break;
} }
case LOCATION_MZONE: { case LOCATION_MZONE: {
pcard = mzone[controler][sequence]; pcard = mzone[controler][sequence];
mzone[controler][sequence] = nullptr; mzone[controler][sequence] = 0;
break; break;
} }
case LOCATION_SZONE: { case LOCATION_SZONE: {
pcard = szone[controler][sequence]; pcard = szone[controler][sequence];
szone[controler][sequence] = nullptr; szone[controler][sequence] = 0;
break; break;
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
pcard = grave[controler][sequence]; pcard = grave[controler][sequence];
erase_card(grave[controler], sequence); for (size_t i = sequence; i < grave[controler].size() - 1; ++i) {
grave[controler][i] = grave[controler][i + 1];
grave[controler][i]->sequence--;
grave[controler][i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
grave[controler][i]->mTransform.setTranslation(grave[controler][i]->curPos);
}
grave[controler].erase(grave[controler].end() - 1);
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
pcard = remove[controler][sequence]; pcard = remove[controler][sequence];
erase_card(remove[controler], sequence); for (size_t i = sequence; i < remove[controler].size() - 1; ++i) {
remove[controler][i] = remove[controler][i + 1];
remove[controler][i]->sequence--;
remove[controler][i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
remove[controler][i]->mTransform.setTranslation(remove[controler][i]->curPos);
}
remove[controler].erase(remove[controler].end() - 1);
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
pcard = extra[controler][sequence]; pcard = extra[controler][sequence];
erase_card(extra[controler], sequence); for (size_t i = sequence; i < extra[controler].size() - 1; ++i) {
extra[controler][i] = extra[controler][i + 1];
extra[controler][i]->sequence--;
extra[controler][i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
extra[controler][i]->mTransform.setTranslation(extra[controler][i]->curPos);
}
extra[controler].erase(extra[controler].end() - 1);
if (pcard->position & POS_FACEUP) if (pcard->position & POS_FACEUP)
extra_p_count[controler]--; extra_p_count[controler]--;
break; break;
......
Subproject commit bb6fd728598dc9c6fd4890d0c7a643d6b725be71 Subproject commit 7b7b95c582fa71f01154a0afcdf0d85f4516e35a
Subproject commit 04b75ba25de7d43b701cdf472dc14fd0dfc0a04c Subproject commit 4dfd94e07dfab9cbbc6f41ffa3043eda52181e34
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