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 <QGraphicsSceneMouseEvent>
#include <QMouseEvent>
#include <math.h>
#include "deckview.h"
#include "decklist.h"
@ -116,6 +117,39 @@ void DeckViewCard::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
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)
{
event->accept();

View file

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

View file

@ -277,7 +277,7 @@ void DeckViewContainer::sideboardPlanChanged()
Command_SetSideboardPlan cmd;
const QList<MoveCard_ToZone> &newPlan = deckView->getSideboardPlan();
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);
}