mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-11 12:54:10 -07:00
Adjust to rebase.
Took 28 minutes Took 7 seconds Took 2 minutes Took 8 minutes Took 13 seconds
This commit is contained in:
parent
b4adb20a5f
commit
cbee3726c9
16 changed files with 50 additions and 48 deletions
60
cockatrice/src/game_graphics/board/commander_tax_counter.cpp
Normal file
60
cockatrice/src/game_graphics/board/commander_tax_counter.cpp
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
#include "commander_tax_counter.h"
|
||||
|
||||
#include "../../game/board/counter_state.h"
|
||||
#include "translate_counter_name.h"
|
||||
|
||||
#include <QColor>
|
||||
#include <QFontDatabase>
|
||||
#include <QPainter>
|
||||
|
||||
static constexpr qreal CORNER_RADIUS = 4.0;
|
||||
static constexpr qreal FONT_SIZE_RATIO = 0.6;
|
||||
static constexpr int OVERLAY_ALPHA = 191;
|
||||
static const QColor OVERLAY_BG_NORMAL{40, 40, 40, OVERLAY_ALPHA};
|
||||
static const QColor OVERLAY_BG_HOVERED{70, 70, 70, OVERLAY_ALPHA};
|
||||
|
||||
CommanderTaxCounter::CommanderTaxCounter(CounterState *state, PlayerLogic *player, QGraphicsItem *parent)
|
||||
: AbstractCounter(state, player, false, false, parent), size(TaxCounterSizes::TAX_COUNTER_SIZE)
|
||||
{
|
||||
setCacheMode(DeviceCoordinateCache);
|
||||
setAcceptHoverEvents(true);
|
||||
setCursor(Qt::ArrowCursor);
|
||||
|
||||
setToolTip(tr("%1: %2").arg(TranslateCounterName::getDisplayName(getName())).arg(getValue()));
|
||||
}
|
||||
|
||||
QRectF CommanderTaxCounter::boundingRect() const
|
||||
{
|
||||
return QRectF(0, 0, size, size);
|
||||
}
|
||||
|
||||
void CommanderTaxCounter::paint(QPainter *painter,
|
||||
[[maybe_unused]] const QStyleOptionGraphicsItem *option,
|
||||
[[maybe_unused]] QWidget *widget)
|
||||
{
|
||||
painter->save();
|
||||
|
||||
QRectF rect = boundingRect().adjusted(1, 1, -1, -1);
|
||||
|
||||
QColor bgColor = hovered ? OVERLAY_BG_HOVERED : OVERLAY_BG_NORMAL;
|
||||
|
||||
painter->setPen(Qt::NoPen);
|
||||
painter->setBrush(bgColor);
|
||||
painter->drawRoundedRect(rect, CORNER_RADIUS, CORNER_RADIUS);
|
||||
|
||||
QFont f = QFontDatabase::systemFont(QFontDatabase::GeneralFont);
|
||||
f.setPixelSize(static_cast<int>(size * FONT_SIZE_RATIO));
|
||||
f.setWeight(QFont::Bold);
|
||||
painter->setFont(f);
|
||||
painter->setPen(Qt::white);
|
||||
painter->drawText(rect, Qt::AlignCenter, QString::number(value));
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
void CommanderTaxCounter::setValue(int _value)
|
||||
{
|
||||
int clampedValue = qMax(0, _value);
|
||||
AbstractCounter::setValue(clampedValue);
|
||||
setToolTip(tr("%1: %2").arg(TranslateCounterName::getDisplayName(getName())).arg(clampedValue));
|
||||
}
|
||||
72
cockatrice/src/game_graphics/board/commander_tax_counter.h
Normal file
72
cockatrice/src/game_graphics/board/commander_tax_counter.h
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
/**
|
||||
* @file commander_tax_counter.h
|
||||
* @ingroup GameGraphicsPlayers
|
||||
* @brief Square counter for commander tax, clamped to non-negative values.
|
||||
*/
|
||||
|
||||
#ifndef COCKATRICE_COMMANDER_TAX_COUNTER_H
|
||||
#define COCKATRICE_COMMANDER_TAX_COUNTER_H
|
||||
|
||||
#include "abstract_counter.h"
|
||||
|
||||
/**
|
||||
* @namespace TaxCounterSizes
|
||||
* @brief Size constants for commander tax counter layout.
|
||||
*/
|
||||
namespace TaxCounterSizes
|
||||
{
|
||||
|
||||
/** @brief Size of commander tax counter icons (width and height) */
|
||||
constexpr int TAX_COUNTER_SIZE = 24;
|
||||
|
||||
/** @brief Margin around and between tax counter icons */
|
||||
constexpr int TAX_COUNTER_MARGIN = 2;
|
||||
|
||||
} // namespace TaxCounterSizes
|
||||
|
||||
/**
|
||||
* @class CommanderTaxCounter
|
||||
* @brief Counter for tracking commander tax in Commander format.
|
||||
*
|
||||
* Displays cumulative cost increase for casting a commander. The counter
|
||||
* is manually adjusted by the player to track their commander tax. Values
|
||||
* are clamped to >= 0.
|
||||
*
|
||||
* Appearance: square with rounded corners, semi-transparent background,
|
||||
* positioned at top-left of command zone.
|
||||
*
|
||||
* Two instances per player: CounterIds::CommanderTax and CounterIds::PartnerTax.
|
||||
* Each counter supports an active/inactive state (inherited from AbstractCounter):
|
||||
* commander tax starts active; partner tax starts inactive until explicitly
|
||||
* enabled by the player via the context menu.
|
||||
*
|
||||
* @see AbstractCounter
|
||||
* @see AbstractCounter::setActive()
|
||||
* @see CounterIds
|
||||
*/
|
||||
class CommanderTaxCounter : public AbstractCounter
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
int size;
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief Constructs a CommanderTaxCounter.
|
||||
* @param state Counter state containing id, name, value, etc.
|
||||
* @param player The player who owns this counter
|
||||
* @param parent Parent graphics item (typically the command zone)
|
||||
*/
|
||||
CommanderTaxCounter(CounterState *state, PlayerLogic *player, QGraphicsItem *parent = nullptr);
|
||||
|
||||
[[nodiscard]] QRectF boundingRect() const override;
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||
|
||||
/**
|
||||
* @brief Overrides AbstractCounter::setValue to clamp values to >= 0 and update the tooltip.
|
||||
* @param _value New value (clamped if negative)
|
||||
*/
|
||||
void setValue(int _value) override;
|
||||
};
|
||||
|
||||
#endif // COCKATRICE_COMMANDER_TAX_COUNTER_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue