[DeckList] Refactor and cleanup methods that iterate over nodes (#6407)

* remove helpers

* create getZoneNodes method

* replace direct calls to getRoot and forEachCard

* remove more non-const uses of forEachCard

* make node getter return const lists

* one more usage

* address comment

* address comment again

* fix hash

* fix hashes (for real this time)
This commit is contained in:
RickyRister 2025-12-12 12:37:44 -08:00 committed by GitHub
parent a390c8ada7
commit 2e2682aad4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 125 additions and 202 deletions

View file

@ -102,28 +102,16 @@ void Server_Player::setupZones()
// ------------------------------------------------------------------
// Assign card ids and create deck from deck list
InnerDecklistNode *listRoot = deck->getRoot();
for (int i = 0; i < listRoot->size(); ++i) {
auto *currentZone = dynamic_cast<InnerDecklistNode *>(listRoot->at(i));
Server_CardZone *z;
if (currentZone->getName() == DECK_ZONE_MAIN) {
z = deckZone;
} else if (currentZone->getName() == DECK_ZONE_SIDE) {
z = sbZone;
} else {
continue;
auto insertCardsIntoZone = [this](auto cards, auto *zone) {
for (auto card : cards) {
for (int k = 0; k < card->getNumber(); ++k) {
zone->insertCard(new Server_Card(card->toCardRef(), nextCardId++, 0, 0, zone), -1, 0);
}
}
};
for (int j = 0; j < currentZone->size(); ++j) {
auto *currentCard = dynamic_cast<DecklistCardNode *>(currentZone->at(j));
if (!currentCard) {
continue;
}
for (int k = 0; k < currentCard->getNumber(); ++k) {
z->insertCard(new Server_Card(currentCard->toCardRef(), nextCardId++, 0, 0, z), -1, 0);
}
}
}
insertCardsIntoZone(deck->getCardNodes({DECK_ZONE_MAIN}), deckZone);
insertCardsIntoZone(deck->getCardNodes({DECK_ZONE_SIDE}), sbZone);
const QList<MoveCard_ToZone> &sideboardPlan = deck->getCurrentSideboardPlan();
for (const auto &m : sideboardPlan) {