mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-30 10:33:54 -07:00
* refactored cardzone.cpp, added doc and changed if to switch case * started moving every files into different folders * remove undercase to match with other files naming convention * refactored dialog files * ran format.sh * refactored client/tabs folder * refactored client/tabs folder * refactored client/tabs folder * refactored client folder * refactored carddbparser * refactored dialogs * Create sonar-project.properties temporary file for lint * Create build.yml temporary file for lint * removed all files from root directory * removed all files from root directory * added current branch to workflow * fixed most broken import * fixed issues while renaming files * fixed oracle importer * fixed dbconverter * updated translations * made sub-folders for client * removed linter * removed linter folder * fixed oracle import * revert card_zone documentation * renamed db parser files name and deck_view imports * fixed dlg file issue * ran format file and fixed test file * fixed carddb test files * moved player folder in game * updated translations and format files * fixed peglib import * format cmake files * removing vcpkg to try to add it back later * tried fixing vcpkg file * renamed filter to filters and moved database parser to cards folder * reverted translation files * reverted oracle translated * Update cockatrice/src/dialogs/dlg_register.cpp Co-authored-by: tooomm <tooomm@users.noreply.github.com> * Update cockatrice/src/client/ui/window_main.cpp Co-authored-by: tooomm <tooomm@users.noreply.github.com> * removed empty line at file start * removed useless include from tab_supervisor.cpp * refactored cardzone.cpp, added doc and changed if to switch case * started moving every files into different folders * remove undercase to match with other files naming convention * refactored dialog files * ran format.sh * refactored client/tabs folder * refactored client folder * refactored carddbparser * refactored dialogs * removed all files from root directory * Create sonar-project.properties temporary file for lint * Create build.yml temporary file for lint * added current branch to workflow * fixed most broken import * fixed issues while renaming files * fixed oracle importer * fixed dbconverter * updated translations * made sub-folders for client * removed linter * removed linter folder * fixed oracle import * revert card_zone documentation * renamed db parser files name and deck_view imports * fixed dlg file issue * ran format file and fixed test file * fixed carddb test files * moved player folder in game * updated translations and format files * fixed peglib import * reverted translation files * format cmake files * removing vcpkg to try to add it back later * tried fixing vcpkg file * pre-updating of cockatrice changes * removed empty line at file start * reverted oracle translated * Update cockatrice/src/dialogs/dlg_register.cpp Co-authored-by: tooomm <tooomm@users.noreply.github.com> * Update cockatrice/src/client/ui/window_main.cpp Co-authored-by: tooomm <tooomm@users.noreply.github.com> * removed useless include from tab_supervisor.cpp --------- Co-authored-by: tooomm <tooomm@users.noreply.github.com>
170 lines
3.8 KiB
C++
170 lines
3.8 KiB
C++
#ifndef CARDITEM_H
|
|
#define CARDITEM_H
|
|
|
|
#include "abstract_card_item.h"
|
|
#include "server_card.h"
|
|
|
|
class CardDatabase;
|
|
class CardDragItem;
|
|
class CardZone;
|
|
class ServerInfo_Card;
|
|
class Player;
|
|
class QAction;
|
|
class QColor;
|
|
|
|
const int MAX_COUNTERS_ON_CARD = 999;
|
|
const float CARD_WIDTH_HALF = CARD_WIDTH / 2;
|
|
const float CARD_HEIGHT_HALF = CARD_HEIGHT / 2;
|
|
const int ROTATION_DEGREES_PER_FRAME = 10;
|
|
|
|
class CardItem : public AbstractCardItem
|
|
{
|
|
Q_OBJECT
|
|
private:
|
|
CardZone *zone;
|
|
bool revealedCard;
|
|
bool attacking;
|
|
QMap<int, int> counters;
|
|
QString annotation;
|
|
QString pt;
|
|
bool destroyOnZoneChange;
|
|
bool doesntUntap;
|
|
QPoint gridPoint;
|
|
CardDragItem *dragItem;
|
|
CardItem *attachedTo;
|
|
QList<CardItem *> attachedCards;
|
|
|
|
QMenu *cardMenu, *ptMenu, *moveMenu;
|
|
|
|
void prepareDelete();
|
|
public slots:
|
|
void deleteLater();
|
|
|
|
public:
|
|
enum
|
|
{
|
|
Type = typeCard
|
|
};
|
|
int type() const
|
|
{
|
|
return Type;
|
|
}
|
|
CardItem(Player *_owner,
|
|
const QString &_name = QString(),
|
|
int _cardid = -1,
|
|
bool revealedCard = false,
|
|
QGraphicsItem *parent = nullptr,
|
|
CardZone *_zone = nullptr);
|
|
~CardItem();
|
|
void retranslateUi();
|
|
CardZone *getZone() const
|
|
{
|
|
return zone;
|
|
}
|
|
void setZone(CardZone *_zone);
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
|
QPoint getGridPoint() const
|
|
{
|
|
return gridPoint;
|
|
}
|
|
void setGridPoint(const QPoint &_gridPoint)
|
|
{
|
|
gridPoint = _gridPoint;
|
|
}
|
|
QPoint getGridPos() const
|
|
{
|
|
return gridPoint;
|
|
}
|
|
Player *getOwner() const
|
|
{
|
|
return owner;
|
|
}
|
|
void setOwner(Player *_owner)
|
|
{
|
|
owner = _owner;
|
|
}
|
|
bool getRevealedCard() const
|
|
{
|
|
return revealedCard;
|
|
}
|
|
bool getAttacking() const
|
|
{
|
|
return attacking;
|
|
}
|
|
void setAttacking(bool _attacking);
|
|
const QMap<int, int> &getCounters() const
|
|
{
|
|
return counters;
|
|
}
|
|
void setCounter(int _id, int _value);
|
|
QString getAnnotation() const
|
|
{
|
|
return annotation;
|
|
}
|
|
void setAnnotation(const QString &_annotation);
|
|
bool getDoesntUntap() const
|
|
{
|
|
return doesntUntap;
|
|
}
|
|
void setDoesntUntap(bool _doesntUntap);
|
|
QString getPT() const
|
|
{
|
|
return pt;
|
|
}
|
|
void setPT(const QString &_pt);
|
|
bool getDestroyOnZoneChange() const
|
|
{
|
|
return destroyOnZoneChange;
|
|
}
|
|
void setDestroyOnZoneChange(bool _destroy)
|
|
{
|
|
destroyOnZoneChange = _destroy;
|
|
}
|
|
CardItem *getAttachedTo() const
|
|
{
|
|
return attachedTo;
|
|
}
|
|
void setAttachedTo(CardItem *_attachedTo);
|
|
void addAttachedCard(CardItem *card)
|
|
{
|
|
attachedCards.append(card);
|
|
}
|
|
void removeAttachedCard(CardItem *card)
|
|
{
|
|
attachedCards.removeOne(card);
|
|
}
|
|
const QList<CardItem *> &getAttachedCards() const
|
|
{
|
|
return attachedCards;
|
|
}
|
|
void resetState();
|
|
void processCardInfo(const ServerInfo_Card &_info);
|
|
|
|
QMenu *getCardMenu() const
|
|
{
|
|
return cardMenu;
|
|
}
|
|
QMenu *getPTMenu() const
|
|
{
|
|
return ptMenu;
|
|
}
|
|
QMenu *getMoveMenu() const
|
|
{
|
|
return moveMenu;
|
|
}
|
|
|
|
bool animationEvent();
|
|
CardDragItem *createDragItem(int _id, const QPointF &_pos, const QPointF &_scenePos, bool faceDown);
|
|
void deleteDragItem();
|
|
void drawArrow(const QColor &arrowColor);
|
|
void drawAttachArrow();
|
|
void playCard(bool faceDown);
|
|
|
|
protected:
|
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
|
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
|
|
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
|
|
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
|
|
};
|
|
|
|
#endif
|