QWidget *PlayerCardDialog::createJudgingArea() { QGroupBox *area = new QGroupBox(tr("Judging Area")); QVBoxLayout *layout = new QVBoxLayout; QList<const Card *> cards = player->getJudgingArea(); foreach (const Card *card, cards) { const Card *real = Sanguosha->getEngineCard(card->getId()); PlayerCardButton *button = new PlayerCardButton(real->getFullName()); button->setIcon(G_ROOM_SKIN.getCardSuitPixmap(real->getSuit())); layout->addWidget(button); button->setEnabled(!disabled_ids.contains(card->getEffectiveId()) && (method != Card::MethodDiscard || Self->canDiscard(player, card->getEffectiveId()))); mapper.insert(button, card->getId()); connect(button, SIGNAL(clicked()), this, SLOT(emitId())); } if (layout->count() == 0) { PlayerCardButton *button = new PlayerCardButton(tr("No judging cards")); button->setEnabled(false); button->setObjectName("nojuding_button"); return button; } else { area->setLayout(layout); return area; } }
QWidget *PlayerCardDialog::createHandcardButton() { if (!player->isKongcheng() && (Self == player || handcard_visible)) { QGroupBox *area = new QGroupBox(tr("Handcard area")); QVBoxLayout *layout = new QVBoxLayout; QList<const Card *> cards = player->getHandcards(); for (int i = 0; i < cards.length(); i += 2) { const Card *card = Sanguosha->getEngineCard(cards.at(i)->getId()); PlayerCardButton *button1 = new PlayerCardButton(card->getFullName()); button1->setIcon(G_ROOM_SKIN.getCardSuitPixmap(card->getSuit())); mapper.insert(button1, card->getId()); connect(button1, SIGNAL(clicked()), this, SLOT(emitId())); PlayerCardButton *button2 = NULL; if (i < cards.length() - 1) { card = Sanguosha->getEngineCard(cards.at(i + 1)->getId());; button2 = new PlayerCardButton(card->getFullName()); button2->setIcon(G_ROOM_SKIN.getCardSuitPixmap(card->getSuit())); mapper.insert(button2, card->getId()); connect(button2, SIGNAL(clicked()), this, SLOT(emitId())); } if (button1 && button2) { QHBoxLayout *hlayout = new QHBoxLayout; button1->setScale(0.65); button2->setScale(0.65); hlayout->addWidget(button1); hlayout->addWidget(button2); layout->addLayout(hlayout); } else { Q_ASSERT(button1 != NULL); layout->addWidget(button1); } } area->setLayout(layout); return area; } PlayerCardButton *button = new PlayerCardButton(tr("Handcard")); button->setObjectName("handcard_button"); int num = player->getHandcardNum(); if (num == 0) { button->setDescription(tr("This guy has no any hand cards")); button->setEnabled(false); } else { button->setDescription(tr("This guy has %1 hand card(s)").arg(num)); button->setEnabled(method != Card::MethodDiscard || Self->canDiscard(player, "h")); mapper.insert(button, -1); connect(button, SIGNAL(clicked()), this, SLOT(emitId())); } return button; }
QWidget *PlayerCardDialog::createEquipArea() { QGroupBox *area = new QGroupBox(tr("Equip area")); QVBoxLayout *layout = new QVBoxLayout; WrappedCard *weapon = player->getWeapon(); if (weapon) { PlayerCardButton *button = new PlayerCardButton(weapon->getFullName()); button->setIcon(G_ROOM_SKIN.getCardSuitPixmap(Sanguosha->getEngineCard(weapon->getId())->getSuit())); button->setEnabled(!disabled_ids.contains(weapon->getEffectiveId()) && (method != Card::MethodDiscard || Self->canDiscard(player, weapon->getEffectiveId()))); mapper.insert(button, weapon->getId()); connect(button, SIGNAL(clicked()), this, SLOT(emitId())); layout->addWidget(button); } WrappedCard *armor = player->getArmor(); if (armor) { PlayerCardButton *button = new PlayerCardButton(armor->getFullName()); button->setIcon(G_ROOM_SKIN.getCardSuitPixmap(Sanguosha->getEngineCard(armor->getId())->getSuit())); button->setEnabled(!disabled_ids.contains(armor->getEffectiveId()) && (method != Card::MethodDiscard || Self->canDiscard(player, armor->getEffectiveId()))); mapper.insert(button, armor->getId()); connect(button, SIGNAL(clicked()), this, SLOT(emitId())); layout->addWidget(button); } WrappedCard *horse = player->getDefensiveHorse(); if (horse) { PlayerCardButton *button = new PlayerCardButton(horse->getFullName() + tr("(+1 horse)")); button->setIcon(G_ROOM_SKIN.getCardSuitPixmap(Sanguosha->getEngineCard(horse->getId())->getSuit())); button->setEnabled(!disabled_ids.contains(horse->getEffectiveId()) && (method != Card::MethodDiscard || Self->canDiscard(player, horse->getEffectiveId()))); mapper.insert(button, horse->getId()); connect(button, SIGNAL(clicked()), this, SLOT(emitId())); layout->addWidget(button); } horse = player->getOffensiveHorse(); if (horse) { PlayerCardButton *button = new PlayerCardButton(horse->getFullName() + tr("(-1 horse)")); button->setIcon(G_ROOM_SKIN.getCardSuitPixmap(Sanguosha->getEngineCard(horse->getId())->getSuit())); button->setEnabled(!disabled_ids.contains(horse->getEffectiveId()) && (method != Card::MethodDiscard || Self->canDiscard(player, horse->getEffectiveId()))); mapper.insert(button, horse->getId()); connect(button, SIGNAL(clicked()), this, SLOT(emitId())); layout->addWidget(button); } WrappedCard *treasure = player->getTreasure(); if (treasure) { PlayerCardButton *button = new PlayerCardButton(treasure->getFullName()); button->setIcon(G_ROOM_SKIN.getCardSuitPixmap(Sanguosha->getEngineCard(treasure->getId())->getSuit())); button->setEnabled(!disabled_ids.contains(treasure->getEffectiveId()) && (method != Card::MethodDiscard || Self->canDiscard(player, treasure->getEffectiveId()))); mapper.insert(button, treasure->getId()); connect(button, SIGNAL(clicked()), this, SLOT(emitId())); layout->addWidget(button); } if (layout->count() == 0) { PlayerCardButton *no_equip = new PlayerCardButton(tr("No equip")); no_equip->setEnabled(false); no_equip->setObjectName("noequip_button"); return no_equip; } else { area->setLayout(layout); return area; } }