mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
Support viewing the bottom X cards of library (#5410)
* Get cardIds to update properly in bottom view (#5414) * Get bottom view to update properly when card is inserted into known portion (#5415) --------- Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
This commit is contained in:
parent
81b85e97df
commit
6078dd092a
17 changed files with 154 additions and 41 deletions
|
|
@ -424,7 +424,8 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges,
|
|||
int xCoord,
|
||||
int yCoord,
|
||||
bool fixFreeSpaces,
|
||||
bool undoingDraw)
|
||||
bool undoingDraw,
|
||||
bool isReversed)
|
||||
{
|
||||
// Disallow controller change to other zones than the table.
|
||||
if (((targetzone->getType() != ServerInfo_Zone::PublicZone) || !targetzone->hasCoords()) &&
|
||||
|
|
@ -542,7 +543,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges,
|
|||
|
||||
if (card) {
|
||||
++xIndex;
|
||||
int newX = xCoord + xIndex;
|
||||
int newX = isReversed ? targetzone->getCards().size() - xCoord + xIndex : xCoord + xIndex;
|
||||
|
||||
if (targetzone->hasCoords()) {
|
||||
newX = targetzone->getFreeGridColumn(newX, yCoord, card->getName(), faceDown);
|
||||
|
|
@ -553,7 +554,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges,
|
|||
|
||||
targetzone->insertCard(card, newX, yCoord);
|
||||
int targetLookedCards = targetzone->getCardsBeingLookedAt();
|
||||
bool sourceKnownToPlayer = sourceBeingLookedAt && !card->getFaceDown();
|
||||
bool sourceKnownToPlayer = isReversed || (sourceBeingLookedAt && !card->getFaceDown());
|
||||
if (targetzone->getType() == ServerInfo_Zone::HiddenZone && targetLookedCards >= newX) {
|
||||
if (sourceKnownToPlayer) {
|
||||
targetLookedCards += 1;
|
||||
|
|
@ -1247,7 +1248,7 @@ Server_Player::cmdMoveCard(const Command_MoveCard &cmd, ResponseContainer & /*rc
|
|||
cardsToMove.append(&cmd.cards_to_move().card(i));
|
||||
}
|
||||
|
||||
return moveCard(ges, startZone, cardsToMove, targetZone, cmd.x(), cmd.y());
|
||||
return moveCard(ges, startZone, cardsToMove, targetZone, cmd.x(), cmd.y(), true, false, cmd.is_reversed());
|
||||
}
|
||||
|
||||
Response::ResponseCode
|
||||
|
|
@ -2008,13 +2009,14 @@ Server_Player::cmdDumpZone(const Command_DumpZone &cmd, ResponseContainer &rc, G
|
|||
zoneInfo->set_card_count(numberCards < cards.size() ? cards.size() : numberCards);
|
||||
|
||||
for (int i = 0; (i < cards.size()) && (i < numberCards || numberCards == -1); ++i) {
|
||||
Server_Card *card = cards[i];
|
||||
const auto &findId = cmd.is_reversed() ? cards.size() - numberCards + i : i;
|
||||
Server_Card *card = cards[findId];
|
||||
QString displayedName = card->getFaceDown() ? QString() : card->getName();
|
||||
ServerInfo_Card *cardInfo = zoneInfo->add_card_list();
|
||||
cardInfo->set_provider_id(card->getProviderId().toStdString());
|
||||
cardInfo->set_name(displayedName.toStdString());
|
||||
if (zone->getType() == ServerInfo_Zone::HiddenZone) {
|
||||
cardInfo->set_id(i);
|
||||
cardInfo->set_id(findId);
|
||||
} else {
|
||||
cardInfo->set_id(card->getId());
|
||||
cardInfo->set_x(card->getX());
|
||||
|
|
@ -2050,6 +2052,7 @@ Server_Player::cmdDumpZone(const Command_DumpZone &cmd, ResponseContainer &rc, G
|
|||
event.set_zone_owner_id(otherPlayer->getPlayerId());
|
||||
event.set_zone_name(zone->getName().toStdString());
|
||||
event.set_number_cards(numberCards);
|
||||
event.set_is_reversed(cmd.is_reversed());
|
||||
ges.enqueueGameEvent(event, playerId);
|
||||
}
|
||||
rc.setResponseExtension(re);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue