diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index bd0428da..3a1d49ab 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -415,11 +415,14 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare aMoveToBottomLibrary = new QAction(this); aMoveToBottomLibrary->setData(cmMoveToBottomLibrary); aMoveToGraveyard = new QAction(this); + aMoveToHand = new QAction(this); + aMoveToHand->setData(cmMoveToHand); aMoveToGraveyard->setData(cmMoveToGraveyard); aMoveToExile = new QAction(this); aMoveToExile->setData(cmMoveToExile); connect(aMoveToTopLibrary, SIGNAL(triggered()), this, SLOT(cardMenuAction())); connect(aMoveToBottomLibrary, SIGNAL(triggered()), this, SLOT(cardMenuAction())); + connect(aMoveToHand, SIGNAL(triggered()), this, SLOT(cardMenuAction())); connect(aMoveToGraveyard, SIGNAL(triggered()), this, SLOT(cardMenuAction())); connect(aMoveToExile, SIGNAL(triggered()), this, SLOT(cardMenuAction())); @@ -720,6 +723,7 @@ void Player::retranslateUi() aSetCounter[i]->setText(tr("&Set counters (%1)...").arg(counterColors[i])); aMoveToTopLibrary->setText(tr("&Top of library")); aMoveToBottomLibrary->setText(tr("&Bottom of library")); + aMoveToHand->setText(tr("&Hand")); aMoveToGraveyard->setText(tr("&Graveyard")); aMoveToGraveyard->setShortcut(QKeySequence("Ctrl+Del")); aMoveToExile->setText(tr("&Exile")); @@ -1959,6 +1963,18 @@ void Player::cardMenuAction() commandList.append(cmd); break; } + case cmMoveToHand: { + Command_MoveCard *cmd = new Command_MoveCard; + cmd->set_start_player_id(startPlayerId); + cmd->set_start_zone(startZone.toStdString()); + cmd->mutable_cards_to_move()->CopyFrom(idList); + cmd->set_target_player_id(getId()); + cmd->set_target_zone("hand"); + cmd->set_x(0); + cmd->set_y(0); + commandList.append(cmd); + break; + } case cmMoveToGraveyard: { Command_MoveCard *cmd = new Command_MoveCard; cmd->set_start_player_id(startPlayerId); @@ -2248,6 +2264,8 @@ void Player::updateCardMenu(CardItem *card) moveMenu->addAction(aMoveToTopLibrary); moveMenu->addAction(aMoveToBottomLibrary); moveMenu->addSeparator(); + moveMenu->addAction(aMoveToHand); + moveMenu->addSeparator(); moveMenu->addAction(aMoveToGraveyard); moveMenu->addSeparator(); moveMenu->addAction(aMoveToExile); diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index 9c51e1f6..f1f94f93 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -179,7 +179,7 @@ private: QAction *aPlay, *aPlayFacedown, *aHide, *aTap, *aUntap, *aDoesntUntap, *aAttach, *aUnattach, *aDrawArrow, *aSetPT, *aIncP, *aDecP, *aIncT, *aDecT, *aIncPT, *aDecPT, *aSetAnnotation, *aFlip, *aPeek, *aClone, - *aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToGraveyard, *aMoveToExile; + *aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToHand, *aMoveToGraveyard, *aMoveToExile; bool shortcutsActive; int defaultNumberTopCards; @@ -241,7 +241,7 @@ private: void eventChangeZoneProperties(const Event_ChangeZoneProperties &event); public: static const int counterAreaWidth = 55; - enum CardMenuActionType { cmTap, cmUntap, cmDoesntUntap, cmFlip, cmPeek, cmClone, cmMoveToTopLibrary, cmMoveToBottomLibrary, cmMoveToGraveyard, cmMoveToExile }; + enum CardMenuActionType { cmTap, cmUntap, cmDoesntUntap, cmFlip, cmPeek, cmClone, cmMoveToTopLibrary, cmMoveToBottomLibrary, cmMoveToGraveyard, cmMoveToExile, cmMoveToHand }; enum { Type = typeOther }; int type() const { return Type; }