- Make AbstractCounter::setActive() the sole owner of counter visibility; document the contract.
- Drop the redundant setVisible() from CommandZone::rearrangeTaxCounters(); it now only lays out by isActive().
- Format tax log lines with a single atomic 4-arg arg() instead of mixing string and int overloads.
- Route value updates through the virtual setValue() so
CommanderTaxCounter's tooltip tracks the live value instead of
freezing at its initial value
- Reject deletion of reserved tax counters in cmdDelCounter; they are
server-managed and must persist for the game
- Register aMoveToCommandZone and aViewCommandZone as bindable
shortcuts, matching their sibling move/view zone actions
- Extract overflow-safe clamped addition into addClamped(), shared by
Server_Card and Server_Counter instead of duplicated
- Update stale comments: the clip-container note (now used by
CommandZone) and CommandZone's layout docs (defer to
SelectZone::layoutCardsVertically)
- Initialize commandZoneGraphicsItem to nullptr so the pervasive null
checks have defined behavior before initializeZones() runs
- Remove unused getTaxCounterWidgets()
- Enforce the "reset tax to 0 before deactivating" invariant server-side
in cmdSetCounterActive, not just in the UI
- Hide tax increment/decrement menu actions at their bounds (0 and
MAX_COUNTER_VALUE) to avoid sending no-op commands
- Drop redundant/inconsistent toggle labels from CommandZoneMenu::
retranslateUi(); updateTaxCounterActionStates() owns them
- Add default=-1 to Event_SetCounterActive.counter_id for parity with
Command_SetCounterActive
- Add missing isCommandZoneCounterBlocked check to cmdSetCounterActive
- Revert accidental deck view layout change from b4057a86
- Fix duplicate @param in playSelectedCardsImpl doc
- Add null check for PlayerLogic in CommandZoneMenu constructor
- Add index bounds check in CommandZone handleDropEvent
- Add index bounds check in StackZone handleDropEvent
- Add ownership comment for tax counter widget creation
- Add command zone to zoneGraphicsItems map
- Conditionally show command zone menu item based on server support
- Remove layer-violating includes from player_logic.cpp
- Fix tax counter increment (1 per cast, not 2)
- Add getTaxCounterIfActive() helper to PlayerGraphicsItem
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.
- Add CommandZone and CommandZoneLogic for commander
- Add CommanderTaxCounter
- Add counter active state protocol (show/hide tax counters)
- Add "Enable Command Zone" option in game creation dialogs
- Add context menu actions for command zone operations
Took 9 minutes
Took 11 minutes
* [Game][Player] Pull out graphics_items out of player_logic
Took 25 seconds
Took 9 minutes
* [Game] Move graphics files into game_graphics
Took 1 minute
Took 2 minutes
Took 23 seconds
Took 1 minute
Took 2 seconds
* Include.
Took 4 minutes
Took 3 minutes
Took 4 minutes
Took 1 minute
Took 3 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Game][Player] Split Player into PlayerLogic/PlayerGraphicsItem
Took 4 minutes
Took 48 seconds
* Drop early return.
Took 1 hour 13 minutes
Took 2 minutes
Took 1 minute
* Delete player view.
Took 37 seconds
* Restore card counter color in menu.
Took 5 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Previously, minOffset (10px) was enforced unconditionally, causing card
tops to overflow zone bounds when many cards were stacked. For example,
50 cards in a 200px zone would place the last card's top at y=490.
Now offsets compress below minOffset when necessary to keep all card
tops visible. The constraint is guarded by !allowBottomOverflow to
preserve future clipping zone semantics.
* [Game/Zones] Simple move refactor to differentiate between logic and graphics for zones
Took 21 minutes
* Clean up game/zones/logic folder.
Took 6 minutes
* Adjust tests.
Took 3 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* style: Add braces to all control flow statements
Standardize code style by adding explicit braces to all single-statement
control flow blocks (if, else, for, while) across the entire codebase.
Also documents the InsertBraces clang-format option (requires v15+) for
future automated enforcement.
* InsertBraces-check-enabled
* [Refactor] Move AbstractGraphicsItem and GraphicsItemType to game_graphics/board folder.
Took 3 minutes
* Update CMakeLists.txt
Took 12 minutes
* Update CMakeLists.txt
Took 12 minutes
Took 2 minutes
Took 16 seconds
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>