change cards from sb<->mb with double-click (#2606)

This commit is contained in:
Zach H 2017-04-25 14:05:25 -04:00 committed by GitHub
parent 2c551bdd35
commit 62d8f5a039
3 changed files with 37 additions and 2 deletions

View file

@ -1,5 +1,6 @@
#include <QApplication> #include <QApplication>
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
#include <QMouseEvent>
#include <math.h> #include <math.h>
#include "deckview.h" #include "deckview.h"
#include "decklist.h" #include "decklist.h"
@ -116,6 +117,39 @@ void DeckViewCard::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
setCursor(Qt::OpenHandCursor); setCursor(Qt::OpenHandCursor);
} }
void DeckView::mouseDoubleClickEvent(QMouseEvent *event)
{
if (static_cast<DeckViewScene *>(scene())->getLocked())
return;
if (event->button() == Qt::LeftButton)
{
QList<MoveCard_ToZone> result;
QList<QGraphicsItem *> sel = scene()->selectedItems();
for (int i = 0; i < sel.size(); i++) {
DeckViewCard *c = static_cast<DeckViewCard *>(sel.at(i));
DeckViewCardContainer *zone = static_cast<DeckViewCardContainer *>(c->parentItem());
MoveCard_ToZone m;
m.set_card_name(c->getName().toStdString());
m.set_start_zone(zone->getName().toStdString());
if (zone->getName() == "main")
m.set_target_zone("side");
else if (zone->getName() == "side")
m.set_target_zone("main");
else // Trying to move from another zone
m.set_target_zone(zone->getName().toStdString());
result.append(m);
}
deckViewScene->applySideboardPlan(result);
deckViewScene->rearrangeItems();
emit deckViewScene->sideboardPlanChanged();
}
}
void DeckViewCard::hoverEnterEvent(QGraphicsSceneHoverEvent *event) void DeckViewCard::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{ {
event->accept(); event->accept();

View file

@ -83,7 +83,6 @@ private:
qreal optimalAspectRatio; qreal optimalAspectRatio;
void clearContents(); void clearContents();
void rebuildTree(); void rebuildTree();
void applySideboardPlan(const QList<MoveCard_ToZone> &plan);
public: public:
DeckViewScene(QObject *parent = 0); DeckViewScene(QObject *parent = 0);
~DeckViewScene(); ~DeckViewScene();
@ -95,6 +94,7 @@ public:
void updateContents(); void updateContents();
QList<MoveCard_ToZone> getSideboardPlan() const; QList<MoveCard_ToZone> getSideboardPlan() const;
void resetSideboardPlan(); void resetSideboardPlan();
void applySideboardPlan(const QList<MoveCard_ToZone> &plan);
}; };
class DeckView : public QGraphicsView { class DeckView : public QGraphicsView {
@ -113,6 +113,7 @@ public:
void setDeck(const DeckList &_deck); void setDeck(const DeckList &_deck);
void setLocked(bool _locked) { deckViewScene->setLocked(_locked); } void setLocked(bool _locked) { deckViewScene->setLocked(_locked); }
QList<MoveCard_ToZone> getSideboardPlan() const { return deckViewScene->getSideboardPlan(); } QList<MoveCard_ToZone> getSideboardPlan() const { return deckViewScene->getSideboardPlan(); }
void mouseDoubleClickEvent(QMouseEvent *event);
void resetSideboardPlan(); void resetSideboardPlan();
}; };

View file

@ -277,7 +277,7 @@ void DeckViewContainer::sideboardPlanChanged()
Command_SetSideboardPlan cmd; Command_SetSideboardPlan cmd;
const QList<MoveCard_ToZone> &newPlan = deckView->getSideboardPlan(); const QList<MoveCard_ToZone> &newPlan = deckView->getSideboardPlan();
for (int i = 0; i < newPlan.size(); ++i) for (int i = 0; i < newPlan.size(); ++i)
cmd.add_move_list()->CopyFrom(newPlan[i]); cmd.add_move_list()->CopyFrom(newPlan.at(i));
parentGame->sendGameCommand(cmd, playerId); parentGame->sendGameCommand(cmd, playerId);
} }