Cockatrice/libcockatrice_network/libcockatrice/network/server/remote/game
Bryce! 078d0858a3
[Game] Reveal multiple distinct random hand cards to a recipient (#7753)
* Add distinct random hand reveals with private recipient delivery

* Route random hand reveals through PlayerActions

Keep command creation, dispatch and response handling in the game action
layer. HandMenu requests the typed operation and presents the count and
failure dialogs. Show the chosen recipient, distinguish the count action
from the immediate single-card reveal, and use the game window as parent.

* Apply project formatting to random-reveal warning construction

* Simplify random reveal to follow existing command patterns

Forward server dispatch through cmdRevealRandomCards and use ordinary PlayerActions command sending. Remove the bespoke server-version error UI and long-lived-object guards.

Reduce the test from 246 to 150 lines with two focused cases using the current RoleInfo player API, preserving distinct-card, private-event and rejected-count coverage.

* Extract the shared reveal helper and name the test's CardRef fields

RickyRister asked for cmdRevealCards and cmdRevealRandomCards to share a
helper instead of threading a randomCount parameter through the reveal
virtual. Restore the three-argument cmdRevealCards signature, resolve the
reveal preconditions and zone in resolveRevealZone, and let both commands
build their card list and hand it to revealCards, which owns the private and
public Event_RevealCards construction and the enqueue. The random command no
longer fabricates a Command_RevealCards with the -2 sentinel to re-enter the
legacy path; its behaviour is unchanged.

Name the CardRef fields in random_reveal_test instead of relying on
declaration order, and state in the user documentation that a rejected
reveal is not reported in the client, matching what the client does.

---------

Co-authored-by: Lukas Brübach <44814898+BruebachL@users.noreply.github.com>
2026-11-08 16:41:14 +01:00
..
dump_zone_range.cpp [Server] Resolve a zone dump request to an in-range index span (#7401) 2026-10-13 11:23:13 +02:00
dump_zone_range.h [Server] Resolve a zone dump request to an in-range index span (#7401) 2026-10-13 11:23:13 +02:00
game_config.h [Server/Client/Protocol] Shuffle or reorder player seats before a game starts (#7398) 2026-11-04 15:44:50 +01:00
role_info.h [ServerGame] Refactor out spectator/judge bools into RoleInfo (#7761) 2026-11-02 00:37:05 -07:00
server_abstract_participant.cpp [Game] Reveal multiple distinct random hand cards to a recipient (#7753) 2026-11-08 16:41:14 +01:00
server_abstract_participant.h [Game] Reveal multiple distinct random hand cards to a recipient (#7753) 2026-11-08 16:41:14 +01:00
server_abstract_player.cpp [Game] Reveal multiple distinct random hand cards to a recipient (#7753) 2026-11-08 16:41:14 +01:00
server_abstract_player.h [Game] Reveal multiple distinct random hand cards to a recipient (#7753) 2026-11-08 16:41:14 +01:00
server_arrow.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_arrow.h add phase to delete arrows in to protocol (#6159) 2025-11-26 09:16:10 -05:00
server_arrowtarget.cpp Turn Card, Deck_List, Protocol, RNG, Network (Client, Server), Settings and Utility into libraries and remove cockatrice_common. (#6212) 2025-10-09 07:36:12 +02:00
server_arrowtarget.h [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_card.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_card.h [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_cardzone.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_cardzone.h [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_counter.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_counter.h Unify counter clamp arithmetic into shared addClamped() helper (#7009) 2026-06-28 16:10:57 -07:00
server_deck_validation_strategy.h [Server] Add deck validation strategy interface (#7129) 2026-08-17 11:21:25 +02:00
server_game.cpp [Server/Client/Protocol] Shuffle or reorder player seats before a game starts (#7398) 2026-11-04 15:44:50 +01:00
server_game.h [Server/Client/Protocol] Shuffle or reorder player seats before a game starts (#7398) 2026-11-04 15:44:50 +01:00
server_game_lifecycle_strategy.h [Server] Add game lifecycle strategy hook (#7130) 2026-08-23 10:26:14 +02:00
server_match_game_factory.h [Server] Add abstract match game factory for future tournament modes (#7132) 2026-08-24 07:54:47 +02:00
server_match_result_strategy.h [Server] Add match result strategy hook (#7131) 2026-08-23 18:37:15 +02:00
server_move_card_struct.h Turn Card, Deck_List, Protocol, RNG, Network (Client, Server), Settings and Utility into libraries and remove cockatrice_common. (#6212) 2025-10-09 07:36:12 +02:00
server_player.cpp [ServerGame] Refactor out spectator/judge bools into RoleInfo (#7761) 2026-11-02 00:37:05 -07:00
server_player.h [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_spectator.cpp [ServerGame] Refactor out spectator/judge bools into RoleInfo (#7761) 2026-11-02 00:37:05 -07:00
server_spectator.h [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00