* [Game][Player] Split Player into PlayerLogic/PlayerGraphicsItem
Took 4 minutes
Took 48 seconds
Took 2 minutes
* Drop early return.
Took 1 hour 13 minutes
Took 2 minutes
Took 1 minute
Took 24 seconds
* [Game][Player] Split Player into PlayerLogic/PlayerGraphicsItem
Took 4 minutes
Took 58 seconds
* [Game][Menus] Make Menus accept PlayerGraphicsItem instead of PlayerLogic
Took 7 minutes
Took 4 minutes
Took 9 seconds
Took 2 minutes
Took 5 minutes
Took 58 seconds
* [Game][Player] Split Player into PlayerLogic/PlayerGraphicsItem
Took 4 minutes
Took 2 minutes
* [Game][Menus] Make Menus accept PlayerGraphicsItem instead of PlayerLogic
Took 7 minutes
Took 1 minute
Took 57 seconds
* [Game][Player] Move dialog creation out of player_actions and into player_dialogs
Took 3 minutes
Took 1 second
* Fix typo.
Took 5 minutes
* Addressed comments.
Took 16 minutes
Took 11 seconds
* Reintroduce clearCardsToDelete check.
Took 3 minutes
* Capture cards before semaphore.
Took 1 minute
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Game][Player] Split Player into PlayerLogic/PlayerGraphicsItem
Took 4 minutes
Took 58 seconds
Took 2 minutes
* [Game][Menus] Make Menus accept PlayerGraphicsItem instead of PlayerLogic
Took 7 minutes
Took 4 minutes
Took 9 seconds
Took 2 minutes
Took 5 minutes
Took 58 seconds
---------
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>
* Fix#6952: prevent deck loss when saving to a full disk
DeckLoader::saveToFile() opened the target with QFile in WriteOnly mode,
which truncates the existing file to 0 bytes the moment it is opened. The
serializers (DeckList::saveToFile_Native/_Plain) always return true and the
result of flush() was ignored, so a write that failed part-way -- e.g.
because the disk was full -- left a 0-byte file behind yet was still
reported (and logged) as a successful save. The same truncate-then-write
pattern in updateLastLoadedTimestamp() could destroy a deck on load.
Switch both paths to QSaveFile, which writes to a temporary file and only
atomically replaces the target if commit() succeeds. On any write or flush
failure commit() returns false, the original deck is left untouched, and
the failure is logged instead of being reported as success.
* Use QSaveFile in convertToCockatriceFormat() too
convertToCockatriceFormat() had the same data-loss pattern: QFile WriteOnly
truncated the .cod, saveToFile_Native() always returns true, and the original
file was then removed unconditionally -- so a full disk during conversion wrote
a 0-byte .cod and then deleted the source deck.
Switch to QSaveFile (write + atomic commit), remove the original only after a
successful commit, and move the format check ahead of the file open so an
already-Cockatrice or unsupported deck never truncates or deletes anything.
Raised in review by ZeldaZach.
* [Game] [Arrows] Track creatorId, use arrowData in arrowItem, use registry, generate unique arrow id's on server side and delete-on-exist inserts.
Took 2 minutes
Took 1 minute
* Fix emitting slot instead of signal.
Took 15 minutes
* Clear arrows locally in special circumstances i.e. teardown.
Took 28 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* rename method
* [TabDeckEditor] Refactor card database view into own class
* fix include guard
* directly get key signals for eventFilter
* fix includes
* [Server][Game][Arrows] Properly notify clients when deleting arrows on card move and transform into
Took 15 minutes
* Observe "not found" response
Took 18 minutes
Took 4 seconds
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Game][Arrows] Deleting arrows has no acknowledgement command so we have to delete locally as well.
Took 22 minutes
* Fix properly.
Took 15 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.
* Refactor server counter API to own overflow protection and filter no-op events
Counter modifications now clamp to int bounds server-side and return change
status, allowing command handlers to skip network broadcasts when values
don't actually change.
* Centralize MAX_COUNTERS_ON_CARD and enforce [0, 999] bounds on server
- Move MAX_COUNTERS_ON_CARD to trice_limits.h
- Server clamps values in setCounter() and incrementCounter()
- Client uses clamped comparison to allow recovery from invalid states
- Add tests for clamping behavior
* move incrementCount() implementation from header to cpp
* [Game][Arrows] Split Arrows into ArrowData and ArrowItem
Took 13 minutes
Took 5 seconds
Took 1 minute
Took 26 seconds
* Address comments.
Took 17 minutes
Took 9 seconds
Took 1 minute
* Change check.
Took 3 minutes
* Pass by const reference.
Took 10 minutes
* Remove extra method
Took 2 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Counters] Split counters into graphics and logic states
Took 22 minutes
* Don't have widget hold pointer to state -> Copy what we need and subscribe to changes.
Took 12 minutes
Took 5 seconds
* Sync value too.
Took 3 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Player] Stop reaching into graphics_item and emit signals instead for conceded and zoneId
Took 7 minutes
Took 3 seconds
* Add sameValue check.
Took 3 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>