[Refactor] Move table row mapping from TableZone into TableZoneLogic (#7413)

* [Refactor] Move table row mapping from TableZone into TableZoneLogic

* [Game] Use TableZoneLogic::ROW_COUNT directly per review

* [Format] Match clang-format line breaking in table_zone

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2026-10-31 18:44:07 +01:00 • committed by GitHub
parent d30d275296
commit 52c5bd2ea3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 47 additions and 43 deletions

View file

@ -62,7 +62,8 @@ TableZone::TableZone(TableZoneLogic *_logic, bool _mirrored, QGraphicsItem *pare
updateBg();
height = MARGIN_TOP + MARGIN_BOTTOM + TABLEROWS * CardDimensions::HEIGHT + (TABLEROWS - 1) * PADDING_Y;
height = MARGIN_TOP + MARGIN_BOTTOM + TableZoneLogic::ROW_COUNT * CardDimensions::HEIGHT +
(TableZoneLogic::ROW_COUNT - 1) * PADDING_Y;
width = MIN_WIDTH;
currentMinimumWidth = width;
@ -397,7 +398,7 @@ QPointF TableZone::mapFromGrid(QPoint gridPoint) const
}
if (isInverted()) {
gridPoint.setY(TABLEROWS - 1 - gridPoint.y());
gridPoint.setY(TableZoneLogic::ROW_COUNT - 1 - gridPoint.y());
}
// Start with margin plus stacked card offset
@ -423,10 +424,10 @@ QPoint TableZone::mapToGrid(const QPointF &mapPoint) const
const int gridPointHeight = CardDimensions::HEIGHT + PADDING_Y;
int gridPointY = (y + PADDING_Y / 2) / gridPointHeight;
gridPointY = clampValidTableRow(gridPointY);
gridPointY = TableZoneLogic::clampValidTableRow(gridPointY);
if (isInverted()) {
gridPointY = TABLEROWS - 1 - gridPointY;
gridPointY = TableZoneLogic::ROW_COUNT - 1 - gridPointY;
}
// Calculating the x-coordinate of the grid space requires adding up the
@ -471,22 +472,3 @@ QPointF TableZone::closestGridPoint(const QPointF &point)
}
return mapFromGrid(gridPoint);
}
int TableZone::clampValidTableRow(const int row)
{
if (row < 0) {
return 0;
}
if (row >= TABLEROWS) {
return TABLEROWS - 1;
}
return row;
}
int TableZone::tableRowToGridY(int tableRow)
{
if (tableRow > 2) {
tableRow = 1;
}
return clampValidTableRow(2 - tableRow);
}

View file

@ -7,6 +7,7 @@
#ifndef TABLEZONE_H
#define TABLEZONE_H
#include "../../game/zones/table_zone_logic.h"
#include "../animated_item.h"
#include "../card_dimensions.h"
#include "select_zone.h"
@ -25,7 +26,6 @@ class CardZoneLogic;
class QColor;
class QGraphicsItem;
class QPainter;
class TableZoneLogic;
template <typename T> class QList;
/**
@ -42,8 +42,6 @@ signals:
void sizeChanged();
private:
static const int TABLEROWS = 3;
/*
Margins between table edges and cards, paddings between cards
*/
@ -181,15 +179,6 @@ public:
QPointF closestGridPoint(const QPointF &point) override;
static int clampValidTableRow(const int row);
/**
* Converts a card's logical table row (0=creatures, 1=noncreatures, 2=lands)
* to the corresponding grid Y coordinate. Cards with tableRow > 2 (e.g.,
* instants/sorceries) default to the noncreatures row.
*/
static int tableRowToGridY(int tableRow);
/**
Resizes the TableZone in case CardItems are within or
outside of the TableZone constraints.