Commit 63cc7453 authored by Chen Bill's avatar Chen Bill

update ClientField::AddCard

parent 7e0c451e
...@@ -204,16 +204,10 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -204,16 +204,10 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
case LOCATION_DECK: { case LOCATION_DECK: {
if (sequence != 0 || deck[controler].size() == 0) { if (sequence != 0 || deck[controler].size() == 0) {
deck[controler].push_back(pcard); deck[controler].push_back(pcard);
pcard->sequence = (unsigned char)(deck[controler].size() - 1);
} else { } else {
deck[controler].push_back(0); deck[controler].insert(deck[controler].begin(), pcard);
for(int i = deck[controler].size() - 1; i > 0; --i) {
deck[controler][i] = deck[controler][i - 1];
deck[controler][i]->sequence++;
}
deck[controler][0] = pcard;
pcard->sequence = 0;
} }
ResetSequence(deck[controler], true);
pcard->is_reversed = false; pcard->is_reversed = false;
pcard->ClearData(); pcard->ClearData();
pcard->ClearTarget(); pcard->ClearTarget();
...@@ -222,7 +216,7 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -222,7 +216,7 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
} }
case LOCATION_HAND: { case LOCATION_HAND: {
hand[controler].push_back(pcard); hand[controler].push_back(pcard);
pcard->sequence = (unsigned char)(hand[controler].size() - 1); ResetSequence(hand[controler], false);
break; break;
} }
case LOCATION_MZONE: { case LOCATION_MZONE: {
...@@ -235,30 +229,22 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -235,30 +229,22 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
grave[controler].push_back(pcard); grave[controler].push_back(pcard);
pcard->sequence = (unsigned char)(grave[controler].size() - 1); ResetSequence(grave[controler], true);
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
remove[controler].push_back(pcard); remove[controler].push_back(pcard);
pcard->sequence = (unsigned char)(remove[controler].size() - 1); ResetSequence(remove[controler], true);
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
if(extra_p_count[controler] == 0 || (pcard->position & POS_FACEUP)) { if(extra_p_count[controler] == 0 || (pcard->position & POS_FACEUP)) {
extra[controler].push_back(pcard); extra[controler].push_back(pcard);
pcard->sequence = (unsigned char)(extra[controler].size() - 1);
} else { } else {
extra[controler].push_back(0); size_t faceup_begin = extra[controler].size() - extra_p_count[controler];
int p = extra[controler].size() - extra_p_count[controler] - 1; extra[controler].insert(extra[controler].begin() + faceup_begin, pcard);
for(int i = extra[controler].size() - 1; i > p; --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][p] = pcard;
pcard->sequence = p;
} }
ResetSequence(extra[controler], true);
if (pcard->position & POS_FACEUP) if (pcard->position & POS_FACEUP)
extra_p_count[controler]++; extra_p_count[controler]++;
break; break;
......
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