mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-25 08:03: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>
67 lines
2.1 KiB
C++
67 lines
2.1 KiB
C++
#include "abstract_card_drag_item.h"
|
|
|
|
#include "card_database.h"
|
|
|
|
#include <QCursor>
|
|
#include <QDebug>
|
|
#include <QGraphicsSceneMouseEvent>
|
|
#include <QPainter>
|
|
|
|
static const float CARD_WIDTH_HALF = CARD_WIDTH / 2;
|
|
static const float CARD_HEIGHT_HALF = CARD_HEIGHT / 2;
|
|
const QColor GHOST_MASK = QColor(255, 255, 255, 50);
|
|
|
|
AbstractCardDragItem::AbstractCardDragItem(AbstractCardItem *_item,
|
|
const QPointF &_hotSpot,
|
|
AbstractCardDragItem *parentDrag)
|
|
: QGraphicsItem(), item(_item), hotSpot(_hotSpot)
|
|
{
|
|
if (parentDrag) {
|
|
parentDrag->addChildDrag(this);
|
|
setZValue(2000000007 + hotSpot.x() * 1000000 + hotSpot.y() * 1000 + 1000);
|
|
} else {
|
|
hotSpot = QPointF{qBound(0.0, hotSpot.x(), static_cast<qreal>(CARD_WIDTH - 1)),
|
|
qBound(0.0, hotSpot.y(), static_cast<qreal>(CARD_HEIGHT - 1))};
|
|
setCursor(Qt::ClosedHandCursor);
|
|
setZValue(2000000007);
|
|
}
|
|
if (item->getTapped())
|
|
setTransform(QTransform()
|
|
.translate(CARD_WIDTH_HALF, CARD_HEIGHT_HALF)
|
|
.rotate(90)
|
|
.translate(-CARD_WIDTH_HALF, -CARD_HEIGHT_HALF));
|
|
|
|
setCacheMode(DeviceCoordinateCache);
|
|
}
|
|
|
|
AbstractCardDragItem::~AbstractCardDragItem()
|
|
{
|
|
for (int i = 0; i < childDrags.size(); i++)
|
|
delete childDrags[i];
|
|
}
|
|
|
|
QPainterPath AbstractCardDragItem::shape() const
|
|
{
|
|
QPainterPath shape;
|
|
shape.addRoundedRect(boundingRect(), 0.05 * CARD_WIDTH, 0.05 * CARD_WIDTH);
|
|
return shape;
|
|
}
|
|
|
|
void AbstractCardDragItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
|
{
|
|
item->paint(painter, option, widget);
|
|
|
|
// adds a mask to the card so it looks like the card hasnt been placed yet
|
|
painter->fillPath(shape(), GHOST_MASK);
|
|
}
|
|
|
|
void AbstractCardDragItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
|
{
|
|
event->accept();
|
|
updatePosition(event->scenePos());
|
|
}
|
|
|
|
void AbstractCardDragItem::addChildDrag(AbstractCardDragItem *child)
|
|
{
|
|
childDrags << child;
|
|
}
|