mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-01 19:13:55 -07:00
[Game] Improve context menus and fix face-down play from stack (#6739)
Reorganize card context menus across table, stack, and graveyard/exile zones for better consistency: promote Draw Arrow and Clone actions, move related card entries to the bottom, add Play/Play Face Down to the stack menu, and flatten if/else blocks with early returns. Also fix playCard() ignoring the faceDown flag when routing instants/sorceries from the stack, which sent them to the graveyard instead of the table.
This commit is contained in:
parent
5ef428b9d0
commit
dd053c76df
2 changed files with 41 additions and 40 deletions
|
|
@ -110,6 +110,7 @@ CardMenu::CardMenu(Player *_player, const CardItem *_card, bool _shortcutsActive
|
||||||
|
|
||||||
if (revealedCard) {
|
if (revealedCard) {
|
||||||
addAction(aHide);
|
addAction(aHide);
|
||||||
|
addSeparator();
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aSelectAll);
|
addAction(aSelectAll);
|
||||||
|
|
@ -148,16 +149,14 @@ void CardMenu::createTableMenu(bool canModifyCard)
|
||||||
{
|
{
|
||||||
// Card is on the battlefield
|
// Card is on the battlefield
|
||||||
if (!canModifyCard) {
|
if (!canModifyCard) {
|
||||||
addRelatedCardView();
|
|
||||||
addRelatedCardActions();
|
|
||||||
|
|
||||||
addSeparator();
|
|
||||||
addAction(aDrawArrow);
|
addAction(aDrawArrow);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aSelectAll);
|
addAction(aSelectAll);
|
||||||
addAction(aSelectRow);
|
addAction(aSelectRow);
|
||||||
|
addRelatedCardView();
|
||||||
|
addRelatedCardActions();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -167,10 +166,9 @@ void CardMenu::createTableMenu(bool canModifyCard)
|
||||||
if (card->getFaceDown()) {
|
if (card->getFaceDown()) {
|
||||||
addAction(aPeek);
|
addAction(aPeek);
|
||||||
}
|
}
|
||||||
|
addSeparator();
|
||||||
addRelatedCardView();
|
addAction(aClone);
|
||||||
addRelatedCardActions();
|
addMenu(new MoveMenu(player));
|
||||||
|
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aAttach);
|
addAction(aAttach);
|
||||||
if (card->getAttachedTo()) {
|
if (card->getAttachedTo()) {
|
||||||
|
|
@ -181,9 +179,6 @@ void CardMenu::createTableMenu(bool canModifyCard)
|
||||||
addMenu(new PtMenu(player));
|
addMenu(new PtMenu(player));
|
||||||
addAction(aSetAnnotation);
|
addAction(aSetAnnotation);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aClone);
|
|
||||||
addMenu(new MoveMenu(player));
|
|
||||||
addSeparator();
|
|
||||||
addAction(aSelectAll);
|
addAction(aSelectAll);
|
||||||
addAction(aSelectRow);
|
addAction(aSelectRow);
|
||||||
|
|
||||||
|
|
@ -199,27 +194,34 @@ void CardMenu::createTableMenu(bool canModifyCard)
|
||||||
}
|
}
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addMenu(mCardCounters);
|
addMenu(mCardCounters);
|
||||||
|
addRelatedCardView();
|
||||||
|
addRelatedCardActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardMenu::createStackMenu(bool canModifyCard)
|
void CardMenu::createStackMenu(bool canModifyCard)
|
||||||
{
|
{
|
||||||
// Card is on the stack
|
// Card is on the stack
|
||||||
if (canModifyCard) {
|
if (!canModifyCard) {
|
||||||
addAction(aAttach);
|
|
||||||
addAction(aDrawArrow);
|
|
||||||
addSeparator();
|
|
||||||
addAction(aClone);
|
|
||||||
addMenu(new MoveMenu(player));
|
|
||||||
addSeparator();
|
|
||||||
addAction(aSelectAll);
|
|
||||||
} else {
|
|
||||||
addAction(aDrawArrow);
|
addAction(aDrawArrow);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aSelectAll);
|
addAction(aSelectAll);
|
||||||
|
addRelatedCardView();
|
||||||
|
addRelatedCardActions();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addAction(aPlay);
|
||||||
|
addAction(aPlayFacedown);
|
||||||
|
addSeparator();
|
||||||
|
addAction(aClone);
|
||||||
|
addMenu(new MoveMenu(player));
|
||||||
|
addSeparator();
|
||||||
|
addAction(aAttach);
|
||||||
|
addAction(aDrawArrow);
|
||||||
|
addSeparator();
|
||||||
|
addAction(aSelectAll);
|
||||||
addRelatedCardView();
|
addRelatedCardView();
|
||||||
addRelatedCardActions();
|
addRelatedCardActions();
|
||||||
}
|
}
|
||||||
|
|
@ -227,29 +229,29 @@ void CardMenu::createStackMenu(bool canModifyCard)
|
||||||
void CardMenu::createGraveyardOrExileMenu(bool canModifyCard)
|
void CardMenu::createGraveyardOrExileMenu(bool canModifyCard)
|
||||||
{
|
{
|
||||||
// Card is in the graveyard or exile
|
// Card is in the graveyard or exile
|
||||||
if (canModifyCard) {
|
if (!canModifyCard) {
|
||||||
addAction(aPlay);
|
|
||||||
addAction(aPlayFacedown);
|
|
||||||
|
|
||||||
addSeparator();
|
|
||||||
addAction(aClone);
|
|
||||||
addMenu(new MoveMenu(player));
|
|
||||||
addSeparator();
|
|
||||||
addAction(aSelectAll);
|
|
||||||
addAction(aSelectColumn);
|
|
||||||
|
|
||||||
addSeparator();
|
|
||||||
addAction(aAttach);
|
|
||||||
addAction(aDrawArrow);
|
addAction(aDrawArrow);
|
||||||
} else {
|
addSeparator();
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aSelectAll);
|
addAction(aSelectAll);
|
||||||
addAction(aSelectColumn);
|
addAction(aSelectColumn);
|
||||||
addSeparator();
|
addRelatedCardView();
|
||||||
addAction(aDrawArrow);
|
addRelatedCardActions();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addAction(aPlay);
|
||||||
|
addAction(aPlayFacedown);
|
||||||
|
addSeparator();
|
||||||
|
addAction(aClone);
|
||||||
|
addMenu(new MoveMenu(player));
|
||||||
|
addSeparator();
|
||||||
|
addAction(aAttach);
|
||||||
|
addAction(aDrawArrow);
|
||||||
|
addSeparator();
|
||||||
|
addAction(aSelectAll);
|
||||||
|
addAction(aSelectColumn);
|
||||||
addRelatedCardView();
|
addRelatedCardView();
|
||||||
addRelatedCardActions();
|
addRelatedCardActions();
|
||||||
}
|
}
|
||||||
|
|
@ -259,12 +261,11 @@ void CardMenu::createHandOrCustomZoneMenu(bool canModifyCard)
|
||||||
if (!canModifyCard) {
|
if (!canModifyCard) {
|
||||||
addAction(aDrawArrow);
|
addAction(aDrawArrow);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addRelatedCardView();
|
|
||||||
addRelatedCardActions();
|
|
||||||
addSeparator();
|
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aSelectAll);
|
addAction(aSelectAll);
|
||||||
|
addRelatedCardView();
|
||||||
|
addRelatedCardActions();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ void PlayerActions::playCard(CardItem *card, bool faceDown)
|
||||||
int tableRow = info.getUiAttributes().tableRow;
|
int tableRow = info.getUiAttributes().tableRow;
|
||||||
bool playToStack = SettingsCache::instance().getPlayToStack();
|
bool playToStack = SettingsCache::instance().getPlayToStack();
|
||||||
QString currentZone = card->getZone()->getName();
|
QString currentZone = card->getZone()->getName();
|
||||||
if (currentZone == ZoneNames::STACK && tableRow == 3) {
|
if (!faceDown && currentZone == ZoneNames::STACK && tableRow == 3) {
|
||||||
cmd.set_target_zone(ZoneNames::GRAVE);
|
cmd.set_target_zone(ZoneNames::GRAVE);
|
||||||
cmd.set_x(0);
|
cmd.set_x(0);
|
||||||
cmd.set_y(0);
|
cmd.set_y(0);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue