* main.cpp: removed path checking and db loading * card database: merge card loading methods into a single one * settings cache: take care of returning safe paths for decks, replays, etc.. * main window: if db loading fails (eg. first run), propose to run oracle NSIS: propose to run cockatrice instead of oracle Rework card database loading * Move carddatabase-related method out of deckeditor tab * Load cards in another thread and render them progressively * Optimize database reload after enabled sets change Fix deck editor column width * removed the noCard hack. * getCard() no more creates cards instead of just returning existing ones * Fix the “edit tokens” dialog. * PictureLoader: avoid trying to download twice the same card * PictureLoader: correct return of card background * AbstractCardItem: avoid recalculating card color at every paint Use a different file to save custom tokens Misc required improvements * Use nullptr; * Refactor CardInfoWidget to use CardInfoPicture and CardInfoText instead of duplicating code; * Added CardInfo::getColorChar() * Fixed some potential crashes * removed dead code related to CardInfoWidget * Don't require a restart after adding a new custom sets file * Bump CMake requirements to 3.1
69 lines
2.3 KiB
C++
69 lines
2.3 KiB
C++
#ifndef ABSTRACTCARDITEM_H
|
|
#define ABSTRACTCARDITEM_H
|
|
|
|
#include "arrowtarget.h"
|
|
|
|
class CardInfo;
|
|
class Player;
|
|
|
|
const int CARD_WIDTH = 72;
|
|
const int CARD_HEIGHT = 102;
|
|
|
|
class AbstractCardItem : public ArrowTarget {
|
|
Q_OBJECT
|
|
protected:
|
|
CardInfo *info;
|
|
int id;
|
|
QString name;
|
|
bool tapped;
|
|
bool facedown;
|
|
int tapAngle;
|
|
QString color;
|
|
QColor bgColor;
|
|
private:
|
|
bool isHovered;
|
|
qreal realZValue;
|
|
private slots:
|
|
void pixmapUpdated();
|
|
void cardInfoUpdated();
|
|
void callUpdate() { update(); }
|
|
signals:
|
|
void hovered(AbstractCardItem *card);
|
|
void showCardInfoPopup(QPoint pos, QString cardName);
|
|
void deleteCardInfoPopup(QString cardName);
|
|
void updateCardMenu(AbstractCardItem *card);
|
|
void sigPixmapUpdated();
|
|
public:
|
|
enum { Type = typeCard };
|
|
int type() const { return Type; }
|
|
AbstractCardItem(const QString &_name = QString(), Player *_owner = 0, int _id = -1, QGraphicsItem *parent = 0);
|
|
~AbstractCardItem();
|
|
QRectF boundingRect() const;
|
|
QSizeF getTranslatedSize(QPainter *painter) const;
|
|
void paintPicture(QPainter *painter, const QSizeF &translatedSize, int angle);
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
|
CardInfo *getInfo() const { return info; }
|
|
int getId() const { return id; }
|
|
void setId(int _id) { id = _id; }
|
|
QString getName() const { return name; }
|
|
void setName(const QString &_name = QString());
|
|
qreal getRealZValue() const { return realZValue; }
|
|
void setRealZValue(qreal _zValue);
|
|
void setHovered(bool _hovered);
|
|
QString getColor() const { return color; }
|
|
void setColor(const QString &_color);
|
|
bool getTapped() const { return tapped; }
|
|
void setTapped(bool _tapped, bool canAnimate = false);
|
|
bool getFaceDown() const { return facedown; }
|
|
void setFaceDown(bool _facedown);
|
|
void processHoverEvent();
|
|
void deleteCardInfoPopup() { emit deleteCardInfoPopup(name); }
|
|
protected:
|
|
void transformPainter(QPainter *painter, const QSizeF &translatedSize, int angle);
|
|
void mousePressEvent(QGraphicsSceneMouseEvent *event);
|
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
|
|
QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value);
|
|
void cacheBgColor();
|
|
};
|
|
|
|
#endif
|