mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 09:33:25 -08:00
[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:
parent
d30d275296
commit
52c5bd2ea3
5 changed files with 47 additions and 43 deletions
|
|
@ -3,7 +3,6 @@
|
||||||
#include "../../client/settings/cache_settings.h"
|
#include "../../client/settings/cache_settings.h"
|
||||||
#include "../../game_graphics/board/card_item.h"
|
#include "../../game_graphics/board/card_item.h"
|
||||||
#include "../../game_graphics/dialogs/dlg_create_token.h"
|
#include "../../game_graphics/dialogs/dlg_create_token.h"
|
||||||
#include "../../game_graphics/zones/table_zone.h"
|
|
||||||
#include "../../interface/deck_loader/loaded_deck.h"
|
#include "../../interface/deck_loader/loaded_deck.h"
|
||||||
#include "../abstract_game.h"
|
#include "../abstract_game.h"
|
||||||
#include "../board/counter_state.h"
|
#include "../board/counter_state.h"
|
||||||
|
|
@ -121,7 +120,7 @@ void PlayerActions::playCard(CardItem *card, bool faceDown)
|
||||||
cmd.set_y(0);
|
cmd.set_y(0);
|
||||||
} else {
|
} else {
|
||||||
tableRow = faceDown ? 2 : info.getUiAttributes().tableRow;
|
tableRow = faceDown ? 2 : info.getUiAttributes().tableRow;
|
||||||
QPoint gridPoint = QPoint(-1, TableZone::tableRowToGridY(tableRow));
|
QPoint gridPoint = QPoint(-1, TableZoneLogic::tableRowToGridY(tableRow));
|
||||||
cardToMove->set_face_down(faceDown);
|
cardToMove->set_face_down(faceDown);
|
||||||
if (!faceDown) {
|
if (!faceDown) {
|
||||||
cardToMove->set_pt(info.getPowTough().toStdString());
|
cardToMove->set_pt(info.getPowTough().toStdString());
|
||||||
|
|
@ -161,7 +160,7 @@ void PlayerActions::playCardToTable(const CardItem *card, bool faceDown)
|
||||||
const CardInfo &info = exactCard.getInfo();
|
const CardInfo &info = exactCard.getInfo();
|
||||||
|
|
||||||
int tableRow = faceDown ? 2 : info.getUiAttributes().tableRow;
|
int tableRow = faceDown ? 2 : info.getUiAttributes().tableRow;
|
||||||
QPoint gridPoint = QPoint(-1, TableZone::tableRowToGridY(tableRow));
|
QPoint gridPoint = QPoint(-1, TableZoneLogic::tableRowToGridY(tableRow));
|
||||||
cardToMove->set_face_down(faceDown);
|
cardToMove->set_face_down(faceDown);
|
||||||
if (!faceDown) {
|
if (!faceDown) {
|
||||||
cardToMove->set_pt(info.getPowTough().toStdString());
|
cardToMove->set_pt(info.getPowTough().toStdString());
|
||||||
|
|
@ -925,7 +924,7 @@ void PlayerActions::actCreateToken(TokenInfo tokenToCreate)
|
||||||
if (correctedCard) {
|
if (correctedCard) {
|
||||||
lastTokenInfo.name = correctedCard.getName();
|
lastTokenInfo.name = correctedCard.getName();
|
||||||
int tableRow = lastTokenInfo.faceDown ? 2 : correctedCard.getInfo().getUiAttributes().tableRow;
|
int tableRow = lastTokenInfo.faceDown ? 2 : correctedCard.getInfo().getUiAttributes().tableRow;
|
||||||
lastTokenTableRow = TableZone::tableRowToGridY(tableRow);
|
lastTokenTableRow = TableZoneLogic::tableRowToGridY(tableRow);
|
||||||
if (lastTokenInfo.pt.isEmpty()) {
|
if (lastTokenInfo.pt.isEmpty()) {
|
||||||
lastTokenInfo.pt = correctedCard.getInfo().getPowTough();
|
lastTokenInfo.pt = correctedCard.getInfo().getPowTough();
|
||||||
}
|
}
|
||||||
|
|
@ -979,7 +978,7 @@ void PlayerActions::setLastTokenInfo(CardInfoPtr cardInfo)
|
||||||
.destroy = true,
|
.destroy = true,
|
||||||
.providerId = SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardInfo->getName())};
|
.providerId = SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardInfo->getName())};
|
||||||
|
|
||||||
lastTokenTableRow = TableZone::tableRowToGridY(cardInfo->getUiAttributes().tableRow);
|
lastTokenTableRow = TableZoneLogic::tableRowToGridY(cardInfo->getUiAttributes().tableRow);
|
||||||
|
|
||||||
emit requestEnableAndSetCreateAnotherTokenAction(lastTokenInfo.name);
|
emit requestEnableAndSetCreateAnotherTokenAction(lastTokenInfo.name);
|
||||||
}
|
}
|
||||||
|
|
@ -1191,7 +1190,7 @@ void PlayerActions::createCard(const CardItem *sourceCard,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPoint gridPoint = QPoint(-1, TableZone::tableRowToGridY(cardInfo->getUiAttributes().tableRow));
|
QPoint gridPoint = QPoint(-1, TableZoneLogic::tableRowToGridY(cardInfo->getUiAttributes().tableRow));
|
||||||
|
|
||||||
// create the token for the related card
|
// create the token for the related card
|
||||||
Command_CreateToken cmd;
|
Command_CreateToken cmd;
|
||||||
|
|
@ -1977,7 +1976,7 @@ void PlayerActions::cardMenuAction(QList<CardItem *> selectedCards, CardMenuActi
|
||||||
ctm->set_tapped(info.getUiAttributes().cipt);
|
ctm->set_tapped(info.getUiAttributes().cipt);
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd->set_y(TableZone::tableRowToGridY(tableRow));
|
cmd->set_y(TableZoneLogic::tableRowToGridY(tableRow));
|
||||||
commandList.append(cmd);
|
commandList.append(cmd);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -40,4 +40,23 @@ CardItem *TableZoneLogic::takeCard(int position, int cardId, bool toNewZone)
|
||||||
emit contentSizeChanged();
|
emit contentSizeChanged();
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TableZoneLogic::clampValidTableRow(const int row)
|
||||||
|
{
|
||||||
|
if (row < 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (row >= ROW_COUNT) {
|
||||||
|
return ROW_COUNT - 1;
|
||||||
|
}
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TableZoneLogic::tableRowToGridY(int tableRow)
|
||||||
|
{
|
||||||
|
if (tableRow > 2) {
|
||||||
|
tableRow = 1;
|
||||||
|
}
|
||||||
|
return clampValidTableRow(2 - tableRow);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,21 @@ public:
|
||||||
bool _contentsKnown,
|
bool _contentsKnown,
|
||||||
QObject *parent = nullptr);
|
QObject *parent = nullptr);
|
||||||
|
|
||||||
|
/** @brief Number of rows in the table zone grid (0=creatures, 1=noncreatures, 2=lands). */
|
||||||
|
static const int ROW_COUNT = 3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clamps a grid row index into [0, ROW_COUNT - 1].
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void addCardImpl(CardItem *card, int x, int y) override;
|
void addCardImpl(CardItem *card, int x, int y) override;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,8 @@ TableZone::TableZone(TableZoneLogic *_logic, bool _mirrored, QGraphicsItem *pare
|
||||||
|
|
||||||
updateBg();
|
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;
|
width = MIN_WIDTH;
|
||||||
currentMinimumWidth = width;
|
currentMinimumWidth = width;
|
||||||
|
|
||||||
|
|
@ -397,7 +398,7 @@ QPointF TableZone::mapFromGrid(QPoint gridPoint) const
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isInverted()) {
|
if (isInverted()) {
|
||||||
gridPoint.setY(TABLEROWS - 1 - gridPoint.y());
|
gridPoint.setY(TableZoneLogic::ROW_COUNT - 1 - gridPoint.y());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start with margin plus stacked card offset
|
// 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;
|
const int gridPointHeight = CardDimensions::HEIGHT + PADDING_Y;
|
||||||
int gridPointY = (y + PADDING_Y / 2) / gridPointHeight;
|
int gridPointY = (y + PADDING_Y / 2) / gridPointHeight;
|
||||||
|
|
||||||
gridPointY = clampValidTableRow(gridPointY);
|
gridPointY = TableZoneLogic::clampValidTableRow(gridPointY);
|
||||||
|
|
||||||
if (isInverted()) {
|
if (isInverted()) {
|
||||||
gridPointY = TABLEROWS - 1 - gridPointY;
|
gridPointY = TableZoneLogic::ROW_COUNT - 1 - gridPointY;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculating the x-coordinate of the grid space requires adding up the
|
// 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);
|
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);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#ifndef TABLEZONE_H
|
#ifndef TABLEZONE_H
|
||||||
#define TABLEZONE_H
|
#define TABLEZONE_H
|
||||||
|
|
||||||
|
#include "../../game/zones/table_zone_logic.h"
|
||||||
#include "../animated_item.h"
|
#include "../animated_item.h"
|
||||||
#include "../card_dimensions.h"
|
#include "../card_dimensions.h"
|
||||||
#include "select_zone.h"
|
#include "select_zone.h"
|
||||||
|
|
@ -25,7 +26,6 @@ class CardZoneLogic;
|
||||||
class QColor;
|
class QColor;
|
||||||
class QGraphicsItem;
|
class QGraphicsItem;
|
||||||
class QPainter;
|
class QPainter;
|
||||||
class TableZoneLogic;
|
|
||||||
template <typename T> class QList;
|
template <typename T> class QList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -42,8 +42,6 @@ signals:
|
||||||
void sizeChanged();
|
void sizeChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const int TABLEROWS = 3;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Margins between table edges and cards, paddings between cards
|
Margins between table edges and cards, paddings between cards
|
||||||
*/
|
*/
|
||||||
|
|
@ -181,15 +179,6 @@ public:
|
||||||
|
|
||||||
QPointF closestGridPoint(const QPointF &point) override;
|
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
|
Resizes the TableZone in case CardItems are within or
|
||||||
outside of the TableZone constraints.
|
outside of the TableZone constraints.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue