* [Cleanup] Unused #includes
Took 44 minutes
* [Cleanup] More unused #includes
Took 55 minutes
* [Cleanup] Include QSet
Took 4 minutes
* [Cleanup] Include QDebug in deck_list.cpp
Took 3 minutes
* [Cleanup] Include protocol stuff in servatrice_database_interface.h
Took 3 minutes
* [Cleanup] Include QDialogButtonBox
Took 8 minutes
* [Cleanup] Include QUrl
Took 8 minutes
* [Cleanup] Include QTextOption in header.
Took 3 minutes
* [Cleanup] Include QMap in user_list_manager.h
Took 8 minutes
* [Cleanup] Adjust qjson
Took 8 minutes
* [Cleanup] include button box.
Took 3 minutes
* [Cleanup] Redo fwd declarations.
* [Cleanup] Redo last removed fwd declarations.
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [DeckList] Disable copy constructor
Took 1 hour 44 minutes
Took 1 minute
# Commit time for manual adjustment:
# Took 28 seconds
Took 33 seconds
* Revert member to pointer.
Took 19 minutes
* Revert pulling up setters/getters now that getDeckList is no longer const.
Took 6 minutes
* Revert more.
Took 2 minutes
* One more fix.
Took 1 minute
* Update cockatrice/src/interface/deck_loader/deck_loader.cpp
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
* Refactor player menus into helper classes.
Took 2 hours 6 minutes
Took 11 minutes
* Lint.
Took 6 minutes
Took 22 seconds
* Refactor card and move menu.
Took 1 hour 6 minutes
Took 36 seconds
Took 52 seconds
* Set active shortcuts, move player info stuff to card menu.
Took 25 minutes
Took 18 seconds
* Refactor say and utility menu.
Took 54 minutes
Took 2 minutes
Took 5 minutes
Took 11 minutes
* Rename folder.
Took 24 minutes
Took 6 minutes
* Refactor sideboard menu.
Took 26 minutes
* Remove unused variable in constructor.
Took 42 seconds
* Lint.
Took 11 minutes
* Nullptr check
Took 8 minutes
* Use localOrJudge check
Took 6 minutes
* Fix the build.
Took 7 minutes
Took 35 seconds
* PlayerList things.
Took 16 minutes
* Retranslate and set shortcuts for everything.
Took 10 minutes
* Correctly nullptr out sayMenu if not local
Took 3 minutes
* Don't check playerInfo in sbMenu shortcutsActive
Took 3 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* Player refactor.
Took 1 hour 43 minutes
Took 1 minute
Took 23 seconds
* Tiny lint.
Took 3 minutes
* Hook up tap logic again.
Took 13 minutes
* Fix an include.
Took 3 minutes
* Stuff.
Took 6 minutes
* Fix typo.
Took 7 minutes
* Include.
Took 1 minute
* Reorganize method/variable definitions, remove unused ones.
Took 1 hour 8 minutes
Took 24 seconds
* Clean up some unused imports.
Took 6 minutes
* Player holds the deck, emits deckChanged(), other elements player->getDeck() to respond to changes.
Took 37 minutes
* Connect player->openDeckEditor signal directly in the player constructor
Took 6 minutes
* Emit openDeckEditor signal in player_actions again.
Took 3 minutes
* Do to-do's
Took 3 hours 32 minutes
* Lint.
Took 3 minutes
* Lint again.
Took 2 minutes
* Fix include.
Took 32 minutes
* The stack should ensure card visibility.
Took 21 minutes
* Fine, the game can remember the tab.
Took 10 minutes
Took 21 seconds
Took 9 seconds
* zoneId is a dynamic gameplay property and thus belongs in player.cpp
Took 11 minutes
Took 19 seconds
* Signal view removal, addition.
Took 5 minutes
* Ensure all players are considered local in local game.
Took 10 minutes
* ENSURE they are.
Took 8 minutes
* Bounds check data sent by QAction()
Took 54 minutes
* Move comment.
Took 20 seconds
* Reimplement logging category for game_event_handler.cpp, remove linebreaks.
Took 36 seconds
* PlayerGraphicsItem is responsible for retranslateUi, not Player.
Took 14 seconds
* Set menu for sideboard again, translate some menu titles, reimplement actIncPT action
Took 54 seconds
* Comment spacing.
Took 43 seconds
* Change message_log_widget.cpp slots to take CardZoneLogic parameters as emitted by PlayerEventHandler.
Took 7 minutes
Took 14 seconds
* Remove unused player_logger.cpp
Took 2 minutes
* Query local game state correctly from tab_supervisor again
Took 3 minutes
* Revert Deck legality checker.
Took 3 minutes
* Instantiate menu before graphics item.
Took 1 hour 5 minutes
Took 55 minutes
* Differentiate games and replays.
Took 9 seconds
* Lint.
Took 10 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* Move game state and event handling out of tab_game and into separate classes.
Took 6 hours 38 minutes
Took 23 seconds
* Meta Info
Took 14 hours 36 minutes
* Properly respond to game started again.
Took 49 minutes
* Hook up the message log widgets to game events again.
Took 33 minutes
Took 7 seconds
* Lint.
Took 4 minutes
* Hook up playerListWidget.
Took 1 hour 2 minutes
Took 10 seconds
* Hook up playerListWidget properly.
Took 1 hour 17 minutes
* Fix regressions.
Took 17 minutes
Took 9 seconds
* Log the local player joining too.
Took 2 minutes
* Connect some player signals unrelated to this refactor again.
Took 5 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* extract cardMenu from CardItem
* move cardMenu saving to TabGame
* delete TabGame::updateCardMenu
* move checking to updateCardMenu
* unset activeCard when all cards are unselected
Tokens created through Ctrl + T use the pinned printing, if available.
Tokens created through a related card menu use a token from the same set, if available.
Took 2 hours 25 minutes
Took 10 seconds
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* Add sort hand shortcut
* add function to sort hand by type and name
* rig up the sort hand to the player
* fix sorting param
* use getShortcut instead of getSingleShortcut
* use correct method
* change default sorting
---------
Co-authored-by: Zach H <zahalpern+github@gmail.com>
* Add method to increment all counters on cards on table
* add keyboard shortcut
* register action for menu
* register action for menu
* Change menu text
* Move to Counters submenu
* Change function name
* Change menu, update function to handle selected vs non selected cards
* Use getShortcut instead of getSingleShortcut
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
---------
Co-authored-by: Paul Carroll <paul.x.carroll@questdiagnostics.com>
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
Co-authored-by: Zach H <zahalpern+github@gmail.com>
* feat: Configurable colors for card counter
This patch adds support for:
- User-defined colors for card counters;
- 3 additional types of card counters.
The colors used for counters is stored locally and not shared with other
users. This is intentional as the feature is likely to be used for
improved accessibility.
In order to preserve backwards-compatibility, and because I don't have a
better idea, counters keep their existing color-based names (Red, Green,
Yellow) in menus and in the message log. For consistency, the new
counters also get assigned color-based names (Cyan, Purple, Magenta).
This choice is a compromise, as allowing user-defined names for counters
raises many additional (UI/UX) questions that I don't know how to
answer. A good long-term solution would be to include counter names as
part of a game definition system and hence would be in scope for #1740.
The choice of adding 3 additional types of counters and the Cyan, Purple
and Magenta names are not random. The existing code for determining
counter colors goes: Red, Green, Yellow, Cyan, Purple, Magenta, Black
(unreadable) and thus 6 is the maximum number of counters that existing
versions of Cockatrice are able to support. This way, released clients
get a degraded experience (cannot interact with the new counters,
messages in the server log say "Player X places 1 on Card (now 1)"
without specifying 1 of what), but do see the counters properly.
Fixes#2020
* Do not use %n
* Use SettingsManager
* Use qSin instead of sin
Fix build failures with old GCC.
* Use letters for card counter names
* Place card counter actions in separate menu
* Remove copy-paste error
* include QtMath
* Do not color whole settings page
* derp
---------
Co-authored-by: Zach H <zahalpern+github@gmail.com>
* Remove `isView` flag from CardZone
This flag is used for two purposes:
1. It is used as a check for casting to a zone to a `ZoneViewZone`;
2. Non-view zones are added to the player's zones on construction
This patch removes the `isView` flag and instead:
1. We directly cast zones to `ZoneViewZone` using a dynamic (qobject)
cast and use the result of the cast instead of the `isView` flag to
detect if we are a view zone or not;
2. The player records its own zones when they are created, simplifying
control flow.
* Review
* client: Support arbitrary game zones
Currently, the client ignores cards in unknown zones, as there is an
implicit assumption that the set of zones known by the server and the
client are the same.
This patch makes it so that the client accept "custom zones" from the
server (zones outside the builtin deck, graveyard, exile, sideboard,
table, stack and hand zones) using the information from the
ServerInfo_CardZone. Moving cards from/into these zones happens
through a "View custom zone" action in the Game > Player menu and
properly appears in the chat.
Note that this patch intentionally does not introduce any support for
having the server actually create such zones. Instead, this patch aims
to improve backwards compatibility for when we do get to adding this
capability in the future, by making sure that current clients will be
able to interact with future new zones (even if suboptimally).
* add new fields to proto
* update token dlg
* send facedown in command
* update server to get it to work
* disable certain edits when face down
* update client event processing
* log face-down token creation
* Don't support colors on face-down tokens
The other client doesn't know about the color, so it causes a desync
* Update wording
Co-authored-by: Basile Clement <Elarnon@users.noreply.github.com>
* Allow annotations on face-down tokens
---------
Co-authored-by: Basile Clement <Elarnon@users.noreply.github.com>
* Remove `isView` flag from CardZone
This flag is used for two purposes:
1. It is used as a check for casting to a zone to a `ZoneViewZone`;
2. Non-view zones are added to the player's zones on construction
This patch removes the `isView` flag and instead:
1. We directly cast zones to `ZoneViewZone` using a dynamic (qobject)
cast and use the result of the cast instead of the `isView` flag to
detect if we are a view zone or not;
2. The player records its own zones when they are created, simplifying
control flow.
* Review
* Use enum for ThemeManager brushes
This patch introduces an enum to distinguish the different brushes that
can be set by the theme (hand, stack, etc.) and generic functions taking
the enum rather than having one copy of each function for each brush.
This is preliminary work before merging StackZone and HandZone to
simplify #4974.
* Include <array> header
* Header spacing
* Fix move to top of library shuffling an extra card
* Update cockatrice/src/game/player/player.cpp
---------
Co-authored-by: ebbit1q <ebbit1q@gmail.com>
* move card to play before creating attached token
* leave comment
* hardcode createCard target zone to table
To get attached token from graveyard/exile to work
* Move logging from QDebug to QCDebug and introduce LoggingCategories.
* Lint.
* Unlint like one change.
* Remove .debug category since this is autofilled by Qt and used to differentiate between QCDebug and QCWarning and QCError.
* Uncomment defaults, include main category.
* Make PictureLoader logging a bit more useful.
* Lint...?
* Address comments.
* Clean up some unnecessary classes in logging statements.
* Add a new message format to the logging handler.
* Lint.
* Lint.
* Support Windows in Regex
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>