[Refactor] Move the remaining zone commands out of game_graphics/zones/

This commit is contained in:
Lukas Brübach 2026-10-06 13:10:58 +02:00 • committed by GitHub
parent 271d40302c
commit aabec45d2b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 64 additions and 39 deletions

View file

@ -50,6 +50,7 @@
#include <libcockatrice/protocol/pb/command_change_zone_properties.pb.h>
#include <libcockatrice/protocol/pb/command_create_token.pb.h>
#include <libcockatrice/protocol/pb/command_draw_cards.pb.h>
#include <libcockatrice/protocol/pb/command_dump_zone.pb.h>
#include <libcockatrice/protocol/pb/command_flip_card.pb.h>
#include <libcockatrice/protocol/pb/command_game_say.pb.h>
#include <libcockatrice/protocol/pb/command_inc_counter.pb.h>
@ -2035,6 +2036,40 @@ void PlayerActions::moveCards(CardZoneLogic *startZone,
sendGameCommand(cmd);
}
PendingCommand *PlayerActions::prepareZoneDump(CardZoneLogic *zone, int numberCards)
{
if (!zone) {
return nullptr;
}
Command_DumpZone cmd;
cmd.set_player_id(zone->getPlayer()->getPlayerInfo()->getId());
cmd.set_zone_name(zone->getName().toStdString());
cmd.set_number_cards(numberCards);
if (auto *viewLogic = qobject_cast<ZoneViewZoneLogic *>(zone)) {
cmd.set_is_reversed(viewLogic->getIsReversed());
}
return prepareGameCommand(cmd);
}
void PlayerActions::actToggleTapped(const QString &zoneName, const QList<CardItem *> &cards, bool tapped)
{
QList<const ::google::protobuf::Message *> cmdList;
for (CardItem *card : cards) {
if (card->getTapped() != tapped) {
auto *cmd = new Command_SetCardAttr;
cmd->set_zone(zoneName.toStdString());
cmd->set_card_id(card->getId());
cmd->set_attribute(AttrTapped);
cmd->set_attr_value(tapped ? "1" : "0");
cmdList.append(cmd);
}
}
sendGameCommand(prepareGameCommand(cmdList));
}
void PlayerActions::sendGameCommand(const google::protobuf::Message &command)
{
if (player->getPlayerInfo()->getJudge() && !player->getPlayerInfo()->getLocal()) {

View file

@ -71,6 +71,21 @@ public:
void
moveCards(CardZoneLogic *startZone, CardZoneLogic *targetZone, int x, int y, const QList<CardMoveRequest> &cards);
/**
* @brief Prepares a dump of the given zone, for the caller to connect to and send.
* @param zone Zone to dump.
* @param numberCards How many cards to dump, -1 for all.
*/
PendingCommand *prepareZoneDump(CardZoneLogic *zone, int numberCards);
/**
* @brief Sets the tapped state of the cards that do not already have it.
* @param zoneName Zone the cards belong to.
* @param cards Cards the view wants toggled.
* @param tapped Desired tapped state.
*/
void actToggleTapped(const QString &zoneName, const QList<CardItem *> &cards, bool tapped);
void moveOneCardUntil(CardItem *card);
void stopMoveTopCardsUntil();