mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-22 22:53:55 -07:00
improved token dialog
This commit is contained in:
parent
62a9003d3e
commit
49e3563386
16 changed files with 112 additions and 56 deletions
|
|
@ -53,48 +53,47 @@ void AbstractCardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *
|
|||
} else {
|
||||
QFont f("Serif");
|
||||
f.setStyleHint(QFont::Serif);
|
||||
f.setPixelSize(11);
|
||||
f.setPixelSize(12);
|
||||
painter->setFont(f);
|
||||
painter->setBrush(QColor(230, 230, 230));
|
||||
qDebug() <<"COLORS:::::" << info->getColors();
|
||||
QString color;
|
||||
QPen pen;
|
||||
if(!info->getColors().empty())
|
||||
{
|
||||
color = info->getColors().first();
|
||||
if(color == "B")
|
||||
painter->setBrush(QColor(0,0,0));
|
||||
if(color == "U")
|
||||
painter->setBrush(QColor(0,140,180));
|
||||
if(color == "W")
|
||||
painter->setBrush(QColor(255,250,140));
|
||||
if(color == "R")
|
||||
painter->setBrush(QColor(230,0,0));
|
||||
if(color == "G")
|
||||
painter->setBrush(QColor(0,160,0));
|
||||
if(info->getColors().size() > 1)
|
||||
{
|
||||
painter->setBrush(QColor(250,190,30));
|
||||
color = "M"; // Multicolor
|
||||
}
|
||||
|
||||
}
|
||||
QString colorStr;
|
||||
if (!color.isEmpty())
|
||||
colorStr = color;
|
||||
else if (info->getColors().size() > 1)
|
||||
colorStr = "m";
|
||||
else
|
||||
colorStr = info->getColors().first().toLower();
|
||||
|
||||
painter->setPen(Qt::black);
|
||||
QColor bgColor;
|
||||
QColor textColor = Qt::white;
|
||||
if (colorStr == "b")
|
||||
bgColor = QColor(0, 0, 0);
|
||||
else if (colorStr == "u")
|
||||
bgColor = QColor(0, 140, 180);
|
||||
else if (colorStr == "w") {
|
||||
bgColor = QColor(255, 250, 140);
|
||||
textColor = Qt::black;
|
||||
} else if (colorStr == "r")
|
||||
bgColor = QColor(230, 0, 0);
|
||||
else if (colorStr == "g")
|
||||
bgColor = QColor(0, 160, 0);
|
||||
else if (colorStr == "m") {
|
||||
bgColor = QColor(250, 190, 30);
|
||||
textColor = Qt::black;
|
||||
} else {
|
||||
bgColor = QColor(230, 230, 230);
|
||||
textColor = Qt::black;
|
||||
}
|
||||
painter->setBrush(bgColor);
|
||||
QPen pen(Qt::black);
|
||||
painter->setPen(pen);
|
||||
|
||||
painter->drawRect(QRectF(0.5, 0.5, CARD_WIDTH - 1, CARD_HEIGHT - 1));
|
||||
|
||||
pen.setWidth(3);
|
||||
painter->setPen(pen);
|
||||
painter->drawRect(QRectF(3, 3, CARD_WIDTH - 6, CARD_HEIGHT - 6));
|
||||
painter->setPen(Qt::white);
|
||||
if(color == "W" || color == "" || color == "M")
|
||||
painter->setPen(Qt::black);
|
||||
painter->setPen(textColor);
|
||||
painter->drawText(QRectF(5, 5, CARD_WIDTH - 15, CARD_HEIGHT - 15), Qt::AlignTop | Qt::AlignLeft | Qt::TextWordWrap, name);
|
||||
if(info->getCardType().contains("Creature"))
|
||||
{
|
||||
painter->drawText(QRectF(CARD_WIDTH - 40, CARD_HEIGHT - 25, 30, 30), Qt::AlignTop | Qt::AlignRight | Qt::TextWordWrap, info->getPowTough());
|
||||
}
|
||||
}
|
||||
painter->restore();
|
||||
|
||||
|
|
@ -115,6 +114,12 @@ void AbstractCardItem::setName(const QString &_name)
|
|||
update();
|
||||
}
|
||||
|
||||
void AbstractCardItem::setColor(const QString &_color)
|
||||
{
|
||||
color = _color;
|
||||
update();
|
||||
}
|
||||
|
||||
void AbstractCardItem::setTapped(bool _tapped)
|
||||
{
|
||||
tapped = _tapped;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ protected:
|
|||
CardInfo *info;
|
||||
QString name;
|
||||
bool tapped;
|
||||
QString color;
|
||||
private slots:
|
||||
void pixmapUpdated();
|
||||
signals:
|
||||
|
|
@ -35,6 +36,8 @@ public:
|
|||
CardInfo *getInfo() const { return info; }
|
||||
QString getName() const { return name; }
|
||||
void setName(const QString &_name = QString());
|
||||
QString getColor() const { return color; }
|
||||
void setColor(const QString &_color);
|
||||
bool getTapped() const { return tapped; }
|
||||
void setTapped(bool _tapped);
|
||||
void processHoverEvent();
|
||||
|
|
|
|||
|
|
@ -202,9 +202,9 @@ void MessageLogWidget::logMoveCard(Player *player, QString cardName, CardZone *s
|
|||
append(finalStr.arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(newX));
|
||||
}
|
||||
|
||||
void MessageLogWidget::logCreateToken(Player *player, QString cardName)
|
||||
void MessageLogWidget::logCreateToken(Player *player, QString cardName, QString pt)
|
||||
{
|
||||
append(tr("%1 creates token: %2.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
|
||||
append(tr("%1 creates token: %2 (%3).").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(sanitizeHtml(pt)));
|
||||
}
|
||||
|
||||
void MessageLogWidget::logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard)
|
||||
|
|
@ -319,7 +319,7 @@ void MessageLogWidget::connectToPlayer(Player *player)
|
|||
connect(player, SIGNAL(logShuffle(Player *)), this, SLOT(logShuffle(Player *)));
|
||||
connect(player, SIGNAL(logRollDie(Player *, int, int)), this, SLOT(logRollDie(Player *, int, int)));
|
||||
connect(player, SIGNAL(logCreateArrow(Player *, Player *, QString, Player *, QString)), this, SLOT(logCreateArrow(Player *, Player *, QString, Player *, QString)));
|
||||
connect(player, SIGNAL(logCreateToken(Player *, QString)), this, SLOT(logCreateToken(Player *, QString)));
|
||||
connect(player, SIGNAL(logCreateToken(Player *, QString, QString)), this, SLOT(logCreateToken(Player *, QString, QString)));
|
||||
connect(player, SIGNAL(logSetCounter(Player *, QString, int, int)), this, SLOT(logSetCounter(Player *, QString, int, int)));
|
||||
connect(player, SIGNAL(logSetCardCounter(Player *, QString, int, int, int)), this, SLOT(logSetCardCounter(Player *, QString, int, int, int)));
|
||||
connect(player, SIGNAL(logSetTapped(Player *, QString, bool)), this, SLOT(logSetTapped(Player *, QString, bool)));
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public slots:
|
|||
void logRollDie(Player *player, int sides, int roll);
|
||||
void logDrawCards(Player *player, int number);
|
||||
void logMoveCard(Player *player, QString cardName, CardZone *startZone, int oldX, CardZone *targetZone, int newX);
|
||||
void logCreateToken(Player *player, QString cardName);
|
||||
void logCreateToken(Player *player, QString cardName, QString pt);
|
||||
void logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard);
|
||||
void logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue);
|
||||
void logSetTapped(Player *player, QString cardName, bool tapped);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "protocol_items.h"
|
||||
#include "gamescene.h"
|
||||
#include "settingscache.h"
|
||||
#include "dlg_create_token.h"
|
||||
#include <QSettings>
|
||||
#include <QPainter>
|
||||
#include <QMenu>
|
||||
|
|
@ -182,6 +183,10 @@ Player::Player(const QString &_name, int _id, bool _local, Client *_client, TabG
|
|||
aCreateToken = new QAction(this);
|
||||
connect(aCreateToken, SIGNAL(triggered()), this, SLOT(actCreateToken()));
|
||||
|
||||
aCreateAnotherToken = new QAction(this);
|
||||
connect(aCreateAnotherToken, SIGNAL(triggered()), this, SLOT(actCreateAnotherToken()));
|
||||
aCreateAnotherToken->setEnabled(false);
|
||||
|
||||
playerMenu->addSeparator();
|
||||
countersMenu = playerMenu->addMenu(QString());
|
||||
playerMenu->addSeparator();
|
||||
|
|
@ -190,6 +195,7 @@ Player::Player(const QString &_name, int _id, bool _local, Client *_client, TabG
|
|||
playerMenu->addAction(aRollDie);
|
||||
playerMenu->addSeparator();
|
||||
playerMenu->addAction(aCreateToken);
|
||||
playerMenu->addAction(aCreateAnotherToken);
|
||||
playerMenu->addSeparator();
|
||||
sayMenu = playerMenu->addMenu(QString());
|
||||
initSayMenu();
|
||||
|
|
@ -264,6 +270,7 @@ Player::Player(const QString &_name, int _id, bool _local, Client *_client, TabG
|
|||
countersMenu = 0;
|
||||
sbMenu = 0;
|
||||
cardMenu = 0;
|
||||
aCreateAnotherToken = 0;
|
||||
}
|
||||
|
||||
rearrangeZones();
|
||||
|
|
@ -376,6 +383,8 @@ void Player::retranslateUi()
|
|||
aRollDie->setShortcut(tr("Ctrl+I"));
|
||||
aCreateToken->setText(tr("&Create token..."));
|
||||
aCreateToken->setShortcut(tr("Ctrl+T"));
|
||||
aCreateAnotherToken->setText(tr("C&reate another token"));
|
||||
aCreateAnotherToken->setShortcut(tr("Ctrl+G"));
|
||||
sayMenu->setTitle(tr("S&ay"));
|
||||
|
||||
QMapIterator<int, Counter *> counterIterator(counters);
|
||||
|
|
@ -491,9 +500,22 @@ void Player::actRollDie()
|
|||
|
||||
void Player::actCreateToken()
|
||||
{
|
||||
QString cardname = QInputDialog::getText(0, tr("Create token"), tr("Name:"));
|
||||
if (!cardname.isEmpty())
|
||||
sendGameCommand(new Command_CreateToken(-1, "table", cardname, QString(), -1, 0));
|
||||
DlgCreateToken dlg;
|
||||
if (!dlg.exec())
|
||||
return;
|
||||
|
||||
lastTokenName = dlg.getName();
|
||||
lastTokenColor = dlg.getColor();
|
||||
lastTokenPT = dlg.getPT();
|
||||
lastTokenAnnotation = dlg.getAnnotation();
|
||||
aCreateAnotherToken->setEnabled(true);
|
||||
|
||||
sendGameCommand(new Command_CreateToken(-1, "table", dlg.getName(), dlg.getColor(), dlg.getPT(), dlg.getAnnotation(), -1, 0));
|
||||
}
|
||||
|
||||
void Player::actCreateAnotherToken()
|
||||
{
|
||||
sendGameCommand(new Command_CreateToken(-1, "table", lastTokenName, lastTokenColor, lastTokenPT, lastTokenAnnotation, -1, 0));
|
||||
}
|
||||
|
||||
void Player::actSayMessage()
|
||||
|
|
@ -566,8 +588,11 @@ void Player::eventCreateToken(Event_CreateToken *event)
|
|||
return;
|
||||
|
||||
CardItem *card = new CardItem(this, event->getCardName(), event->getCardId());
|
||||
card->setColor(event->getColor());
|
||||
card->setPT(event->getPt());
|
||||
card->setAnnotation(event->getAnnotation());
|
||||
|
||||
emit logCreateToken(this, card->getName());
|
||||
emit logCreateToken(this, card->getName(), card->getPT());
|
||||
zone->addCard(card, true, event->getX(), event->getY());
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ signals:
|
|||
void logShuffle(Player *player);
|
||||
void logRollDie(Player *player, int sides, int roll);
|
||||
void logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard);
|
||||
void logCreateToken(Player *player, QString cardName);
|
||||
void logCreateToken(Player *player, QString cardName, QString pt);
|
||||
void logDrawCards(Player *player, int number);
|
||||
void logMoveCard(Player *player, QString cardName, CardZone *startZone, int oldX, CardZone *targetZone, int newX);
|
||||
void logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue);
|
||||
|
|
@ -66,6 +66,7 @@ public slots:
|
|||
void actUntapAll();
|
||||
void actRollDie();
|
||||
void actCreateToken();
|
||||
void actCreateAnotherToken();
|
||||
void actShuffle();
|
||||
void actDrawCard();
|
||||
void actDrawCards();
|
||||
|
|
@ -96,7 +97,7 @@ private:
|
|||
*aMoveRfgToTopLibrary, *aMoveRfgToBottomLibrary, *aMoveRfgToHand, *aMoveRfgToGrave,
|
||||
*aViewLibrary, *aViewTopCards, *aViewGraveyard, *aViewRfg, *aViewSideboard,
|
||||
*aDrawCard, *aDrawCards, *aMulligan, *aShuffle,
|
||||
*aUntapAll, *aRollDie, *aCreateToken;
|
||||
*aUntapAll, *aRollDie, *aCreateToken, *aCreateAnotherToken;
|
||||
|
||||
typedef void (Player::*CardMenuHandler)(CardItem *card);
|
||||
QHash<QAction *, CardMenuHandler> cardMenuHandlers;
|
||||
|
|
@ -115,6 +116,7 @@ private:
|
|||
void actMoveToExile(CardItem *card);
|
||||
|
||||
int defaultNumberTopCards;
|
||||
QString lastTokenName, lastTokenColor, lastTokenPT, lastTokenAnnotation;
|
||||
QString name;
|
||||
int id;
|
||||
bool active;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue