Commit 489e0792 authored by Chen Bill's avatar Chen Bill Committed by GitHub

Refactor ClientField destructor (#2926)

* Refactor card deletion

* add override to destructor
parent 86a9ca5d
...@@ -27,12 +27,10 @@ ClientField::~ClientField() { ...@@ -27,12 +27,10 @@ ClientField::~ClientField() {
} }
hand[i].clear(); hand[i].clear();
for (auto& card : mzone[i]) { for (auto& card : mzone[i]) {
if (card)
delete card; delete card;
card = nullptr; card = nullptr;
} }
for (auto& card : szone[i]) { for (auto& card : szone[i]) {
if (card)
delete card; delete card;
card = nullptr; card = nullptr;
} }
...@@ -44,7 +42,6 @@ ClientField::~ClientField() { ...@@ -44,7 +42,6 @@ ClientField::~ClientField() {
delete card; delete card;
} }
remove[i].clear(); remove[i].clear();
for (auto& card : extra[i]) { for (auto& card : extra[i]) {
delete card; delete card;
} }
...@@ -57,30 +54,33 @@ ClientField::~ClientField() { ...@@ -57,30 +54,33 @@ ClientField::~ClientField() {
} }
void ClientField::Clear() { void ClientField::Clear() {
for(int i = 0; i < 2; ++i) { for(int i = 0; i < 2; ++i) {
for(auto cit = deck[i].begin(); cit != deck[i].end(); ++cit) for (auto& card : deck[i]) {
delete *cit; delete card;
}
deck[i].clear(); deck[i].clear();
for(auto cit = hand[i].begin(); cit != hand[i].end(); ++cit) for (auto& card : hand[i]) {
delete *cit; delete card;
}
hand[i].clear(); hand[i].clear();
for(auto cit = mzone[i].begin(); cit != mzone[i].end(); ++cit) { for (auto& card : mzone[i]) {
if(*cit) delete card;
delete *cit; card = nullptr;
*cit = 0; }
} for (auto& card : szone[i]) {
for(auto cit = szone[i].begin(); cit != szone[i].end(); ++cit) { delete card;
if(*cit) card = nullptr;
delete *cit; }
*cit = 0; for (auto& card : grave[i]) {
} delete card;
for(auto cit = grave[i].begin(); cit != grave[i].end(); ++cit) }
delete *cit;
grave[i].clear(); grave[i].clear();
for(auto cit = remove[i].begin(); cit != remove[i].end(); ++cit) for (auto& card : remove[i]) {
delete *cit; delete card;
}
remove[i].clear(); remove[i].clear();
for(auto cit = extra[i].begin(); cit != extra[i].end(); ++cit) for (auto& card : extra[i]) {
delete *cit; delete card;
}
extra[i].clear(); extra[i].clear();
deck_act[i] = false; deck_act[i] = false;
grave_act[i] = false; grave_act[i] = false;
...@@ -88,8 +88,9 @@ void ClientField::Clear() { ...@@ -88,8 +88,9 @@ void ClientField::Clear() {
extra_act[i] = false; extra_act[i] = false;
pzone_act[i] = false; pzone_act[i] = false;
} }
for(auto sit = overlay_cards.begin(); sit != overlay_cards.end(); ++sit) for (auto& card : overlay_cards) {
delete *sit; delete card;
}
overlay_cards.clear(); overlay_cards.clear();
extra_p_count[0] = 0; extra_p_count[0] = 0;
extra_p_count[1] = 0; extra_p_count[1] = 0;
......
...@@ -93,7 +93,7 @@ public: ...@@ -93,7 +93,7 @@ public:
std::mt19937 rnd; std::mt19937 rnd;
ClientField(); ClientField();
~ClientField(); ~ClientField() override;
void Clear(); void Clear();
void Initial(int player, int deckc, int extrac, int sidec = 0); void Initial(int player, int deckc, int extrac, int sidec = 0);
void ResetSequence(std::vector<ClientCard*>& list, bool reset_height); void ResetSequence(std::vector<ClientCard*>& list, bool reset_height);
......
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