9#include <QGraphicsScene>
11#include <QLoggingCategory>
16inline Q_LOGGING_CATEGORY(GameScenePlayerAdditionRemovalLog,
"game_scene.player_addition_removal");
138 QList<PlayerLogic *>
rotatePlayers(
const QList<PlayerLogic *> &players,
int firstPlayerIndex)
const;
206 const QList<const ServerInfo_Card *> &cardList,
207 bool withWritePermission);
221 void addArrow(QSharedPointer<ArrowData> data);
Definition abstract_card_item.h:20
Definition arrow_registry.h:27
Definition card_item.h:28
Definition card_zone_logic.h:26
Definition card_zone.h:26
void onCardRightClicked(AbstractCardItem *card, QPoint screenPos)
Definition game_scene.cpp:99
qreal calculateNewSceneWidth(const QSize &newSize, qreal minWidth) const
Calculates new scene width considering window aspect ratio.
Definition game_scene.cpp:417
static int determineColumnCount(int playerCount)
Determines the number of columns to display players in.
Definition game_scene.cpp:325
void toggleZoneView(PlayerLogic *player, const QString &zoneName, int numberCards, bool isReversed=false)
Toggles a zone view for a player.
Definition game_scene.cpp:623
void removeZoneView(ZoneViewWidget *item)
Removes a zone view widget from the scene.
Definition game_scene.cpp:672
void removePlayer(PlayerLogic *player)
Removes a player from the scene.
Definition game_scene.cpp:195
QList< CardItem * > selectedCards() const
Gets all selected CardItems.
Definition game_scene.cpp:67
void requestArrowDeletion(int playerId, int arrowId)
Queues up arrow deletion but doesn't directly modify the scene.
Definition game_scene.cpp:498
QList< PlayerLogic * > collectActivePlayers(int &firstPlayerIndex) const
Collects all active (non-conceded) players.
Definition game_scene.cpp:283
QSizeF computeSceneSizeAndPlayerLayout(const QList< PlayerLogic * > &playersPlaying, int columns)
Computes layout positions and scene size based on players and columns.
Definition game_scene.cpp:343
void resizeRubberBand(const QPointF &cursorPoint, int selectedCount)
Definition game_scene.cpp:760
QList< PlayerLogic * > rotatePlayers(const QList< PlayerLogic * > &players, int firstPlayerIndex) const
Rotates the list of players for layout.
Definition game_scene.cpp:310
void startRubberBand(const QPointF &selectionOrigin)
Definition game_scene.cpp:755
static CardZone * findTopmostZone(const QList< QGraphicsItem * > &items)
Finds the topmost card zone under the cursor.
Definition game_scene.cpp:574
void timerEvent(QTimerEvent *event) override
Handles animation timer updates.
Definition game_scene.cpp:723
PhasesToolbar * phasesToolbar
Toolbar showing game phases.
Definition game_scene.h:46
QList< qreal > calculateMinWidthByColumn() const
Computes the minimum width for each column based on player minimum widths.
Definition game_scene.cpp:398
void updateHoveredCard(CardItem *newCard)
Updates hovered card highlighting.
Definition game_scene.cpp:547
void clearViews()
Closes all zone views.
Definition game_scene.cpp:681
void deleteArrow(int playerId, int arrowId)
Definition game_scene.cpp:491
void onCardZoneChanged(CardItem *card, bool sameZone)
Definition game_scene.cpp:505
QTransform getViewTransform() const
Definition game_scene.cpp:700
static CardItem * findTopmostCardInZone(const QList< QGraphicsItem * > &items, CardZone *zone)
Finds the topmost card in a given zone, considering attachments and Z-order.
Definition game_scene.cpp:584
void beginCardHover(CardItem *card)
Activates hover state and escapes the card from its clip container so hover scaling is visible beyond...
Definition game_scene.cpp:558
void clearArrowsForPlayer(int playerId)
Definition game_scene.cpp:522
void arrowDeletionRequested(int creatorId, int arrowId)
void addRevealedZoneView(PlayerLogic *player, CardZoneLogic *zone, const QList< const ServerInfo_Card * > &cardList, bool withWritePermission)
Adds a revealed zone view (for shown cards).
Definition game_scene.cpp:656
void playSelectedFaceDown(AbstractCardItem *card)
Definition game_scene.cpp:131
static const int playerAreaSpacing
Space between player areas.
Definition game_scene.h:44
QSize viewSize
Current view size.
Definition game_scene.h:51
void stopRubberBand()
Definition game_scene.cpp:765
void clearArrowsForPlayerLocally(int playerId)
Definition game_scene.cpp:529
void closeMostRecentZoneView()
Closes the most recently added zone view.
Definition game_scene.cpp:691
bool event(QEvent *event) override
Handles hover updates.
Definition game_scene.cpp:712
void endCardHover(CardItem *card)
Deactivates hover state and restores the card to its clip container.
Definition game_scene.cpp:566
~GameScene() override
Destructor, cleans up timer and zone views.
Definition game_scene.cpp:45
int playerRotation
Rotation offset for player layout.
Definition game_scene.h:55
QPointer< CardItem > hoveredCard
Currently hovered card.
Definition game_scene.h:52
void retranslateUi()
Updates UI text for all zone views.
Definition game_scene.cpp:60
void registerAnimationItem(AbstractCardItem *card)
Registers a card for animation updates.
Definition game_scene.cpp:737
void processViewSizeChange(const QSize &newSize)
Handles view resize and redistributes player positions.
Definition game_scene.cpp:261
QList< QList< PlayerGraphicsItem * > > playersByColumn
Players organized by column.
Definition game_scene.h:48
void addArrow(QSharedPointer< ArrowData > data)
Directly modifies the scene.
Definition game_scene.cpp:453
QMap< int, PlayerGraphicsItem * > getPlayers() const
Definition game_scene.h:100
void adjustPlayerRotation(int rotationAdjustment)
Adjusts the global rotation offset for player layout.
Definition game_scene.cpp:218
void unregisterAnimationItem(AbstractCardItem *card)
Unregisters a card from animation updates.
Definition game_scene.cpp:745
QBasicTimer * animationTimer
Timer for card animations.
Definition game_scene.h:53
QTransform getViewportTransform() const
Definition game_scene.cpp:705
void addPlayer(PlayerLogic *player)
Adds a player to the scene and stores their graphics item.
Definition game_scene.cpp:159
PlayerGraphicsItem * viewForPlayer(int playerId)
Definition game_scene.h:105
QMap< int, PlayerGraphicsItem * > playerViews
ID lookup for player graphics items.
Definition game_scene.h:47
void resizeColumnsAndPlayers(const QList< qreal > &minWidthByColumn, qreal newWidth)
Resizes columns and distributes extra width to players.
Definition game_scene.cpp:437
void hideSelected(AbstractCardItem *card)
Definition game_scene.cpp:142
void playSelected(AbstractCardItem *card)
Definition game_scene.cpp:120
ArrowRegistry arrowRegistry
ID registry for arrow graphics items.
Definition game_scene.h:49
QList< ZoneViewWidget * > zoneViews
Active zone view widgets.
Definition game_scene.h:50
void sigResizeRubberBand(const QPointF &cursorPoint, int selectedCount)
void rearrange()
Recomputes the layout of players and the scene size.
Definition game_scene.cpp:235
QSet< CardItem * > cardsToAnimate
Cards currently animating.
Definition game_scene.h:54
void sigStartRubberBand(const QPointF &selectionOrigin)
GameScene(PhasesToolbar *_phasesToolbar, QObject *parent=nullptr)
Constructs the GameScene.
Definition game_scene.cpp:34
void updateHover(const QPointF &scenePos)
Updates which card is currently hovered based on scene coordinates.
Definition game_scene.cpp:538
void onCardSelectionChanged(AbstractCardItem *card, bool selected)
Definition game_scene.cpp:79
Definition player_graphics_item.h:25
Definition player_logic.h:64
Q_LOGGING_CATEGORY(GameSceneLog, "game_scene")