docs(command-zone): add developer and user documentation

Add comprehensive documentation for the command zone feature.

Developer documentation:
- command_zone_architecture.md: detailed architecture overview
  - Layer separation (types, state, logic, graphics)
  - Component interactions and dependencies
  - Testing strategy and coverage
- Index update to include new architecture doc

User documentation:
- commander_format.md: how to use Commander format in Cockatrice
  - Zone configuration options
  - Gameplay mechanics (commander tax, zone reveals)
  - Tips for Commander games
- Index update to include new format doc
This commit is contained in:
DawnFire42 2026-02-26 15:53:29 -05:00
parent c2a10466db
commit 2b8090a69e
4 changed files with 240 additions and 2 deletions

View file

@ -0,0 +1,107 @@
@page command_zone_architecture Command Zone Architecture
The command zone feature implements Commander format support in Cockatrice,
providing zones for commander cards with manual tax tracking.
# Architecture Overview
The command zone follows Cockatrice's logic/graphics separation pattern:
```
┌───────────────────────────────────────────────────┐
│ Graphics: CommandZone, ZoneToggleButton, │
│ CommanderTaxCounter │
└───────────────────────────────────────────────────┘
│ signals/slots
┌───────────────────────────────────────────────────┐
│ Logic: CommandZoneLogic (card storage, positions) │
└───────────────────────────────────────────────────┘
```
# Zone Types
| Zone | Name Constant | Purpose | Enablement |
|------|---------------|---------|------------|
| Primary | `ZoneNames::COMMAND` | Main commander, always visible | `enable_command_zone` |
| Partner | `ZoneNames::PARTNER` | Partner commander, collapsible | `enable_command_zone` |
| Companion | `ZoneNames::COMPANION` | Ikoria companion card | `enable_companion_zone` |
| Background | `ZoneNames::BACKGROUND` | Baldur's Gate background | `enable_background_zone` |
All zones use the same `CommandZone` and `CommandZoneLogic` classes,
differentiated by the `isPrimaryZone` flag. Primary and Partner zones are always
created together when command zone is enabled. Companion and Background zones
can be enabled independently via separate game creation options.
Primary and Partner zones hold a single card (commander rules, tax counter positioning); Companion and Background support multiple cards for edge cases. See `supportsMultipleCards()` in `command_zone_types.h`.
# Key Components
## CommandZoneLogic
Manages the card list for a command zone. Overrides `addCardImpl()` to support
positional insertion when cards are reordered via drag-and-drop.
@see CommandZoneLogic
## CommandZone
Graphics layer handling rendering and input. Features:
- Vertical card centering
- Expand/collapse for partner zone
- Minimize mode (25% height)
- Drag-and-drop support
@see CommandZone
## CommanderTaxCounter
Visual counter showing cumulative commander tax. Positioned at top-left of
the zone. Players manually increment the counter when casting their commander.
@see CommanderTaxCounter
## ZoneToggleButton
Small button at the seam between zones. Clicking toggles the sibling zone
visibility. Used by the primary command zone to toggle the partner zone, and
can be reused by any zone that needs to toggle a sibling.
@see ZoneToggleButton
# Common Modifications
## Adding a new zone property
1. Add the property to `CommandZoneLogic`
2. Emit a signal when the property changes
3. Connect the signal in `CommandZone` to update visuals
## Changing zone appearance
1. Modify `CommandZone::paint()` for background/border
2. Modify `reorganizeCards()` for card layout
3. Update `boundingRect()` if size changes
## Modifying tax behavior
The tax counter value is managed by the server. To change tax logic:
1. Server-side changes in `libcockatrice_network/libcockatrice/network/server/remote/game/server_player.cpp`
2. Counter display changes in `CommanderTaxCounter`
# Menu Integration
The command zone context menus are managed by `PlayerMenu`:
| Menu | Zone | In Player Menu | Special Features |
|------|------|----------------|------------------|
| commandZoneMenu | Primary | Yes | View partner zone, partner toggle, tax counters for both |
| partnerZoneMenu | Partner | No (zone right-click only) | Self-toggle, partner tax counter |
| companionZoneMenu | Companion | Yes | Standard zone actions, no tax counter |
| backgroundZoneMenu | Background | Yes | Standard zone actions, no tax counter |
The `commandZoneMenu` consolidates all commander-related actions including partner
zone access ("View partner zone" action). The `partnerZoneMenu` is not added to
the main player menu but remains attached to the partner zone itself for direct
right-click access. This consolidation reduces menu clutter while maintaining
full functionality.
All menus are created in the `PlayerMenu` constructor and attached to their zones
in `setMenusForGraphicItems()`. Companion and Background zones have simpler
menus without tax counter adjustments (these mechanics don't use commander tax).
@see CommandZoneMenu
@see PlayerMenu

View file

@ -8,4 +8,6 @@
- @subpage querying_the_card_database
- @subpage loading_card_pictures
- @subpage displaying_cards
- @subpage displaying_cards
- @subpage command_zone_architecture

View file

@ -0,0 +1,125 @@
@page commander_format Commander Format Support
# Overview
Cockatrice provides dedicated support for the Commander (EDH) format, including specialized zones for managing your commander and partner commander cards.
## What is the Command Zone?
The Command Zone is a special area where your commander resides when not on the battlefield. In Cockatrice, this is represented as a dedicated zone that appears above the stack when playing Commander format games.
Key features:
- **Primary Command Zone**: Holds your main commander card
- **Partner Zone**: Expandable secondary zone for partner commanders
- **Companion Zone**: Optional zone for Ikoria companion cards
- **Background Zone**: Optional zone for Baldur's Gate background enchantments
- **Commander Tax Counters**: Visual tracking of commander tax (the additional mana cost each time you cast your commander from the command zone)
## Enabling the Command Zone
The Command Zone automatically appears when the game server indicates you're playing a Commander format game. If you don't see the Command Zone, check that:
1. The game room is configured for Commander format
2. The server supports command zones
## Using the Command Zone
### Designating a Commander
To place a card in the Command Zone:
1. Drag the card from your hand, library, or other zone to the Command Zone
2. Primary and Partner zones accept one card each; Companion and Background zones can hold multiple cards (for edge-case mechanics like Rule 0 multiple companions)
### Zone States
All zones toggle between **full size** and **minimized (25% height)** via double-click. Tax counters remain visible when minimized.
### Partner Zone
Click the toggle button at the bottom of the Command Zone (or use the context menu) to expand/collapse the Partner Zone. It behaves identically to the primary zone with its own card display, minimize capability, and dedicated Partner Tax counter.
> **Note**: The Partner Zone will not collapse if it contains a card or has a tax counter value greater than 0. This prevents accidentally hiding important game state.
### Companion Zone
The Companion Zone is designed for the Ikoria companion mechanic:
**When to use**: If your deck includes a companion card (a creature that can start outside the game if your deck meets its restriction), place it in the Companion Zone.
**Enabling**: The Companion Zone must be enabled when creating the game (see Game Creation Options below).
**Features**:
- Displays your companion card(s) publicly (supports multiple for Rule 0 edge cases)
- No tax counter (companion mechanic doesn't use commander tax)
- Collapsible to save screen space
### Background Zone
The Background Zone is designed for the Baldur's Gate "Choose a Background" mechanic:
**When to use**: If your commander has "Choose a Background" (like many commanders from Commander Legends: Battle for Baldur's Gate), place your background enchantment in this zone.
**Enabling**: The Background Zone must be enabled when creating the game (see Game Creation Options below).
**Features**:
- Displays your background enchantment(s) publicly (supports multiple for edge cases)
- No tax counter (backgrounds don't have commander tax)
- Collapsible to save screen space
## Commander Tax Tracking
Cockatrice tracks commander tax with dedicated counters:
- **Commander Tax Counter**: Appears in the top-left of the Command Zone
- **Partner Tax Counter**: Appears in the top-left of the Partner Zone (when expanded)
### Adjusting Tax Counters
Using the context menu (right-click on the zone):
- "Increase Commander Tax Counter (+1)" - Increments the tax by 1
- "Decrease Commander Tax Counter (-1)" - Decrements the tax by 1
Tax counters track the number of times your commander has been cast during the game.
## Context Menu Options
The battlefield's "Commander" submenu provides consolidated access to all zone actions: view zones, adjust tax counters (+1/-1), and toggle partner/companion/background zones. Right-clicking directly on a zone shows zone-specific options (view, tax counter for Primary/Partner, toggle, minimize).
## UI Summary
| Element | Location | Action |
|---------|----------|--------|
| Command Zone | Above the stack | Holds primary commander |
| Partner Zone | Below Command Zone (when expanded) | Holds partner commander |
| Companion Zone | Below Partner Zone (when enabled) | Holds companion card(s) |
| Background Zone | Below Companion Zone (when enabled) | Holds background enchantment(s) |
| Toggle Button | Bottom of Command Zone | Click to expand/collapse Partner Zone |
| Tax Counter | Top-left of Primary/Partner zones | Shows current commander tax |
| Minimize | Zone background | Double-click to toggle 25% height mode |
## Game Creation Options
When creating a game, you can configure which zones are available:
| Option | Default | Description |
|--------|---------|-------------|
| Enable Command Zone | Unchecked | Enables commander and partner zones with tax counters |
| Enable Companion Zone | Unchecked | Enables the Companion Zone for Ikoria companion mechanic |
| Enable Background Zone | Unchecked | Enables the Background Zone for Baldur's Gate backgrounds |
All three options are independent checkboxes. You can enable any combination:
- **Command Zone only**: Standard Commander/EDH gameplay
- **Companion Zone only**: Use companion cards in any format
- **Background Zone only**: Use backgrounds without commander zones
- **Any combination**: Mix and match as your game requires
**Defaults for new games**: All zone options default to unchecked. Your preferences are saved for future games when "Remember settings" is enabled.
## Tips
- Tax counters are persistent throughout the game and visible to all players
- Cards in the Command Zone are visible to all players (public information)
## See Also
- @ref creating_decks - How to create and edit decks
- @ref editing_decks - Detailed deck editing guide

View file

@ -1,5 +1,5 @@
@page user_reference User Reference
## Deck Management
- @subpage creating_decks
@ -7,6 +7,10 @@
- @subpage editing_decks
- @subpage exporting_decks
## Game Formats
- @subpage commander_format
## Release Channels
- @subpage beta_release