mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-12 00:54:53 -07:00
Initial commit for sideboarding. It's supposed to be fully functional.
This commit is contained in:
parent
2ee4bb834d
commit
b2f83541e7
18 changed files with 474 additions and 87 deletions
|
|
@ -5,22 +5,45 @@
|
|||
#include <QGraphicsView>
|
||||
#include <QMap>
|
||||
#include <QPixmap>
|
||||
#include "carditem.h"
|
||||
#include "abstractcarditem.h"
|
||||
#include "abstractcarddragitem.h"
|
||||
|
||||
class DeckList;
|
||||
class InnerDecklistNode;
|
||||
class CardInfo;
|
||||
class DeckViewCardContainer;
|
||||
class DeckViewCardDragItem;
|
||||
class MoveCardToZone;
|
||||
|
||||
class DeckViewCard : public AbstractCardItem {
|
||||
private:
|
||||
QString originZone;
|
||||
DeckViewCardDragItem *dragItem;
|
||||
public:
|
||||
DeckViewCard(const QString &_name = QString(), QGraphicsItem *parent = 0);
|
||||
DeckViewCard(const QString &_name = QString(), const QString &_originZone = QString(), QGraphicsItem *parent = 0);
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||
const QString &getOriginZone() const { return originZone; }
|
||||
protected:
|
||||
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
|
||||
};
|
||||
|
||||
class DeckViewCardDragItem : public AbstractCardDragItem {
|
||||
private:
|
||||
DeckViewCardContainer *currentZone;
|
||||
void handleDrop(DeckViewCardContainer *target);
|
||||
public:
|
||||
DeckViewCardDragItem(DeckViewCard *_item, const QPointF &_hotSpot, AbstractCardDragItem *parentDrag = 0);
|
||||
void updatePosition(const QPointF &cursorScenePos);
|
||||
protected:
|
||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
|
||||
};
|
||||
|
||||
class DeckViewCardContainer : public QGraphicsItem {
|
||||
private:
|
||||
QString name;
|
||||
QMap<QString, DeckViewCard *> cards;
|
||||
QList<DeckViewCard *> cards;
|
||||
qreal width, height;
|
||||
qreal maxWidth;
|
||||
qreal separatorY;
|
||||
QPixmap bgPixmap;
|
||||
static const int rowSpacing = 5;
|
||||
|
|
@ -29,6 +52,9 @@ public:
|
|||
QRectF boundingRect() const;
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||
void addCard(DeckViewCard *card);
|
||||
void removeCard(DeckViewCard *card);
|
||||
const QList<DeckViewCard *> &getCards() const { return cards; }
|
||||
const QString &getName() const { return name; }
|
||||
void rearrangeItems();
|
||||
void setWidth(qreal _width);
|
||||
};
|
||||
|
|
@ -37,15 +63,19 @@ class DeckViewScene : public QGraphicsScene {
|
|||
Q_OBJECT
|
||||
signals:
|
||||
void newCardAdded(AbstractCardItem *card);
|
||||
void sideboardPlanChanged();
|
||||
private:
|
||||
DeckList *deck;
|
||||
QMap<QString, DeckViewCardContainer *> cardContainers;
|
||||
void rebuildTree();
|
||||
void applySideboardPlan(const QList<MoveCardToZone *> &plan);
|
||||
void rearrangeItems();
|
||||
public:
|
||||
DeckViewScene(QObject *parent = 0);
|
||||
~DeckViewScene();
|
||||
void setDeck(DeckList *_deck);
|
||||
void updateContents();
|
||||
QList<MoveCardToZone *> getSideboardPlan() const;
|
||||
};
|
||||
|
||||
class DeckView : public QGraphicsView {
|
||||
|
|
@ -58,9 +88,11 @@ public slots:
|
|||
void updateSceneRect(const QRectF &rect);
|
||||
signals:
|
||||
void newCardAdded(AbstractCardItem *card);
|
||||
void sideboardPlanChanged();
|
||||
public:
|
||||
DeckView(QWidget *parent = 0);
|
||||
void setDeck(DeckList *_deck);
|
||||
QList<MoveCardToZone *> getSideboardPlan() const { return deckViewScene->getSideboardPlan(); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue