From 8b6eace312010b909a9bcb0636f39986e3c8a68e Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Thu, 3 Jan 2013 17:18:37 +0100 Subject: [PATCH] code cleanup --- common/server_cardzone.cpp | 22 +++++++++----- common/server_cardzone.h | 7 +++-- common/server_game.cpp | 4 +-- common/server_player.cpp | 62 +++++++++++++++++++------------------- 4 files changed, 52 insertions(+), 43 deletions(-) diff --git a/common/server_cardzone.cpp b/common/server_cardzone.cpp index c806dbca..3ed0234c 100644 --- a/common/server_cardzone.cpp +++ b/common/server_cardzone.cpp @@ -60,19 +60,20 @@ int Server_CardZone::removeCard(Server_Card *card) return index; } -Server_Card *Server_CardZone::getCard(int id, int *position) +Server_Card *Server_CardZone::getCard(int id, int *position, bool remove) { if (type != ServerInfo_Zone::HiddenZone) { - QListIterator CardIterator(cards); - int i = 0; - while (CardIterator.hasNext()) { - Server_Card *tmp = CardIterator.next(); + for (int i = 0; i < cards.size(); ++i) { + Server_Card *tmp = cards[i]; if (tmp->getId() == id) { if (position) *position = i; + if (remove) { + cards.removeAt(i); + tmp->setZone(0); + } return tmp; } - i++; } return NULL; } else { @@ -81,6 +82,10 @@ Server_Card *Server_CardZone::getCard(int id, int *position) Server_Card *tmp = cards[id]; if (position) *position = id; + if (remove) { + cards.removeAt(id); + tmp->setZone(0); + } return tmp; } } @@ -202,7 +207,10 @@ void Server_CardZone::insertCard(Server_Card *card, int x, int y) cards.append(card); } else { card->setCoords(0, 0); - cards.insert(x, card); + if (x == -1) + cards.append(card); + else + cards.insert(x, card); } card->setZone(this); } diff --git a/common/server_cardzone.h b/common/server_cardzone.h index 914ecc5b..2178427f 100644 --- a/common/server_cardzone.h +++ b/common/server_cardzone.h @@ -40,12 +40,14 @@ private: int cardsBeingLookedAt; QSet playersWithWritePermission; bool alwaysRevealTopCard; + QList cards; public: Server_CardZone(Server_Player *_player, const QString &_name, bool _has_coords, ServerInfo_Zone::ZoneType _type); ~Server_CardZone(); - + + const QList &getCards() const { return cards; } int removeCard(Server_Card *card); - Server_Card *getCard(int id, int *position = NULL); + Server_Card *getCard(int id, int *position = NULL, bool remove = false); int getCardsBeingLookedAt() const { return cardsBeingLookedAt; } void setCardsBeingLookedAt(int _cardsBeingLookedAt) { cardsBeingLookedAt = _cardsBeingLookedAt; } @@ -60,7 +62,6 @@ public: bool isColumnStacked(int x, int y) const; void fixFreeSpaces(GameEventStorage &ges); void moveCard(GameEventStorage &ges, QMap &coordMap, Server_Card *card, int x, int y); - QList cards; void insertCard(Server_Card *card, int x, int y); void shuffle(); void clear(); diff --git a/common/server_game.cpp b/common/server_game.cpp index 2cdd65ca..efee70a7 100644 --- a/common/server_game.cpp +++ b/common/server_game.cpp @@ -516,8 +516,8 @@ void Server_Game::unattachCards(GameEventStorage &ges, Server_Player *player) QMapIterator zoneIterator(player->getZones()); while (zoneIterator.hasNext()) { Server_CardZone *zone = zoneIterator.next().value(); - for (int i = 0; i < zone->cards.size(); ++i) { - Server_Card *card = zone->cards.at(i); + for (int i = 0; i < zone->getCards().size(); ++i) { + Server_Card *card = zone->getCards().at(i); // Make a copy of the list because the original one gets modified during the loop QList attachedCards = card->getAttachedCards(); diff --git a/common/server_player.cpp b/common/server_player.cpp index bfa53805..1cdb17c0 100644 --- a/common/server_player.cpp +++ b/common/server_player.cpp @@ -185,7 +185,7 @@ void Server_Player::setupZones() if (!currentCard) continue; for (int k = 0; k < currentCard->getNumber(); ++k) - z->cards.append(new Server_Card(currentCard->getName(), nextCardId++, 0, 0, z)); + z->insertCard(new Server_Card(currentCard->getName(), nextCardId++, 0, 0, z), -1, 0); } } @@ -209,11 +209,10 @@ void Server_Player::setupZones() else continue; - for (int j = 0; j < start->cards.size(); ++j) - if (start->cards[j]->getName() == QString::fromStdString(m.card_name())) { - Server_Card *card = start->cards[j]; - start->cards.removeAt(j); - target->cards.append(card); + for (int j = 0; j < start->getCards().size(); ++j) + if (start->getCards()[j]->getName() == QString::fromStdString(m.card_name())) { + Server_Card *card = start->getCard(j, NULL, true); + target->insertCard(card, -1, 0); break; } } @@ -286,16 +285,16 @@ Response::ResponseCode Server_Player::drawCards(GameEventStorage &ges, int numbe { Server_CardZone *deckZone = zones.value("deck"); Server_CardZone *handZone = zones.value("hand"); - if (deckZone->cards.size() < number) - number = deckZone->cards.size(); + if (deckZone->getCards().size() < number) + number = deckZone->getCards().size(); Event_DrawCards eventOthers; eventOthers.set_number(number); Event_DrawCards eventPrivate(eventOthers); for (int i = 0; i < number; ++i) { - Server_Card *card = deckZone->cards.takeFirst(); - handZone->cards.append(card); + Server_Card *card = deckZone->getCard(0, NULL, true); + handZone->insertCard(card, -1, 0); lastDrawList.append(card->getId()); ServerInfo_Card *cardInfo = eventPrivate.add_cards(); @@ -306,11 +305,11 @@ Response::ResponseCode Server_Player::drawCards(GameEventStorage &ges, int numbe ges.enqueueGameEvent(eventPrivate, playerId, GameEventStorageItem::SendToPrivate, playerId); ges.enqueueGameEvent(eventOthers, playerId, GameEventStorageItem::SendToOthers); - if (deckZone->getAlwaysRevealTopCard() && !deckZone->cards.isEmpty()) { + if (deckZone->getAlwaysRevealTopCard() && !deckZone->getCards().isEmpty()) { Event_RevealCards revealEvent; revealEvent.set_zone_name(deckZone->getName().toStdString()); revealEvent.set_card_id(0); - deckZone->cards.first()->getInfo(revealEvent.add_cards()); + deckZone->getCards().first()->getInfo(revealEvent.add_cards()); ges.enqueueGameEvent(revealEvent, playerId); } @@ -346,7 +345,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car return Response::RespContextError; if (!targetzone->hasCoords() && (x == -1)) - x = targetzone->cards.size(); + x = targetzone->getCards().size(); QList > cardsToMove; QMap cardProperties; @@ -525,19 +524,19 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car if (!ptString.isEmpty() && !faceDown) setCardAttrHelper(ges, targetzone->getName(), card->getId(), AttrPT, ptString); } - if (startzone->getAlwaysRevealTopCard() && !startzone->cards.isEmpty() && (originalPosition == 0)) { + if (startzone->getAlwaysRevealTopCard() && !startzone->getCards().isEmpty() && (originalPosition == 0)) { Event_RevealCards revealEvent; revealEvent.set_zone_name(startzone->getName().toStdString()); revealEvent.set_card_id(0); - startzone->cards.first()->getInfo(revealEvent.add_cards()); + startzone->getCards().first()->getInfo(revealEvent.add_cards()); ges.enqueueGameEvent(revealEvent, playerId); } - if (targetzone->getAlwaysRevealTopCard() && !targetzone->cards.isEmpty() && (newX == 0)) { + if (targetzone->getAlwaysRevealTopCard() && !targetzone->getCards().isEmpty() && (newX == 0)) { Event_RevealCards revealEvent; revealEvent.set_zone_name(targetzone->getName().toStdString()); revealEvent.set_card_id(0); - targetzone->cards.first()->getInfo(revealEvent.add_cards()); + targetzone->getCards().first()->getInfo(revealEvent.add_cards()); ges.enqueueGameEvent(revealEvent, playerId); } @@ -580,7 +579,7 @@ Response::ResponseCode Server_Player::setCardAttrHelper(GameEventStorage &ges, c QString result; if (cardId == -1) { - QListIterator CardIterator(zone->cards); + QListIterator CardIterator(zone->getCards()); while (CardIterator.hasNext()) { result = CardIterator.next()->setAttribute(attribute, attrValue, true); if (result.isNull()) @@ -782,11 +781,11 @@ Response::ResponseCode Server_Player::cmdShuffle(const Command_Shuffle & /*cmd*/ event.set_zone_name("deck"); ges.enqueueGameEvent(event, playerId); - if (deckZone->getAlwaysRevealTopCard() && !deckZone->cards.isEmpty()) { + if (deckZone->getAlwaysRevealTopCard() && !deckZone->getCards().isEmpty()) { Event_RevealCards revealEvent; revealEvent.set_zone_name(deckZone->getName().toStdString()); revealEvent.set_card_id(0); - deckZone->cards.first()->getInfo(revealEvent.add_cards()); + deckZone->getCards().first()->getInfo(revealEvent.add_cards()); ges.enqueueGameEvent(revealEvent, playerId); } @@ -805,12 +804,12 @@ Response::ResponseCode Server_Player::cmdMulligan(const Command_Mulligan & /*cmd return Response::RespContextError; Server_CardZone *hand = zones.value("hand"); - int number = (hand->cards.size() <= 1) ? initialCards : hand->cards.size() - 1; + int number = (hand->getCards().size() <= 1) ? initialCards : hand->getCards().size() - 1; Server_CardZone *deck = zones.value("deck"); - while (!hand->cards.isEmpty()) { + while (!hand->getCards().isEmpty()) { CardToMove *cardToMove = new CardToMove; - cardToMove->set_card_id(hand->cards.first()->getId()); + cardToMove->set_card_id(hand->getCards().first()->getId()); moveCard(ges, hand, QList() << cardToMove, deck, 0, 0, false); delete cardToMove; } @@ -1407,16 +1406,17 @@ Response::ResponseCode Server_Player::cmdDumpZone(const Command_DumpZone &cmd, R return Response::RespContextError; int numberCards = cmd.number_cards(); + const QList &cards = zone->getCards(); Response_DumpZone *re = new Response_DumpZone; ServerInfo_Zone *zoneInfo = re->mutable_zone_info(); zoneInfo->set_name(zone->getName().toStdString()); zoneInfo->set_type(zone->getType()); zoneInfo->set_with_coords(zone->hasCoords()); - zoneInfo->set_card_count(numberCards < zone->cards.size() ? zone->cards.size() : numberCards); + zoneInfo->set_card_count(numberCards < cards.size() ? cards.size() : numberCards); - for (int i = 0; (i < zone->cards.size()) && (i < numberCards || numberCards == -1); ++i) { - Server_Card *card = zone->cards[i]; + for (int i = 0; (i < cards.size()) && (i < numberCards || numberCards == -1); ++i) { + Server_Card *card = cards[i]; QString displayedName = card->getFaceDown() ? QString() : card->getName(); ServerInfo_Card *cardInfo = zoneInfo->add_card_list(); cardInfo->set_name(displayedName.toStdString()); @@ -1510,11 +1510,11 @@ Response::ResponseCode Server_Player::cmdRevealCards(const Command_RevealCards & QList cardsToReveal; if (!cmd.has_card_id()) - cardsToReveal = zone->cards; + cardsToReveal = zone->getCards(); else if (cmd.card_id() == -2) { - if (zone->cards.isEmpty()) + if (zone->getCards().isEmpty()) return Response::RespContextError; - cardsToReveal.append(zone->cards.at(rng->getNumber(0, zone->cards.size() - 1))); + cardsToReveal.append(zone->getCards().at(rng->getNumber(0, zone->getCards().size() - 1))); } else { Server_Card *card = zone->getCard(cmd.card_id()); if (!card) @@ -1600,11 +1600,11 @@ Response::ResponseCode Server_Player::cmdChangeZoneProperties(const Command_Chan ges.enqueueGameEvent(event, playerId); - if (!zone->cards.isEmpty() && cmd.always_reveal_top_card()) { + if (!zone->getCards().isEmpty() && cmd.always_reveal_top_card()) { Event_RevealCards revealEvent; revealEvent.set_zone_name(zone->getName().toStdString()); revealEvent.set_card_id(0); - zone->cards.first()->getInfo(revealEvent.add_cards()); + zone->getCards().first()->getInfo(revealEvent.add_cards()); ges.enqueueGameEvent(revealEvent, playerId); }