mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-23 10:05:10 -07:00
* Add animations toggles for the life counter and battlefield Per-effect toggles plus Enable/Disable-all buttons: a life-counter flash on loss and a crimson battlefield shimmer on damage. Took 24 seconds * Animate life changes with a counter flash and battlefield shimmer - Life loss/gain pulses the player life counter with a brief flash - The battlefield table zone shimmers crimson on damage - Respects the per-effect animation toggles Both effects drive their decay from GameScene's shared animation timer through the IAnimatedItem interface (QElapsedTimer based), instead of owning per-item QTimers. Took 8 minutes * Revert unintentional cherry picks Took 2 minutes * Lambda to re-use path calculation. Took 8 minutes --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
67 lines
1.5 KiB
C++
67 lines
1.5 KiB
C++
/**
|
|
* @file player_target.h
|
|
* @ingroup GameGraphicsPlayers
|
|
*/
|
|
//! \todo Document this file.
|
|
|
|
#ifndef PLAYERTARGET_H
|
|
#define PLAYERTARGET_H
|
|
|
|
#include "../animated_item.h"
|
|
#include "../board/abstract_counter.h"
|
|
#include "../board/arrow_target.h"
|
|
#include "../board/graphics_item_type.h"
|
|
|
|
#include <QElapsedTimer>
|
|
#include <QPixmap>
|
|
|
|
class PlayerLogic;
|
|
|
|
class PlayerCounter : public AbstractCounter, public IAnimatedItem
|
|
{
|
|
Q_OBJECT
|
|
protected:
|
|
void onValueChanged(int oldValue, int newValue) override;
|
|
|
|
private:
|
|
static constexpr qreal flashDurationMs = 450.0;
|
|
|
|
QElapsedTimer flashClock;
|
|
qreal flashAlpha = 0.0;
|
|
int flashDelta = 0;
|
|
|
|
public:
|
|
PlayerCounter(CounterState *state, PlayerLogic *player, QGraphicsItem *parent);
|
|
QRectF boundingRect() const override;
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
|
bool animationEvent() override;
|
|
};
|
|
|
|
class PlayerTarget : public ArrowTarget
|
|
{
|
|
Q_OBJECT
|
|
private:
|
|
QPixmap fullPixmap;
|
|
PlayerCounter *playerCounter;
|
|
public slots:
|
|
void counterDeleted();
|
|
|
|
public:
|
|
enum
|
|
{
|
|
Type = typePlayerTarget
|
|
};
|
|
int type() const override
|
|
{
|
|
return Type;
|
|
}
|
|
|
|
explicit PlayerTarget(PlayerLogic *_player = nullptr, QGraphicsItem *parentItem = nullptr);
|
|
~PlayerTarget() override;
|
|
QRectF boundingRect() const override;
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
|
|
|
AbstractCounter *addCounter(CounterState *state);
|
|
};
|
|
|
|
#endif
|