mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-28 08:52:19 -07:00
Fix Command Zone graphics/logic layers separation
1. CommandZoneMenu: Changed to take PlayerGraphicsItem* instead of
PlayerLogic*, accessing logic via player->getLogic()
2. Removed getCounterWidget() from PlayerLogic;
method already exists correctly in PlayerGraphicsItem
3. PlayerMenu: CommandZoneMenu, fixed signal
connection to use player->getLogic() for commandZoneSupportChanged
4. AbstractCounter: Connects to CounterState::activeChanged signal,
removing direct graphics calls from PlayerEventHandler
5. CommandZone: Explicit tax counter registration via registerTaxCounter()
with auto-cleanup, replacing childItems()/dynamic_cast iteration
Also fixed PlayerActions to query CounterState instead of AbstractCounter
for proper layer separation.
This commit is contained in:
parent
0b7a323adf
commit
15c1d47a0b
11 changed files with 55 additions and 56 deletions
|
|
@ -7,6 +7,7 @@
|
|||
#include "../../game_graphics/zones/table_zone.h"
|
||||
#include "../../interface/widgets/tabs/tab_game.h"
|
||||
#include "../../interface/widgets/utility/get_text_with_max.h"
|
||||
#include "../board/counter_state.h"
|
||||
#include "../zones/view_zone_logic.h"
|
||||
|
||||
#include <libcockatrice/card/database/card_database_manager.h>
|
||||
|
|
@ -1662,8 +1663,8 @@ void PlayerActions::actPlayAndIncreaseTax(QList<CardItem *> selectedCards)
|
|||
{
|
||||
playSelectedCardsImpl(selectedCards, false, [this](CardItem * /*card*/, const QString &originalZone) {
|
||||
if (originalZone == ZoneNames::COMMAND) {
|
||||
AbstractCounter *ctr = player->getCounterWidget(CounterIds::CommanderTax);
|
||||
if (ctr && ctr->isActive()) {
|
||||
CounterState *state = player->getCounters().value(CounterIds::CommanderTax, nullptr);
|
||||
if (state && state->isActive()) {
|
||||
sendIncCounter(CounterIds::CommanderTax, 2);
|
||||
}
|
||||
}
|
||||
|
|
@ -1674,8 +1675,8 @@ void PlayerActions::actPlayAndIncreasePartnerTax(QList<CardItem *> selectedCards
|
|||
{
|
||||
playSelectedCardsImpl(selectedCards, false, [this](CardItem * /*card*/, const QString &originalZone) {
|
||||
if (originalZone == ZoneNames::COMMAND) {
|
||||
AbstractCounter *ctr = player->getCounterWidget(CounterIds::PartnerTax);
|
||||
if (ctr && ctr->isActive()) {
|
||||
CounterState *state = player->getCounters().value(CounterIds::PartnerTax, nullptr);
|
||||
if (state && state->isActive()) {
|
||||
sendIncCounter(CounterIds::PartnerTax, 2);
|
||||
}
|
||||
}
|
||||
|
|
@ -1692,8 +1693,8 @@ void PlayerActions::sendIncCounter(int counterId, int delta)
|
|||
|
||||
void PlayerActions::actModifyTaxCounter(int counterId, int delta)
|
||||
{
|
||||
AbstractCounter *ctr = player->getCounterWidget(counterId);
|
||||
if (!ctr || !ctr->isActive()) {
|
||||
CounterState *state = player->getCounters().value(counterId, nullptr);
|
||||
if (!state || !state->isActive()) {
|
||||
return;
|
||||
}
|
||||
sendIncCounter(counterId, delta);
|
||||
|
|
@ -1701,13 +1702,13 @@ void PlayerActions::actModifyTaxCounter(int counterId, int delta)
|
|||
|
||||
void PlayerActions::actToggleTaxCounter(int counterId)
|
||||
{
|
||||
AbstractCounter *ctr = player->getCounterWidget(counterId);
|
||||
if (!ctr || (ctr->isActive() && ctr->getValue() != 0)) {
|
||||
CounterState *state = player->getCounters().value(counterId, nullptr);
|
||||
if (!state || (state->isActive() && state->getValue() != 0)) {
|
||||
return;
|
||||
}
|
||||
Command_SetCounterActive cmd;
|
||||
cmd.set_counter_id(counterId);
|
||||
cmd.set_active(!ctr->isActive());
|
||||
cmd.set_active(!state->isActive());
|
||||
sendGameCommand(cmd);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue