set p/t, set annotation, multiple counters per card
This commit is contained in:
parent
7553251baf
commit
df7bcf179d
25 changed files with 891 additions and 385 deletions
|
@ -1,33 +1,45 @@
|
|||
#include "abstractgraphicsitem.h"
|
||||
#include <QPainter>
|
||||
|
||||
void AbstractGraphicsItem::paintNumberEllipse(int number, QPainter *painter)
|
||||
void AbstractGraphicsItem::paintNumberEllipse(int number, int fontSize, const QColor &color, int position, QPainter *painter)
|
||||
{
|
||||
painter->save();
|
||||
|
||||
QString numStr = QString::number(number);
|
||||
QFont font("Serif");
|
||||
font.setPixelSize(32);
|
||||
font.setPixelSize(fontSize);
|
||||
font.setWeight(QFont::Bold);
|
||||
|
||||
QFontMetrics fm(font);
|
||||
double w = fm.width(numStr) * 1.5;
|
||||
double h = fm.height() * 1.5;
|
||||
double w = fm.width(numStr) * 1.3;
|
||||
double h = fm.height() * 1.3;
|
||||
if (w < h)
|
||||
w = h;
|
||||
|
||||
painter->setPen(QColor(255, 255, 255, 0));
|
||||
QRadialGradient grad(QPointF(0.5, 0.5), 0.5);
|
||||
grad.setCoordinateMode(QGradient::ObjectBoundingMode);
|
||||
grad.setColorAt(0, QColor(255, 255, 255, 200));
|
||||
grad.setColorAt(0.7, QColor(255, 255, 255, 200));
|
||||
grad.setColorAt(1, QColor(255, 255, 255, 0));
|
||||
QColor color1(color), color2(color);
|
||||
color1.setAlpha(255);
|
||||
color2.setAlpha(0);
|
||||
grad.setColorAt(0, color1);
|
||||
grad.setColorAt(0.8, color1);
|
||||
grad.setColorAt(1, color2);
|
||||
painter->setBrush(QBrush(grad));
|
||||
painter->drawEllipse(QRectF((boundingRect().width() - w) / 2.0, (boundingRect().height() - h) / 2.0, w, h));
|
||||
|
||||
QRectF textRect;
|
||||
if (position == -1)
|
||||
textRect = QRectF((boundingRect().width() - w) / 2.0, (boundingRect().height() - h) / 2.0, w, h);
|
||||
else {
|
||||
qreal offset = boundingRect().width() / 20.0;
|
||||
textRect = QRectF(offset, offset * (position + 1) + h * position, w, h);
|
||||
}
|
||||
|
||||
painter->drawEllipse(textRect);
|
||||
|
||||
painter->setPen(Qt::black);
|
||||
painter->setFont(font);
|
||||
painter->drawText(boundingRect(), Qt::AlignCenter, numStr);
|
||||
painter->drawText(textRect, Qt::AlignCenter, numStr);
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
class AbstractGraphicsItem : public QGraphicsItem {
|
||||
protected:
|
||||
void paintNumberEllipse(int number, QPainter *painter);
|
||||
void paintNumberEllipse(int number, int radius, const QColor &color, int position, QPainter *painter);
|
||||
public:
|
||||
AbstractGraphicsItem(QGraphicsItem *parent = 0) : QGraphicsItem(parent) { }
|
||||
};
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include "settingscache.h"
|
||||
|
||||
CardItem::CardItem(Player *_owner, const QString &_name, int _cardid, QGraphicsItem *parent)
|
||||
: AbstractCardItem(_name, parent), owner(_owner), id(_cardid), attacking(false), facedown(false), counters(0), doesntUntap(false), beingPointedAt(false), dragItem(NULL)
|
||||
: AbstractCardItem(_name, parent), owner(_owner), id(_cardid), attacking(false), facedown(false), doesntUntap(false), beingPointedAt(false), dragItem(NULL)
|
||||
{
|
||||
owner->addCard(this);
|
||||
}
|
||||
|
@ -26,8 +26,29 @@ void CardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|||
{
|
||||
painter->save();
|
||||
AbstractCardItem::paint(painter, option, widget);
|
||||
if (counters)
|
||||
paintNumberEllipse(counters, painter);
|
||||
|
||||
int i = 0;
|
||||
QMapIterator<int, int> counterIterator(counters);
|
||||
while (counterIterator.hasNext()) {
|
||||
counterIterator.next();
|
||||
QColor color;
|
||||
color.setHsv(counterIterator.key() * 60, 150, 255);
|
||||
|
||||
paintNumberEllipse(counterIterator.value(), 14, color, i, painter);
|
||||
++i;
|
||||
}
|
||||
if (!pt.isEmpty()) {
|
||||
QFont font("Serif");
|
||||
font.setPixelSize(16);
|
||||
painter->setFont(font);
|
||||
QPen pen(Qt::white);
|
||||
QBrush brush(Qt::black);
|
||||
painter->setBackground(brush);
|
||||
painter->setBackgroundMode(Qt::OpaqueMode);
|
||||
painter->setPen(pen);
|
||||
|
||||
painter->drawText(QRectF(0, 0, boundingRect().width() - 5, boundingRect().height() - 5), Qt::AlignRight | Qt::AlignBottom, pt);
|
||||
}
|
||||
if (beingPointedAt)
|
||||
painter->fillRect(boundingRect(), QBrush(QColor(255, 0, 0, 100)));
|
||||
painter->restore();
|
||||
|
@ -47,15 +68,19 @@ void CardItem::setFaceDown(bool _facedown)
|
|||
update();
|
||||
}
|
||||
|
||||
void CardItem::setCounters(int _counters)
|
||||
void CardItem::setCounter(int _id, int _value)
|
||||
{
|
||||
counters = _counters;
|
||||
if (_value)
|
||||
counters.insert(_id, _value);
|
||||
else
|
||||
counters.remove(_id);
|
||||
update();
|
||||
}
|
||||
|
||||
void CardItem::setAnnotation(const QString &_annotation)
|
||||
{
|
||||
annotation = _annotation;
|
||||
setToolTip(annotation);
|
||||
update();
|
||||
}
|
||||
|
||||
|
@ -64,6 +89,12 @@ void CardItem::setDoesntUntap(bool _doesntUntap)
|
|||
doesntUntap = _doesntUntap;
|
||||
}
|
||||
|
||||
void CardItem::setPT(const QString &_pt)
|
||||
{
|
||||
pt = _pt;
|
||||
update();
|
||||
}
|
||||
|
||||
void CardItem::setBeingPointedAt(bool _beingPointedAt)
|
||||
{
|
||||
beingPointedAt = _beingPointedAt;
|
||||
|
@ -74,8 +105,9 @@ void CardItem::resetState()
|
|||
{
|
||||
attacking = false;
|
||||
facedown = false;
|
||||
counters = 0;
|
||||
annotation = QString();
|
||||
counters.clear();
|
||||
pt.clear();
|
||||
annotation.clear();
|
||||
setTapped(false);
|
||||
setDoesntUntap(false);
|
||||
update();
|
||||
|
@ -83,10 +115,15 @@ void CardItem::resetState()
|
|||
|
||||
void CardItem::processCardInfo(ServerInfo_Card *info)
|
||||
{
|
||||
counters.clear();
|
||||
const QList<ServerInfo_CardCounter *> &_counterList = info->getCounters();
|
||||
for (int i = 0; i < _counterList.size(); ++i)
|
||||
counters.insert(_counterList[i]->getId(), _counterList[i]->getValue());
|
||||
|
||||
setId(info->getId());
|
||||
setName(info->getName());
|
||||
setAttacking(info->getAttacking());
|
||||
setCounters(info->getCounters());
|
||||
setPT(info->getPT());
|
||||
setAnnotation(info->getAnnotation());
|
||||
setTapped(info->getTapped());
|
||||
}
|
||||
|
|
|
@ -18,8 +18,9 @@ private:
|
|||
int id;
|
||||
bool attacking;
|
||||
bool facedown;
|
||||
int counters;
|
||||
QMap<int, int> counters;
|
||||
QString annotation;
|
||||
QString pt;
|
||||
bool doesntUntap;
|
||||
QPoint gridPoint;
|
||||
bool beingPointedAt;
|
||||
|
@ -42,12 +43,14 @@ public:
|
|||
void setAttacking(bool _attacking);
|
||||
bool getFaceDown() const { return facedown; }
|
||||
void setFaceDown(bool _facedown);
|
||||
int getCounters() const { return counters; }
|
||||
void setCounters(int _counters);
|
||||
const QMap<int, int> &getCounters() const { return counters; }
|
||||
void setCounter(int _id, int _value);
|
||||
QString getAnnotation() const { return annotation; }
|
||||
void setAnnotation(const QString &_annotation);
|
||||
bool getDoesntUntap() const { return doesntUntap; }
|
||||
void setDoesntUntap(bool _doesntUntap);
|
||||
QString getPT() const { return pt; }
|
||||
void setPT(const QString &_pt);
|
||||
void setBeingPointedAt(bool _beingPointedAt);
|
||||
void resetState();
|
||||
void processCardInfo(ServerInfo_Card *info);
|
||||
|
|
|
@ -34,5 +34,5 @@ QRectF HandCounter::boundingRect() const
|
|||
void HandCounter::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/)
|
||||
{
|
||||
painter->drawPixmap(handImage->rect(), *handImage, handImage->rect());
|
||||
paintNumberEllipse(number, painter);
|
||||
paintNumberEllipse(number, 24, Qt::white, -1, painter);
|
||||
}
|
||||
|
|
|
@ -218,14 +218,24 @@ void MessageLogWidget::logCreateArrow(Player *player, Player *startPlayer, QStri
|
|||
);
|
||||
}
|
||||
|
||||
void MessageLogWidget::logSetCardCounters(Player *player, QString cardName, int value, int oldValue)
|
||||
void MessageLogWidget::logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue)
|
||||
{
|
||||
QString finalStr;
|
||||
QString finalStr, colorStr;
|
||||
|
||||
int delta = abs(oldValue - value);
|
||||
if (value > oldValue)
|
||||
finalStr = tr("%1 places %2 counters on %3 (now %4).");
|
||||
finalStr = tr("%1 places %n counter(s) (%2) on %3 (now %4).", "", delta);
|
||||
else
|
||||
finalStr = tr("%1 removes %2 counters from %3 (now %4).");
|
||||
append(finalStr.arg(sanitizeHtml(player->getName())).arg(abs(oldValue - value)).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(value));
|
||||
finalStr = tr("%1 removes %n counter(s) (%2) from %3 (now %4).", "", delta);
|
||||
|
||||
switch (counterId) {
|
||||
case 0: colorStr = tr("red"); break;
|
||||
case 1: colorStr = tr("yellow"); break;
|
||||
case 2: colorStr = tr("green"); break;
|
||||
default: ;
|
||||
}
|
||||
|
||||
append(finalStr.arg(sanitizeHtml(player->getName())).arg(colorStr).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(value));
|
||||
}
|
||||
|
||||
void MessageLogWidget::logSetTapped(Player *player, QString cardName, bool tapped)
|
||||
|
@ -240,7 +250,7 @@ void MessageLogWidget::logSetTapped(Player *player, QString cardName, bool tappe
|
|||
|
||||
void MessageLogWidget::logSetCounter(Player *player, QString counterName, int value, int oldValue)
|
||||
{
|
||||
append(tr("%1 sets counter \"%2\" to %3 (%4%5).").arg(sanitizeHtml(player->getName())).arg(counterName).arg(value).arg(value > oldValue ? "+" : "").arg(value - oldValue));
|
||||
append(tr("%1 sets counter %2 to %3 (%4%5).").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(counterName))).arg(QString("<font color=\"blue\">%1</font>").arg(value)).arg(value > oldValue ? "+" : "").arg(value - oldValue));
|
||||
}
|
||||
|
||||
void MessageLogWidget::logSetDoesntUntap(Player *player, QString cardName, bool doesntUntap)
|
||||
|
@ -253,6 +263,16 @@ void MessageLogWidget::logSetDoesntUntap(Player *player, QString cardName, bool
|
|||
append(finalStr.arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
|
||||
}
|
||||
|
||||
void MessageLogWidget::logSetPT(Player *player, QString cardName, QString newPT)
|
||||
{
|
||||
append(tr("%1 sets PT of %2 to %3.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(newPT))));
|
||||
}
|
||||
|
||||
void MessageLogWidget::logSetAnnotation(Player *player, QString cardName, QString newAnnotation)
|
||||
{
|
||||
append(tr("%1 sets annotation of %2 to %3.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(newAnnotation))));
|
||||
}
|
||||
|
||||
void MessageLogWidget::logDumpZone(Player *player, CardZone *zone, int numberCards)
|
||||
{
|
||||
if (numberCards != -1)
|
||||
|
@ -301,9 +321,11 @@ void MessageLogWidget::connectToPlayer(Player *player)
|
|||
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(logSetCounter(Player *, QString, int, int)), this, SLOT(logSetCounter(Player *, QString, int, int)));
|
||||
connect(player, SIGNAL(logSetCardCounters(Player *, QString, int, int)), this, SLOT(logSetCardCounters(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)));
|
||||
connect(player, SIGNAL(logSetDoesntUntap(Player *, QString, bool)), this, SLOT(logSetDoesntUntap(Player *, QString, bool)));
|
||||
connect(player, SIGNAL(logSetPT(Player *, QString, QString)), this, SLOT(logSetPT(Player *, QString, QString)));
|
||||
connect(player, SIGNAL(logSetAnnotation(Player *, QString, QString)), this, SLOT(logSetAnnotation(Player *, QString, QString)));
|
||||
connect(player, SIGNAL(logMoveCard(Player *, QString, CardZone *, int, CardZone *, int)), this, SLOT(logMoveCard(Player *, QString, CardZone *, int, CardZone *, int)));
|
||||
connect(player, SIGNAL(logDumpZone(Player *, CardZone *, int)), this, SLOT(logDumpZone(Player *, CardZone *, int)));
|
||||
connect(player, SIGNAL(logStopDumpZone(Player *, CardZone *)), this, SLOT(logStopDumpZone(Player *, CardZone *)));
|
||||
|
|
|
@ -41,10 +41,12 @@ public slots:
|
|||
void logMoveCard(Player *player, QString cardName, CardZone *startZone, int oldX, CardZone *targetZone, int newX);
|
||||
void logCreateToken(Player *player, QString cardName);
|
||||
void logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard);
|
||||
void logSetCardCounters(Player *player, QString cardName, int value, int oldValue);
|
||||
void logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue);
|
||||
void logSetTapped(Player *player, QString cardName, bool tapped);
|
||||
void logSetCounter(Player *player, QString counterName, int value, int oldValue);
|
||||
void logSetDoesntUntap(Player *player, QString cardName, bool doesntUntap);
|
||||
void logSetPT(Player *player, QString cardName, QString newPT);
|
||||
void logSetAnnotation(Player *player, QString cardName, QString newAnnotation);
|
||||
void logDumpZone(Player *player, CardZone *zone, int numberCards);
|
||||
void logStopDumpZone(Player *player, CardZone *zone);
|
||||
void logSetActivePlayer(Player *player);
|
||||
|
|
|
@ -28,7 +28,7 @@ void PileZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|||
painter->restore();
|
||||
}
|
||||
|
||||
paintNumberEllipse(cards.size(), painter);
|
||||
paintNumberEllipse(cards.size(), 32, Qt::white, -1, painter);
|
||||
painter->drawRect(QRectF(0.5, 0.5, CARD_WIDTH - 1, CARD_HEIGHT - 1));
|
||||
}
|
||||
|
||||
|
|
|
@ -198,26 +198,43 @@ Player::Player(const QString &_name, int _id, bool _local, Client *_client, TabG
|
|||
aTap = new QAction(this);
|
||||
aUntap = new QAction(this);
|
||||
aDoesntUntap = new QAction(this);
|
||||
aSetPT = new QAction(this);
|
||||
connect(aSetPT, SIGNAL(triggered()), this, SLOT(actSetPT()));
|
||||
aSetAnnotation = new QAction(this);
|
||||
connect(aSetAnnotation, SIGNAL(triggered()), this, SLOT(actSetAnnotation()));
|
||||
aFlip = new QAction(this);
|
||||
aAddCounter = new QAction(this);
|
||||
aRemoveCounter = new QAction(this);
|
||||
aSetCounters = new QAction(this);
|
||||
connect(aSetCounters, SIGNAL(triggered()), this, SLOT(actSetCounters()));
|
||||
aMoveToTopLibrary = new QAction(this);
|
||||
aMoveToBottomLibrary = new QAction(this);
|
||||
aMoveToGraveyard = new QAction(this);
|
||||
aMoveToExile = new QAction(this);
|
||||
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
QMenu *menu = new QMenu;
|
||||
QAction *tempAddCounter = new QAction(this);
|
||||
QAction *tempRemoveCounter = new QAction(this);
|
||||
QAction *tempSetCounter = new QAction(this);
|
||||
menu->addAction(tempAddCounter);
|
||||
menu->addAction(tempRemoveCounter);
|
||||
menu->addAction(tempSetCounter);
|
||||
aAddCounter.append(tempAddCounter);
|
||||
aRemoveCounter.append(tempRemoveCounter);
|
||||
aSetCounter.append(tempSetCounter);
|
||||
connect(menu, SIGNAL(triggered(QAction *)), this, SLOT(actCardCounterTrigger(QAction *)));
|
||||
cardCounterMenus.append(menu);
|
||||
}
|
||||
|
||||
cardMenu = new QMenu;
|
||||
cardMenu->addAction(aTap);
|
||||
cardMenu->addAction(aUntap);
|
||||
cardMenu->addAction(aDoesntUntap);
|
||||
cardMenu->addSeparator();
|
||||
cardMenu->addAction(aSetPT);
|
||||
cardMenu->addAction(aSetAnnotation);
|
||||
cardMenu->addSeparator();
|
||||
cardMenu->addAction(aFlip);
|
||||
cardMenu->addSeparator();
|
||||
cardMenu->addAction(aAddCounter);
|
||||
cardMenu->addAction(aRemoveCounter);
|
||||
cardMenu->addAction(aSetCounters);
|
||||
for (int i = 0; i < cardCounterMenus.size(); ++i)
|
||||
cardMenu->addMenu(cardCounterMenus[i]);
|
||||
cardMenu->addSeparator();
|
||||
moveMenu = cardMenu->addMenu(QString());
|
||||
|
||||
|
@ -233,8 +250,6 @@ Player::Player(const QString &_name, int _id, bool _local, Client *_client, TabG
|
|||
cardMenuHandlers.insert(aUntap, &Player::actUntap);
|
||||
cardMenuHandlers.insert(aDoesntUntap, &Player::actDoesntUntap);
|
||||
cardMenuHandlers.insert(aFlip, &Player::actFlip);
|
||||
cardMenuHandlers.insert(aAddCounter, &Player::actAddCounter);
|
||||
cardMenuHandlers.insert(aRemoveCounter, &Player::actRemoveCounter);
|
||||
cardMenuHandlers.insert(aMoveToTopLibrary, &Player::actMoveToTopLibrary);
|
||||
cardMenuHandlers.insert(aMoveToBottomLibrary, &Player::actMoveToBottomLibrary);
|
||||
cardMenuHandlers.insert(aMoveToGraveyard, &Player::actMoveToGraveyard);
|
||||
|
@ -371,10 +386,18 @@ void Player::retranslateUi()
|
|||
aTap->setText(tr("&Tap"));
|
||||
aUntap->setText(tr("&Untap"));
|
||||
aDoesntUntap->setText(tr("Toggle &normal untapping"));
|
||||
aSetPT->setText(tr("Set &P/T..."));
|
||||
aSetAnnotation->setText(tr("&Set annotation..."));
|
||||
aFlip->setText(tr("&Flip"));
|
||||
aAddCounter->setText(tr("&Add counter"));
|
||||
aRemoveCounter->setText(tr("&Remove counter"));
|
||||
aSetCounters->setText(tr("&Set counters..."));
|
||||
cardCounterMenus[0]->setTitle(tr("Counters (red)"));
|
||||
cardCounterMenus[1]->setTitle(tr("Counters (yellow)"));
|
||||
cardCounterMenus[2]->setTitle(tr("Counters (green)"));
|
||||
for (int i = 0; i < aAddCounter.size(); ++i)
|
||||
aAddCounter[i]->setText(tr("&Add counter"));
|
||||
for (int i = 0; i < aRemoveCounter.size(); ++i)
|
||||
aRemoveCounter[i]->setText(tr("&Remove counter"));
|
||||
for (int i = 0; i < aSetCounter.size(); ++i)
|
||||
aSetCounter[i]->setText(tr("&Set counters..."));
|
||||
aMoveToTopLibrary->setText(tr("&top of library"));
|
||||
aMoveToBottomLibrary->setText(tr("&bottom of library"));
|
||||
aMoveToGraveyard->setText(tr("&graveyard"));
|
||||
|
@ -492,16 +515,16 @@ void Player::setCardAttrHelper(CardItem *card, const QString &aname, const QStri
|
|||
card->setAttacking(avalue == "1");
|
||||
else if (aname == "facedown")
|
||||
card->setFaceDown(avalue == "1");
|
||||
else if (aname == "counters") {
|
||||
int value = avalue.toInt();
|
||||
emit logSetCardCounters(this, card->getName(), value, card->getCounters());
|
||||
card->setCounters(value);
|
||||
} else if (aname == "annotation")
|
||||
else if (aname == "annotation") {
|
||||
emit logSetAnnotation(this, card->getName(), avalue);
|
||||
card->setAnnotation(avalue);
|
||||
else if (aname == "doesnt_untap") {
|
||||
} else if (aname == "doesnt_untap") {
|
||||
bool value = (avalue == "1");
|
||||
emit logSetDoesntUntap(this, card->getName(), value);
|
||||
card->setDoesntUntap(value);
|
||||
} else if (aname == "pt") {
|
||||
emit logSetPT(this, card->getName(), avalue);
|
||||
card->setPT(avalue);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -571,6 +594,21 @@ void Player::eventSetCardAttr(Event_SetCardAttr *event)
|
|||
}
|
||||
}
|
||||
|
||||
void Player::eventSetCardCounter(Event_SetCardCounter *event)
|
||||
{
|
||||
CardZone *zone = zones.value(event->getZone(), 0);
|
||||
if (!zone)
|
||||
return;
|
||||
|
||||
CardItem *card = zone->getCard(event->getCardId(), QString());
|
||||
if (!card)
|
||||
return;
|
||||
|
||||
int oldValue = card->getCounters().value(event->getCounterId(), 0);
|
||||
card->setCounter(event->getCounterId(), event->getCounterValue());
|
||||
emit logSetCardCounter(this, card->getName(), event->getCounterId(), event->getCounterValue(), oldValue);
|
||||
}
|
||||
|
||||
void Player::eventCreateCounters(Event_CreateCounters *event)
|
||||
{
|
||||
const QList<ServerInfo_Counter *> &eventCounterList = event->getCounterList();
|
||||
|
@ -696,6 +734,7 @@ void Player::processGameEvent(GameEvent *event, GameEventContext *context)
|
|||
case ItemId_Event_DeleteArrow: eventDeleteArrow(qobject_cast<Event_DeleteArrow *>(event)); break;
|
||||
case ItemId_Event_CreateToken: eventCreateToken(qobject_cast<Event_CreateToken *>(event)); break;
|
||||
case ItemId_Event_SetCardAttr: eventSetCardAttr(qobject_cast<Event_SetCardAttr *>(event)); break;
|
||||
case ItemId_Event_SetCardCounter: eventSetCardCounter(qobject_cast<Event_SetCardCounter *>(event)); break;
|
||||
case ItemId_Event_CreateCounters: eventCreateCounters(qobject_cast<Event_CreateCounters *>(event)); break;
|
||||
case ItemId_Event_SetCounter: eventSetCounter(qobject_cast<Event_SetCounter *>(event)); break;
|
||||
case ItemId_Event_DelCounter: eventDelCounter(qobject_cast<Event_DelCounter *>(event)); break;
|
||||
|
@ -944,35 +983,85 @@ void Player::actDoesntUntap(CardItem *card)
|
|||
sendGameCommand(new Command_SetCardAttr(-1, qgraphicsitem_cast<CardZone *>(card->parentItem())->getName(), card->getId(), "doesnt_untap", QString::number(!card->getDoesntUntap())));
|
||||
}
|
||||
|
||||
void Player::actSetPT()
|
||||
{
|
||||
QString oldPT;
|
||||
QListIterator<QGraphicsItem *> i(scene()->selectedItems());
|
||||
while (i.hasNext()) {
|
||||
CardItem *card = static_cast<CardItem *>(i.next());
|
||||
if (!card->getPT().isEmpty())
|
||||
oldPT = card->getPT();
|
||||
}
|
||||
bool ok;
|
||||
QString pt = QInputDialog::getText(0, tr("Set power/toughness"), tr("Please enter the new PT:"), QLineEdit::Normal, oldPT, &ok);
|
||||
if (!ok)
|
||||
return;
|
||||
|
||||
i.toFront();
|
||||
while (i.hasNext()) {
|
||||
CardItem *card = static_cast<CardItem *>(i.next());
|
||||
sendGameCommand(new Command_SetCardAttr(-1, qgraphicsitem_cast<CardZone *>(card->parentItem())->getName(), card->getId(), "pt", pt));
|
||||
}
|
||||
}
|
||||
|
||||
void Player::actSetAnnotation()
|
||||
{
|
||||
QString oldAnnotation;
|
||||
QListIterator<QGraphicsItem *> i(scene()->selectedItems());
|
||||
while (i.hasNext()) {
|
||||
CardItem *card = static_cast<CardItem *>(i.next());
|
||||
if (!card->getAnnotation().isEmpty())
|
||||
oldAnnotation = card->getAnnotation();
|
||||
}
|
||||
|
||||
bool ok;
|
||||
QString annotation = QInputDialog::getText(0, tr("Set annotation"), tr("Please enter the new annotation:"), QLineEdit::Normal, oldAnnotation, &ok);
|
||||
if (!ok)
|
||||
return;
|
||||
|
||||
i.toFront();
|
||||
while (i.hasNext()) {
|
||||
CardItem *card = static_cast<CardItem *>(i.next());
|
||||
sendGameCommand(new Command_SetCardAttr(-1, qgraphicsitem_cast<CardZone *>(card->parentItem())->getName(), card->getId(), "annotation", annotation));
|
||||
}
|
||||
}
|
||||
|
||||
void Player::actFlip(CardItem *card)
|
||||
{
|
||||
QString zone = qgraphicsitem_cast<CardZone *>(card->parentItem())->getName();
|
||||
sendGameCommand(new Command_MoveCard(-1, zone, card->getId(), zone, card->getGridPoint().x(), card->getGridPoint().y(), !card->getFaceDown()));
|
||||
}
|
||||
|
||||
void Player::actAddCounter(CardItem *card)
|
||||
void Player::actCardCounterTrigger(QAction *a)
|
||||
{
|
||||
if (card->getCounters() < MAX_COUNTERS_ON_CARD)
|
||||
sendGameCommand(new Command_SetCardAttr(-1, qgraphicsitem_cast<CardZone *>(card->parentItem())->getName(), card->getId(), "counters", QString::number(card->getCounters() + 1)));
|
||||
}
|
||||
|
||||
void Player::actRemoveCounter(CardItem *card)
|
||||
{
|
||||
if (card->getCounters())
|
||||
sendGameCommand(new Command_SetCardAttr(-1, qgraphicsitem_cast<CardZone *>(card->parentItem())->getName(), card->getId(), "counters", QString::number(card->getCounters() - 1)));
|
||||
}
|
||||
|
||||
void Player::actSetCounters()
|
||||
{
|
||||
bool ok;
|
||||
int number = QInputDialog::getInteger(0, tr("Set counters"), tr("Number:"), 0, 0, MAX_COUNTERS_ON_CARD, 1, &ok);
|
||||
if (!ok)
|
||||
return;
|
||||
|
||||
QListIterator<QGraphicsItem *> i(scene()->selectedItems());
|
||||
while (i.hasNext()) {
|
||||
CardItem *temp = (CardItem *) i.next();
|
||||
sendGameCommand(new Command_SetCardAttr(-1, qgraphicsitem_cast<CardZone *>(temp->parentItem())->getName(), temp->getId(), "counters", QString::number(number)));
|
||||
QMenu *menu = static_cast<QMenu *>(sender());
|
||||
int counterId = cardCounterMenus.indexOf(menu);
|
||||
|
||||
if (aAddCounter.contains(a)) {
|
||||
QListIterator<QGraphicsItem *> i(scene()->selectedItems());
|
||||
while (i.hasNext()) {
|
||||
CardItem *card = static_cast<CardItem *>(i.next());
|
||||
if (card->getCounters().value(counterId, 0) < MAX_COUNTERS_ON_CARD)
|
||||
sendGameCommand(new Command_SetCardCounter(-1, qgraphicsitem_cast<CardZone *>(card->parentItem())->getName(), card->getId(), counterId, card->getCounters().value(counterId, 0) + 1));
|
||||
}
|
||||
} else if (aRemoveCounter.contains(a)) {
|
||||
QListIterator<QGraphicsItem *> i(scene()->selectedItems());
|
||||
while (i.hasNext()) {
|
||||
CardItem *card = static_cast<CardItem *>(i.next());
|
||||
if (card->getCounters().value(counterId, 0))
|
||||
sendGameCommand(new Command_SetCardCounter(-1, qgraphicsitem_cast<CardZone *>(card->parentItem())->getName(), card->getId(), counterId, card->getCounters().value(counterId, 0) - 1));
|
||||
}
|
||||
} else if (aSetCounter.contains(a)) {
|
||||
bool ok;
|
||||
int number = QInputDialog::getInteger(0, tr("Set counters"), tr("Number:"), 0, 0, MAX_COUNTERS_ON_CARD, 1, &ok);
|
||||
if (!ok)
|
||||
return;
|
||||
|
||||
QListIterator<QGraphicsItem *> i(scene()->selectedItems());
|
||||
while (i.hasNext()) {
|
||||
CardItem *card = static_cast<CardItem *>(i.next());
|
||||
sendGameCommand(new Command_SetCardCounter(-1, qgraphicsitem_cast<CardZone *>(card->parentItem())->getName(), card->getId(), counterId, number));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ class Event_CreateArrows;
|
|||
class Event_DeleteArrow;
|
||||
class Event_CreateToken;
|
||||
class Event_SetCardAttr;
|
||||
class Event_SetCardCounter;
|
||||
class Event_CreateCounters;
|
||||
class Event_SetCounter;
|
||||
class Event_DelCounter;
|
||||
|
@ -51,10 +52,12 @@ signals:
|
|||
void logCreateToken(Player *player, QString cardName);
|
||||
void logDrawCards(Player *player, int number);
|
||||
void logMoveCard(Player *player, QString cardName, CardZone *startZone, int oldX, CardZone *targetZone, int newX);
|
||||
void logSetCardCounters(Player *player, QString cardName, int value, int oldValue);
|
||||
void logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue);
|
||||
void logSetTapped(Player *player, QString cardName, bool tapped);
|
||||
void logSetCounter(Player *player, QString counterName, int value, int oldValue);
|
||||
void logSetDoesntUntap(Player *player, QString cardName, bool doesntUntap);
|
||||
void logSetPT(Player *player, QString cardName, QString newPT);
|
||||
void logSetAnnotation(Player *player, QString cardName, QString newAnnotation);
|
||||
void logDumpZone(Player *player, CardZone *zone, int numberCards);
|
||||
void logStopDumpZone(Player *player, CardZone *zone);
|
||||
|
||||
|
@ -76,12 +79,17 @@ public slots:
|
|||
|
||||
void actSayMessage();
|
||||
private slots:
|
||||
void actSetPT();
|
||||
void actSetAnnotation();
|
||||
|
||||
void updateBgPixmap();
|
||||
void updateBoundingRect();
|
||||
void cardMenuAction();
|
||||
void actSetCounters();
|
||||
void actCardCounterTrigger(QAction *a);
|
||||
void rearrangeZones();
|
||||
private:
|
||||
QList<QMenu *> cardCounterMenus;
|
||||
QList<QAction *> aAddCounter, aSetCounter, aRemoveCounter;
|
||||
QMenu *playerMenu, *handMenu, *graveMenu, *rfgMenu, *libraryMenu, *sbMenu, *countersMenu, *sayMenu;
|
||||
QAction *aMoveHandToTopLibrary, *aMoveHandToBottomLibrary, *aMoveHandToGrave, *aMoveHandToRfg,
|
||||
*aMoveGraveToTopLibrary, *aMoveGraveToBottomLibrary, *aMoveGraveToHand, *aMoveGraveToRfg,
|
||||
|
@ -94,15 +102,13 @@ private:
|
|||
QHash<QAction *, CardMenuHandler> cardMenuHandlers;
|
||||
|
||||
QMenu *cardMenu, *moveMenu;
|
||||
QAction *aTap, *aUntap, *aDoesntUntap, *aFlip, *aAddCounter, *aRemoveCounter, *aSetCounters,
|
||||
QAction *aTap, *aUntap, *aDoesntUntap, *aSetPT, *aSetAnnotation, *aFlip,
|
||||
*aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToGraveyard, *aMoveToExile;
|
||||
|
||||
void actTap(CardItem *card);
|
||||
void actUntap(CardItem *card);
|
||||
void actDoesntUntap(CardItem *card);
|
||||
void actFlip(CardItem *card);
|
||||
void actAddCounter(CardItem *card);
|
||||
void actRemoveCounter(CardItem *card);
|
||||
void actMoveToTopLibrary(CardItem *card);
|
||||
void actMoveToBottomLibrary(CardItem *card);
|
||||
void actMoveToGraveyard(CardItem *card);
|
||||
|
@ -137,6 +143,7 @@ private:
|
|||
void eventDeleteArrow(Event_DeleteArrow *event);
|
||||
void eventCreateToken(Event_CreateToken *event);
|
||||
void eventSetCardAttr(Event_SetCardAttr *event);
|
||||
void eventSetCardCounter(Event_SetCardCounter *event);
|
||||
void eventCreateCounters(Event_CreateCounters *event);
|
||||
void eventSetCounter(Event_SetCounter *event);
|
||||
void eventDelCounter(Event_DelCounter *event);
|
||||
|
|
|
@ -132,7 +132,7 @@ WndDeckEditor::WndDeckEditor(QWidget *parent)
|
|||
aLoadDeckFromClipboard = new QAction(tr("Load deck from cl&ipboard..."), this);
|
||||
connect(aLoadDeckFromClipboard, SIGNAL(triggered()), this, SLOT(actLoadDeckFromClipboard()));
|
||||
aLoadDeckFromClipboard->setShortcuts(QKeySequence::Paste);
|
||||
aSaveDeckToClipboard = new QAction(tr("Save deck to cl&ipboard"), this);
|
||||
aSaveDeckToClipboard = new QAction(tr("Save deck to clip&board"), this);
|
||||
connect(aSaveDeckToClipboard, SIGNAL(triggered()), this, SLOT(actSaveDeckToClipboard()));
|
||||
aSaveDeckToClipboard->setShortcuts(QKeySequence::Copy);
|
||||
aPrintDeck = new QAction(tr("&Print deck..."), this);
|
||||
|
|
|
@ -1574,8 +1574,54 @@
|
|||
<source>%1 points from %2's %3 to %4's %5.</source>
|
||||
<translation>%1 zeigt von %2s %3 auf %4s %5.</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/messagelogwidget.cpp" line="227"/>
|
||||
<source>%1 places %n counter(s) (%2) on %3 (now %4).</source>
|
||||
<translation>
|
||||
<numerusform>%1 legt eine Marke (%2) auf %3 (jetzt %4).</numerusform>
|
||||
<numerusform>%1 legt %n Marken (%2) auf %3 (jetzt %4).</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/messagelogwidget.cpp" line="229"/>
|
||||
<source>%1 removes %n counter(s) (%2) from %3 (now %4).</source>
|
||||
<translation>
|
||||
<numerusform>%1 entfernt eine Marke (%2) von %3 (jetzt %4).</numerusform>
|
||||
<numerusform>%1 entfernt %n Marken (%2) von %3 (jetzt %4).</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="259"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="232"/>
|
||||
<source>red</source>
|
||||
<translation>rot</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="233"/>
|
||||
<source>yellow</source>
|
||||
<translation>gelb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="234"/>
|
||||
<source>green</source>
|
||||
<translation>grün</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="253"/>
|
||||
<source>%1 sets counter %2 to %3 (%4%5).</source>
|
||||
<translation>%1 setzt Zähler %2 auf %3 (%4%5).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="268"/>
|
||||
<source>%1 sets PT of %2 to %3.</source>
|
||||
<translation>%1 setzt Kampfwerte von %2 auf %3.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="273"/>
|
||||
<source>%1 sets annotation of %2 to %3.</source>
|
||||
<translation>%1 versieht %2 mit dem Hinweis %3.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="279"/>
|
||||
<source>%1 is looking at the top %2 cards %3.</source>
|
||||
<translation>%1 sieht sich die obersten %2 Karten %3 an.</translation>
|
||||
</message>
|
||||
|
@ -1665,41 +1711,38 @@
|
|||
<translation>%1 erstellt Token: %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="225"/>
|
||||
<source>%1 places %2 counters on %3 (now %4).</source>
|
||||
<translation>%1 legt %2 Zählmarken auf %3 (jetzt %4).</translation>
|
||||
<translation type="obsolete">%1 legt %2 Zählmarken auf %3 (jetzt %4).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="227"/>
|
||||
<source>%1 removes %2 counters from %3 (now %4).</source>
|
||||
<translation>%1 entfernt %2 Zählmarken von %3 (jetzt %4).</translation>
|
||||
<translation type="obsolete">%1 entfernt %2 Zählmarken von %3 (jetzt %4).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="238"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="248"/>
|
||||
<source>%1 %2 %3.</source>
|
||||
<translation>%1 %2 %3.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="243"/>
|
||||
<source>%1 sets counter "%2" to %3 (%4%5).</source>
|
||||
<translation>%1 setzt Zählmarke "%2" auf %3 (%4%5).</translation>
|
||||
<translation type="obsolete">%1 setzt Zählmarke "%2" auf %3 (%4%5).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 is looking at the top %2 cards of %3.</source>
|
||||
<translation type="obsolete">%1 sieht sich die obersten %2 Karten %3 an.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="261"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="281"/>
|
||||
<source>%1 is looking at %2.</source>
|
||||
<translation>%1 sieht sich %2 an.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="267"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="287"/>
|
||||
<source>%1 stops looking at %2.</source>
|
||||
<translation>%1 sieht sich %2 nicht mehr an.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="291"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="311"/>
|
||||
<source>ending phase</source>
|
||||
<translation>die Zugendphase</translation>
|
||||
</message>
|
||||
|
@ -1728,57 +1771,57 @@
|
|||
<translation type="obsolete">%1 sieht sich %2s %3 nicht mehr an</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="273"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="293"/>
|
||||
<source>It is now %1's turn.</source>
|
||||
<translation>%1 ist am Zug.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="281"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="301"/>
|
||||
<source>untap step</source>
|
||||
<translation>das Enttappsegment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="282"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="302"/>
|
||||
<source>upkeep step</source>
|
||||
<translation>das Versorgungssegment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="283"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="303"/>
|
||||
<source>draw step</source>
|
||||
<translation>das Ziehsegment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="284"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="304"/>
|
||||
<source>first main phase</source>
|
||||
<translation>die erste Hauptphase</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="285"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="305"/>
|
||||
<source>beginning of combat step</source>
|
||||
<translation>das Anfangssegment der Kampfphase</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="286"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="306"/>
|
||||
<source>declare attackers step</source>
|
||||
<translation>das Angreifer-Deklarieren-Segment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="287"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="307"/>
|
||||
<source>declare blockers step</source>
|
||||
<translation>das Blocker-Deklarieren-Segment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="288"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="308"/>
|
||||
<source>combat damage step</source>
|
||||
<translation>das Kampfschadenssegment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="289"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="309"/>
|
||||
<source>end of combat step</source>
|
||||
<translation>das Endsegment der Kampfphase</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="290"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="310"/>
|
||||
<source>second main phase</source>
|
||||
<translation>die zweite Hauptphase</translation>
|
||||
</message>
|
||||
|
@ -1787,7 +1830,7 @@
|
|||
<translation type="obsolete">das Ende-des-Zuges-Segment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="293"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="313"/>
|
||||
<source>It is now the %1.</source>
|
||||
<translation>Es ist nun %1.</translation>
|
||||
</message>
|
||||
|
@ -1796,12 +1839,12 @@
|
|||
<translation type="obsolete">%1 bewegt %2 %3 nach %4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="238"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="248"/>
|
||||
<source>taps</source>
|
||||
<translation>tappt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="238"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="248"/>
|
||||
<source>untaps</source>
|
||||
<translation>enttappt</translation>
|
||||
</message>
|
||||
|
@ -1826,7 +1869,7 @@
|
|||
<translation type="obsolete">%1 entfernt %2 Zählmarken von %3 (jetzt %4)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="235"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="245"/>
|
||||
<source>his permanents</source>
|
||||
<translation>seine bleibenden Karten</translation>
|
||||
</message>
|
||||
|
@ -1839,12 +1882,12 @@
|
|||
<translation type="obsolete">%1 setzt Zähler "%2" auf %3 (%4%5)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="250"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="260"/>
|
||||
<source>%1 sets %2 to not untap normally.</source>
|
||||
<translation>%1 setzt %2 auf explizites Enttappen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="252"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="262"/>
|
||||
<source>%1 sets %2 to untap normally.</source>
|
||||
<translation>%1 setzt %2 auf normales Enttappen.</translation>
|
||||
</message>
|
||||
|
@ -1949,41 +1992,41 @@
|
|||
<context>
|
||||
<name>Player</name>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="326"/>
|
||||
<location filename="../src/player.cpp" line="330"/>
|
||||
<location filename="../src/player.cpp" line="334"/>
|
||||
<location filename="../src/player.cpp" line="341"/>
|
||||
<location filename="../src/player.cpp" line="345"/>
|
||||
<location filename="../src/player.cpp" line="349"/>
|
||||
<source>Move to &top of library</source>
|
||||
<translation>Oben auf die Biblio&thek legen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="327"/>
|
||||
<location filename="../src/player.cpp" line="331"/>
|
||||
<location filename="../src/player.cpp" line="335"/>
|
||||
<location filename="../src/player.cpp" line="342"/>
|
||||
<location filename="../src/player.cpp" line="346"/>
|
||||
<location filename="../src/player.cpp" line="350"/>
|
||||
<source>Move to &bottom of library</source>
|
||||
<translation>Unter die &Bibliothek legen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="338"/>
|
||||
<location filename="../src/player.cpp" line="353"/>
|
||||
<source>&View library</source>
|
||||
<translation>&Zeige Bibliothek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="339"/>
|
||||
<location filename="../src/player.cpp" line="354"/>
|
||||
<source>F3</source>
|
||||
<translation>F3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="340"/>
|
||||
<location filename="../src/player.cpp" line="355"/>
|
||||
<source>View &top cards of library...</source>
|
||||
<translation>Zeige die oberen Kar&ten der Bibliothek...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="319"/>
|
||||
<location filename="../src/player.cpp" line="334"/>
|
||||
<source>&View graveyard</source>
|
||||
<translation>&Zeige Friedhof</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="342"/>
|
||||
<location filename="../src/player.cpp" line="357"/>
|
||||
<source>F4</source>
|
||||
<translation>F4</translation>
|
||||
</message>
|
||||
|
@ -1992,32 +2035,32 @@
|
|||
<translation type="obsolete">Zeige ent&fernte Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="343"/>
|
||||
<location filename="../src/player.cpp" line="358"/>
|
||||
<source>&View sideboard</source>
|
||||
<translation>Zeige &Sideboard</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="321"/>
|
||||
<location filename="../src/player.cpp" line="336"/>
|
||||
<source>Player "%1"</source>
|
||||
<translation>Spieler "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="348"/>
|
||||
<location filename="../src/player.cpp" line="363"/>
|
||||
<source>Take &mulligan</source>
|
||||
<translation>&Mulligan nehmen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="353"/>
|
||||
<location filename="../src/player.cpp" line="368"/>
|
||||
<source>&Hand</source>
|
||||
<translation>&Hand</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="355"/>
|
||||
<location filename="../src/player.cpp" line="370"/>
|
||||
<source>&Library</source>
|
||||
<translation>Bib&liothek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="322"/>
|
||||
<location filename="../src/player.cpp" line="337"/>
|
||||
<source>&Graveyard</source>
|
||||
<translation>&Friedhof</translation>
|
||||
</message>
|
||||
|
@ -2026,70 +2069,80 @@
|
|||
<translation type="obsolete">Entfe&rnte Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="354"/>
|
||||
<location filename="../src/player.cpp" line="369"/>
|
||||
<source>&Sideboard</source>
|
||||
<translation>&Sideboard</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="412"/>
|
||||
<location filename="../src/player.cpp" line="389"/>
|
||||
<source>Set &P/T...</source>
|
||||
<translation>&Kampfwerte setzen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="390"/>
|
||||
<source>&Set annotation...</source>
|
||||
<translation>&Hinweis setzen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="435"/>
|
||||
<source>View top cards of library</source>
|
||||
<translation>Zeige die obersten Karten der Bibliothek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="412"/>
|
||||
<location filename="../src/player.cpp" line="435"/>
|
||||
<source>Number of cards:</source>
|
||||
<translation>Anzahl der Karten:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="344"/>
|
||||
<location filename="../src/player.cpp" line="359"/>
|
||||
<source>&Draw card</source>
|
||||
<translation>Karte &ziehen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="320"/>
|
||||
<location filename="../src/player.cpp" line="335"/>
|
||||
<source>&View exile</source>
|
||||
<translation>&Zeige Exil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="323"/>
|
||||
<location filename="../src/player.cpp" line="338"/>
|
||||
<source>&Exile</source>
|
||||
<translation>&Exil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="332"/>
|
||||
<location filename="../src/player.cpp" line="336"/>
|
||||
<location filename="../src/player.cpp" line="347"/>
|
||||
<location filename="../src/player.cpp" line="351"/>
|
||||
<source>Move to &hand</source>
|
||||
<translation>auf die &Hand nehmen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="328"/>
|
||||
<location filename="../src/player.cpp" line="337"/>
|
||||
<location filename="../src/player.cpp" line="343"/>
|
||||
<location filename="../src/player.cpp" line="352"/>
|
||||
<source>Move to g&raveyard</source>
|
||||
<translation>auf den &Friedhof legen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="329"/>
|
||||
<location filename="../src/player.cpp" line="333"/>
|
||||
<location filename="../src/player.cpp" line="344"/>
|
||||
<location filename="../src/player.cpp" line="348"/>
|
||||
<source>Move to &exile</source>
|
||||
<translation>ins &Exil schicken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="341"/>
|
||||
<location filename="../src/player.cpp" line="356"/>
|
||||
<source>Ctrl+W</source>
|
||||
<translation>Ctrl+W</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="345"/>
|
||||
<location filename="../src/player.cpp" line="360"/>
|
||||
<source>Ctrl+D</source>
|
||||
<translation>Ctrl+D</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="346"/>
|
||||
<location filename="../src/player.cpp" line="361"/>
|
||||
<source>D&raw cards...</source>
|
||||
<translation>Ka&rten ziehen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="347"/>
|
||||
<location filename="../src/player.cpp" line="362"/>
|
||||
<source>Ctrl+E</source>
|
||||
<translation>Ctrl+E</translation>
|
||||
</message>
|
||||
|
@ -2098,32 +2151,32 @@
|
|||
<translation type="obsolete">&Mulligan nehmen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="349"/>
|
||||
<location filename="../src/player.cpp" line="364"/>
|
||||
<source>Ctrl+M</source>
|
||||
<translation>Ctrl+M</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="350"/>
|
||||
<location filename="../src/player.cpp" line="365"/>
|
||||
<source>&Shuffle</source>
|
||||
<translation>Mi&schen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="351"/>
|
||||
<location filename="../src/player.cpp" line="366"/>
|
||||
<source>Ctrl+S</source>
|
||||
<translation>Ctrl+S</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="356"/>
|
||||
<location filename="../src/player.cpp" line="371"/>
|
||||
<source>&Counters</source>
|
||||
<translation>&Zähler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="358"/>
|
||||
<location filename="../src/player.cpp" line="373"/>
|
||||
<source>&Untap all permanents</source>
|
||||
<translation>&Enttappe alle bleibenden Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="359"/>
|
||||
<location filename="../src/player.cpp" line="374"/>
|
||||
<source>Ctrl+U</source>
|
||||
<translation>Ctrl+U</translation>
|
||||
</message>
|
||||
|
@ -2152,97 +2205,112 @@
|
|||
<translation type="obsolete">Ctrl+L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="360"/>
|
||||
<location filename="../src/player.cpp" line="375"/>
|
||||
<source>R&oll die...</source>
|
||||
<translation>&Würfeln...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="361"/>
|
||||
<location filename="../src/player.cpp" line="376"/>
|
||||
<source>Ctrl+I</source>
|
||||
<translation>Ctrl+I</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="362"/>
|
||||
<location filename="../src/player.cpp" line="377"/>
|
||||
<source>&Create token...</source>
|
||||
<translation>&Token erstellen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="363"/>
|
||||
<location filename="../src/player.cpp" line="378"/>
|
||||
<source>Ctrl+T</source>
|
||||
<translation>Ctrl+T</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="364"/>
|
||||
<location filename="../src/player.cpp" line="379"/>
|
||||
<source>S&ay</source>
|
||||
<translation>&Sagen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="370"/>
|
||||
<location filename="../src/player.cpp" line="385"/>
|
||||
<source>C&ard</source>
|
||||
<translation>&Karte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="371"/>
|
||||
<location filename="../src/player.cpp" line="386"/>
|
||||
<source>&Tap</source>
|
||||
<translation>&Tappen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="372"/>
|
||||
<location filename="../src/player.cpp" line="387"/>
|
||||
<source>&Untap</source>
|
||||
<translation>E&nttappen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="373"/>
|
||||
<location filename="../src/player.cpp" line="388"/>
|
||||
<source>Toggle &normal untapping</source>
|
||||
<translation>&Normales Enttappen umschalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="374"/>
|
||||
<location filename="../src/player.cpp" line="391"/>
|
||||
<source>&Flip</source>
|
||||
<translation>&Umdrehen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="375"/>
|
||||
<location filename="../src/player.cpp" line="392"/>
|
||||
<source>Counters (red)</source>
|
||||
<translation>Marken (rot)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="393"/>
|
||||
<source>Counters (yellow)</source>
|
||||
<translation>Marken (gelb)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="394"/>
|
||||
<source>Counters (green)</source>
|
||||
<translation>Marken (grün)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="396"/>
|
||||
<source>&Add counter</source>
|
||||
<translation>Zählm&arke hinzufügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="376"/>
|
||||
<location filename="../src/player.cpp" line="398"/>
|
||||
<source>&Remove counter</source>
|
||||
<translation>Zählma&rke entfernen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="377"/>
|
||||
<location filename="../src/player.cpp" line="400"/>
|
||||
<source>&Set counters...</source>
|
||||
<translation>&Setze Zählmarken...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="378"/>
|
||||
<location filename="../src/player.cpp" line="401"/>
|
||||
<source>&top of library</source>
|
||||
<translation>&auf die Bibliothek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="379"/>
|
||||
<location filename="../src/player.cpp" line="402"/>
|
||||
<source>&bottom of library</source>
|
||||
<translation>&unter die Bibliothek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="380"/>
|
||||
<location filename="../src/player.cpp" line="403"/>
|
||||
<source>&graveyard</source>
|
||||
<translation>in den &Friedhof</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="381"/>
|
||||
<location filename="../src/player.cpp" line="404"/>
|
||||
<source>Ctrl+Del</source>
|
||||
<translation>Ctrl+Del</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="382"/>
|
||||
<location filename="../src/player.cpp" line="405"/>
|
||||
<source>&exile</source>
|
||||
<translation>ins &Exil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="384"/>
|
||||
<location filename="../src/player.cpp" line="407"/>
|
||||
<source>&Move to</source>
|
||||
<translation>&Verschieben</translation>
|
||||
</message>
|
||||
|
@ -2271,18 +2339,38 @@
|
|||
<translation type="obsolete">F10</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="451"/>
|
||||
<location filename="../src/player.cpp" line="474"/>
|
||||
<source>Draw cards</source>
|
||||
<translation>Karten ziehen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="451"/>
|
||||
<location filename="../src/player.cpp" line="968"/>
|
||||
<location filename="../src/player.cpp" line="474"/>
|
||||
<location filename="../src/player.cpp" line="1056"/>
|
||||
<source>Number:</source>
|
||||
<translation>Anzahl:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="968"/>
|
||||
<location filename="../src/player.cpp" line="996"/>
|
||||
<source>Set power/toughness</source>
|
||||
<translation>Kampfwerte setzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="996"/>
|
||||
<source>Please enter the new PT:</source>
|
||||
<translation>Bitte die neuen Kampfwerte eingeben:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="1018"/>
|
||||
<source>Set annotation</source>
|
||||
<translation>Hinweis setzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="1018"/>
|
||||
<source>Please enter the new annotation:</source>
|
||||
<translation>Bitte den Hinweis eingeben:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="1056"/>
|
||||
<source>Set counters</source>
|
||||
<translation>Setze Zählmarken</translation>
|
||||
</message>
|
||||
|
@ -2295,22 +2383,22 @@
|
|||
<translation type="obsolete">Neue Lebenspunkte insgesamt:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="464"/>
|
||||
<location filename="../src/player.cpp" line="487"/>
|
||||
<source>Roll die</source>
|
||||
<translation>Würfeln</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="464"/>
|
||||
<location filename="../src/player.cpp" line="487"/>
|
||||
<source>Number of sides:</source>
|
||||
<translation>Anzahl der Seiten:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="471"/>
|
||||
<location filename="../src/player.cpp" line="494"/>
|
||||
<source>Create token</source>
|
||||
<translation>Token erstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="471"/>
|
||||
<location filename="../src/player.cpp" line="494"/>
|
||||
<source>Name:</source>
|
||||
<translation>Name:</translation>
|
||||
</message>
|
||||
|
@ -2623,7 +2711,7 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
<translation>Sind Sie sicher, dass Sie das Spiel verlassen möchten?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_game.cpp" line="491"/>
|
||||
<location filename="../src/tab_game.cpp" line="493"/>
|
||||
<source>Load deck</source>
|
||||
<translation>Deck laden</translation>
|
||||
</message>
|
||||
|
@ -2702,7 +2790,7 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
<translation>Deck &laden...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="128"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="126"/>
|
||||
<source>&Save deck</source>
|
||||
<translation>Deck &speichern</translation>
|
||||
</message>
|
||||
|
@ -2711,32 +2799,37 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
<translation type="obsolete">Deck &speichern unter...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="131"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="129"/>
|
||||
<source>Save deck &as...</source>
|
||||
<translation>Deck s&peichern unter...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="134"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="135"/>
|
||||
<source>Save deck to clip&board</source>
|
||||
<translation>Deck in Z&wischenablage speichern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="138"/>
|
||||
<source>&Print deck...</source>
|
||||
<translation>Deck &drucken...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="137"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="141"/>
|
||||
<source>&Close</source>
|
||||
<translation>S&chließen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="138"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="142"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="141"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="145"/>
|
||||
<source>&Edit sets...</source>
|
||||
<translation>&Editionen bearbeiten...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="144"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="148"/>
|
||||
<source>&Deck</source>
|
||||
<translation>&Deck</translation>
|
||||
</message>
|
||||
|
@ -2745,27 +2838,27 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
<translation type="obsolete">&Editionen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="161"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="167"/>
|
||||
<source>Add card to &maindeck</source>
|
||||
<translation>Karte zu&m Hauptdeck hinzufügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="162"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="168"/>
|
||||
<source>Return</source>
|
||||
<translation>Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="162"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="168"/>
|
||||
<source>Enter</source>
|
||||
<translation>Enter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="167"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="173"/>
|
||||
<source>Ctrl+Return</source>
|
||||
<translation>Ctrl+Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="167"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="173"/>
|
||||
<source>Ctrl+Enter</source>
|
||||
<translation>Ctrl+Enter</translation>
|
||||
</message>
|
||||
|
@ -2774,7 +2867,7 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
<translation type="obsolete">Ctrl+M</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="165"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="171"/>
|
||||
<source>Add card to &sideboard</source>
|
||||
<translation>Karte zum &Sideboard hinzufügen</translation>
|
||||
</message>
|
||||
|
@ -2793,64 +2886,64 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
<translation>Suche a&ufheben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="126"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="132"/>
|
||||
<source>Load deck from cl&ipboard...</source>
|
||||
<translation>Deck aus &Zwischenablage laden...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="155"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="161"/>
|
||||
<source>&Card database</source>
|
||||
<translation>&Kartendatenbank</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="169"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="175"/>
|
||||
<source>&Remove row</source>
|
||||
<translation>Zeile entfe&rnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="170"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="176"/>
|
||||
<source>Del</source>
|
||||
<translation>Entf</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="173"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="179"/>
|
||||
<source>&Increment number</source>
|
||||
<translation>Anzahl er&höhen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="174"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="180"/>
|
||||
<source>+</source>
|
||||
<translation>+</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="177"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="183"/>
|
||||
<source>&Decrement number</source>
|
||||
<translation>Anzahl v&erringern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="179"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="185"/>
|
||||
<source>-</source>
|
||||
<translation>-</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="230"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="236"/>
|
||||
<source>Are you sure?</source>
|
||||
<translation>Bist du sicher?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="231"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="237"/>
|
||||
<source>The decklist has been modified.
|
||||
Do you want to save the changes?</source>
|
||||
<translation>Die Deckliste wurde verändert.
|
||||
Willst du die Änderungen speichern?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="266"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="272"/>
|
||||
<source>Load deck</source>
|
||||
<translation>Deck laden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="308"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="301"/>
|
||||
<source>Save deck</source>
|
||||
<translation>Deck speichern</translation>
|
||||
</message>
|
||||
|
|
|
@ -984,8 +984,54 @@
|
|||
<source>%1 points from %2's %3 to %4's %5.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/messagelogwidget.cpp" line="227"/>
|
||||
<source>%1 places %n counter(s) (%2) on %3 (now %4).</source>
|
||||
<translation>
|
||||
<numerusform>%1 places a counter (%2) on %3 (now %4).</numerusform>
|
||||
<numerusform>%1 places %n counters (%2) on %3 (now %4).</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/messagelogwidget.cpp" line="229"/>
|
||||
<source>%1 removes %n counter(s) (%2) from %3 (now %4).</source>
|
||||
<translation>
|
||||
<numerusform>%1 removes a counter (%2) from %3 (now %4).</numerusform>
|
||||
<numerusform>%1 removes %n counters (%2) from %3 (now %4).</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="259"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="232"/>
|
||||
<source>red</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="233"/>
|
||||
<source>yellow</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="234"/>
|
||||
<source>green</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="253"/>
|
||||
<source>%1 sets counter %2 to %3 (%4%5).</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="268"/>
|
||||
<source>%1 sets PT of %2 to %3.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="273"/>
|
||||
<source>%1 sets annotation of %2 to %3.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="279"/>
|
||||
<source>%1 is looking at the top %2 cards %3.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1055,42 +1101,27 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="225"/>
|
||||
<source>%1 places %2 counters on %3 (now %4).</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="227"/>
|
||||
<source>%1 removes %2 counters from %3 (now %4).</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="238"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="248"/>
|
||||
<source>%1 %2 %3.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="243"/>
|
||||
<source>%1 sets counter "%2" to %3 (%4%5).</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="261"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="281"/>
|
||||
<source>%1 is looking at %2.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="267"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="287"/>
|
||||
<source>%1 stops looking at %2.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="291"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="311"/>
|
||||
<source>ending phase</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="273"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="293"/>
|
||||
<source>It is now %1's turn.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1100,82 +1131,82 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="281"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="301"/>
|
||||
<source>untap step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="282"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="302"/>
|
||||
<source>upkeep step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="283"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="303"/>
|
||||
<source>draw step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="284"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="304"/>
|
||||
<source>first main phase</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="285"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="305"/>
|
||||
<source>beginning of combat step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="286"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="306"/>
|
||||
<source>declare attackers step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="287"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="307"/>
|
||||
<source>declare blockers step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="288"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="308"/>
|
||||
<source>combat damage step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="289"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="309"/>
|
||||
<source>end of combat step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="290"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="310"/>
|
||||
<source>second main phase</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="293"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="313"/>
|
||||
<source>It is now the %1.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="238"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="248"/>
|
||||
<source>taps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="238"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="248"/>
|
||||
<source>untaps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="250"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="260"/>
|
||||
<source>%1 sets %2 to not untap normally.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="252"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="262"/>
|
||||
<source>%1 sets %2 to untap normally.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="235"/>
|
||||
<location filename="../src/messagelogwidget.cpp" line="245"/>
|
||||
<source>his permanents</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1264,300 +1295,345 @@
|
|||
<context>
|
||||
<name>Player</name>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="326"/>
|
||||
<location filename="../src/player.cpp" line="330"/>
|
||||
<location filename="../src/player.cpp" line="334"/>
|
||||
<location filename="../src/player.cpp" line="341"/>
|
||||
<location filename="../src/player.cpp" line="345"/>
|
||||
<location filename="../src/player.cpp" line="349"/>
|
||||
<source>Move to &top of library</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="327"/>
|
||||
<location filename="../src/player.cpp" line="331"/>
|
||||
<location filename="../src/player.cpp" line="335"/>
|
||||
<location filename="../src/player.cpp" line="342"/>
|
||||
<location filename="../src/player.cpp" line="346"/>
|
||||
<location filename="../src/player.cpp" line="350"/>
|
||||
<source>Move to &bottom of library</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="338"/>
|
||||
<location filename="../src/player.cpp" line="353"/>
|
||||
<source>&View library</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="339"/>
|
||||
<location filename="../src/player.cpp" line="354"/>
|
||||
<source>F3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="340"/>
|
||||
<location filename="../src/player.cpp" line="355"/>
|
||||
<source>View &top cards of library...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="319"/>
|
||||
<location filename="../src/player.cpp" line="334"/>
|
||||
<source>&View graveyard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="342"/>
|
||||
<location filename="../src/player.cpp" line="357"/>
|
||||
<source>F4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="343"/>
|
||||
<location filename="../src/player.cpp" line="358"/>
|
||||
<source>&View sideboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="321"/>
|
||||
<location filename="../src/player.cpp" line="336"/>
|
||||
<source>Player "%1"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="353"/>
|
||||
<location filename="../src/player.cpp" line="368"/>
|
||||
<source>&Hand</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="355"/>
|
||||
<location filename="../src/player.cpp" line="370"/>
|
||||
<source>&Library</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="322"/>
|
||||
<location filename="../src/player.cpp" line="337"/>
|
||||
<source>&Graveyard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="354"/>
|
||||
<location filename="../src/player.cpp" line="369"/>
|
||||
<source>&Sideboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="412"/>
|
||||
<location filename="../src/player.cpp" line="389"/>
|
||||
<source>Set &P/T...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="390"/>
|
||||
<source>&Set annotation...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="435"/>
|
||||
<source>View top cards of library</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="412"/>
|
||||
<location filename="../src/player.cpp" line="435"/>
|
||||
<source>Number of cards:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="344"/>
|
||||
<location filename="../src/player.cpp" line="359"/>
|
||||
<source>&Draw card</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="320"/>
|
||||
<location filename="../src/player.cpp" line="335"/>
|
||||
<source>&View exile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="323"/>
|
||||
<location filename="../src/player.cpp" line="338"/>
|
||||
<source>&Exile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="332"/>
|
||||
<location filename="../src/player.cpp" line="336"/>
|
||||
<location filename="../src/player.cpp" line="347"/>
|
||||
<location filename="../src/player.cpp" line="351"/>
|
||||
<source>Move to &hand</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="328"/>
|
||||
<location filename="../src/player.cpp" line="337"/>
|
||||
<location filename="../src/player.cpp" line="343"/>
|
||||
<location filename="../src/player.cpp" line="352"/>
|
||||
<source>Move to g&raveyard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="329"/>
|
||||
<location filename="../src/player.cpp" line="333"/>
|
||||
<location filename="../src/player.cpp" line="344"/>
|
||||
<location filename="../src/player.cpp" line="348"/>
|
||||
<source>Move to &exile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="341"/>
|
||||
<location filename="../src/player.cpp" line="356"/>
|
||||
<source>Ctrl+W</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="345"/>
|
||||
<location filename="../src/player.cpp" line="360"/>
|
||||
<source>Ctrl+D</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="346"/>
|
||||
<location filename="../src/player.cpp" line="361"/>
|
||||
<source>D&raw cards...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="347"/>
|
||||
<location filename="../src/player.cpp" line="362"/>
|
||||
<source>Ctrl+E</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="348"/>
|
||||
<location filename="../src/player.cpp" line="363"/>
|
||||
<source>Take &mulligan</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="349"/>
|
||||
<location filename="../src/player.cpp" line="364"/>
|
||||
<source>Ctrl+M</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="350"/>
|
||||
<location filename="../src/player.cpp" line="365"/>
|
||||
<source>&Shuffle</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="351"/>
|
||||
<location filename="../src/player.cpp" line="366"/>
|
||||
<source>Ctrl+S</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="356"/>
|
||||
<location filename="../src/player.cpp" line="371"/>
|
||||
<source>&Counters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="358"/>
|
||||
<location filename="../src/player.cpp" line="373"/>
|
||||
<source>&Untap all permanents</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="359"/>
|
||||
<location filename="../src/player.cpp" line="374"/>
|
||||
<source>Ctrl+U</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="360"/>
|
||||
<location filename="../src/player.cpp" line="375"/>
|
||||
<source>R&oll die...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="361"/>
|
||||
<location filename="../src/player.cpp" line="376"/>
|
||||
<source>Ctrl+I</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="362"/>
|
||||
<location filename="../src/player.cpp" line="377"/>
|
||||
<source>&Create token...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="363"/>
|
||||
<location filename="../src/player.cpp" line="378"/>
|
||||
<source>Ctrl+T</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="364"/>
|
||||
<location filename="../src/player.cpp" line="379"/>
|
||||
<source>S&ay</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="370"/>
|
||||
<location filename="../src/player.cpp" line="385"/>
|
||||
<source>C&ard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="371"/>
|
||||
<location filename="../src/player.cpp" line="386"/>
|
||||
<source>&Tap</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="372"/>
|
||||
<location filename="../src/player.cpp" line="387"/>
|
||||
<source>&Untap</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="373"/>
|
||||
<location filename="../src/player.cpp" line="388"/>
|
||||
<source>Toggle &normal untapping</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="374"/>
|
||||
<location filename="../src/player.cpp" line="391"/>
|
||||
<source>&Flip</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="375"/>
|
||||
<location filename="../src/player.cpp" line="392"/>
|
||||
<source>Counters (red)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="393"/>
|
||||
<source>Counters (yellow)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="394"/>
|
||||
<source>Counters (green)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="396"/>
|
||||
<source>&Add counter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="376"/>
|
||||
<location filename="../src/player.cpp" line="398"/>
|
||||
<source>&Remove counter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="377"/>
|
||||
<location filename="../src/player.cpp" line="400"/>
|
||||
<source>&Set counters...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="378"/>
|
||||
<location filename="../src/player.cpp" line="401"/>
|
||||
<source>&top of library</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="379"/>
|
||||
<location filename="../src/player.cpp" line="402"/>
|
||||
<source>&bottom of library</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="380"/>
|
||||
<location filename="../src/player.cpp" line="403"/>
|
||||
<source>&graveyard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="381"/>
|
||||
<location filename="../src/player.cpp" line="404"/>
|
||||
<source>Ctrl+Del</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="382"/>
|
||||
<location filename="../src/player.cpp" line="405"/>
|
||||
<source>&exile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="384"/>
|
||||
<location filename="../src/player.cpp" line="407"/>
|
||||
<source>&Move to</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="451"/>
|
||||
<location filename="../src/player.cpp" line="474"/>
|
||||
<source>Draw cards</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="451"/>
|
||||
<location filename="../src/player.cpp" line="968"/>
|
||||
<location filename="../src/player.cpp" line="474"/>
|
||||
<location filename="../src/player.cpp" line="1056"/>
|
||||
<source>Number:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="464"/>
|
||||
<location filename="../src/player.cpp" line="487"/>
|
||||
<source>Roll die</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="464"/>
|
||||
<location filename="../src/player.cpp" line="487"/>
|
||||
<source>Number of sides:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="471"/>
|
||||
<location filename="../src/player.cpp" line="494"/>
|
||||
<source>Create token</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="471"/>
|
||||
<location filename="../src/player.cpp" line="494"/>
|
||||
<source>Name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="968"/>
|
||||
<location filename="../src/player.cpp" line="996"/>
|
||||
<source>Set power/toughness</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="996"/>
|
||||
<source>Please enter the new PT:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="1018"/>
|
||||
<source>Set annotation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="1018"/>
|
||||
<source>Please enter the new annotation:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="1056"/>
|
||||
<source>Set counters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1845,7 +1921,7 @@ Please enter a name:</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_game.cpp" line="491"/>
|
||||
<location filename="../src/tab_game.cpp" line="493"/>
|
||||
<source>Load deck</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1909,82 +1985,87 @@ Please enter a name:</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="126"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="132"/>
|
||||
<source>Load deck from cl&ipboard...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="128"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="126"/>
|
||||
<source>&Save deck</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="131"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="129"/>
|
||||
<source>Save deck &as...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="134"/>
|
||||
<source>&Print deck...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="137"/>
|
||||
<source>&Close</source>
|
||||
<location filename="../src/window_deckeditor.cpp" line="135"/>
|
||||
<source>Save deck to clip&board</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="138"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<source>&Print deck...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="141"/>
|
||||
<source>&Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="142"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="145"/>
|
||||
<source>&Edit sets...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="144"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="148"/>
|
||||
<source>&Deck</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="266"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="272"/>
|
||||
<source>Load deck</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="308"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="301"/>
|
||||
<source>Save deck</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="161"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="167"/>
|
||||
<source>Add card to &maindeck</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="162"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="168"/>
|
||||
<source>Return</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="162"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="168"/>
|
||||
<source>Enter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="167"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="173"/>
|
||||
<source>Ctrl+Return</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="167"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="173"/>
|
||||
<source>Ctrl+Enter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="165"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="171"/>
|
||||
<source>Add card to &sideboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1999,47 +2080,47 @@ Please enter a name:</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="155"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="161"/>
|
||||
<source>&Card database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="169"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="175"/>
|
||||
<source>&Remove row</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="170"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="176"/>
|
||||
<source>Del</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="173"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="179"/>
|
||||
<source>&Increment number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="174"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="180"/>
|
||||
<source>+</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="177"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="183"/>
|
||||
<source>&Decrement number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="179"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="185"/>
|
||||
<source>-</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="230"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="236"/>
|
||||
<source>Are you sure?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_deckeditor.cpp" line="231"/>
|
||||
<location filename="../src/window_deckeditor.cpp" line="237"/>
|
||||
<source>The decklist has been modified.
|
||||
Do you want to save the changes?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
@ -18,6 +18,7 @@ void ProtocolItem::initializeHash()
|
|||
registerSerializableItem("chat_channel", ServerInfo_ChatChannel::newItem);
|
||||
registerSerializableItem("chat_user", ServerInfo_ChatUser::newItem);
|
||||
registerSerializableItem("game", ServerInfo_Game::newItem);
|
||||
registerSerializableItem("card_counter", ServerInfo_CardCounter::newItem);
|
||||
registerSerializableItem("card", ServerInfo_Card::newItem);
|
||||
registerSerializableItem("zone", ServerInfo_Zone::newItem);
|
||||
registerSerializableItem("counter", ServerInfo_Counter::newItem);
|
||||
|
|
|
@ -32,17 +32,27 @@ ServerInfo_Game::ServerInfo_Game(int _gameId, const QString &_description, bool
|
|||
insertItem(new SerializableItem_Int("spectator_count", _spectatorCount));
|
||||
}
|
||||
|
||||
ServerInfo_Card::ServerInfo_Card(int _id, const QString &_name, int _x, int _y, int _counters, bool _tapped, bool _attacking, const QString &_annotation)
|
||||
ServerInfo_CardCounter::ServerInfo_CardCounter(int _id, int _value)
|
||||
: SerializableItem_Map("card_counter")
|
||||
{
|
||||
insertItem(new SerializableItem_Int("id", _id));
|
||||
insertItem(new SerializableItem_Int("value", _value));
|
||||
}
|
||||
|
||||
ServerInfo_Card::ServerInfo_Card(int _id, const QString &_name, int _x, int _y, bool _tapped, bool _attacking, const QString &_pt, const QString &_annotation, const QList<ServerInfo_CardCounter *> &_counters)
|
||||
: SerializableItem_Map("card")
|
||||
{
|
||||
insertItem(new SerializableItem_Int("id", _id));
|
||||
insertItem(new SerializableItem_String("name", _name));
|
||||
insertItem(new SerializableItem_Int("x", _x));
|
||||
insertItem(new SerializableItem_Int("y", _y));
|
||||
insertItem(new SerializableItem_Int("counters", _counters));
|
||||
insertItem(new SerializableItem_Bool("tapped", _tapped));
|
||||
insertItem(new SerializableItem_Bool("attacking", _attacking));
|
||||
insertItem(new SerializableItem_String("pt", _pt));
|
||||
insertItem(new SerializableItem_String("annotation", _annotation));
|
||||
|
||||
for (int i = 0; i < _counters.size(); ++i)
|
||||
itemList.append(_counters[i]);
|
||||
}
|
||||
|
||||
ServerInfo_Zone::ServerInfo_Zone(const QString &_name, ZoneType _type, bool _hasCoords, int _cardCount, const QList<ServerInfo_Card *> &_cardList)
|
||||
|
|
|
@ -52,18 +52,27 @@ public:
|
|||
int getSpectatorCount() const { return static_cast<SerializableItem_Int *>(itemMap.value("spectator_count"))->getData(); }
|
||||
};
|
||||
|
||||
class ServerInfo_CardCounter : public SerializableItem_Map {
|
||||
public:
|
||||
ServerInfo_CardCounter(int _id = -1, int _value = 0);
|
||||
static SerializableItem *newItem() { return new ServerInfo_CardCounter; }
|
||||
int getId() const { return static_cast<SerializableItem_Int *>(itemMap.value("id"))->getData(); }
|
||||
int getValue() const { return static_cast<SerializableItem_Int *>(itemMap.value("value"))->getData(); }
|
||||
};
|
||||
|
||||
class ServerInfo_Card : public SerializableItem_Map {
|
||||
public:
|
||||
ServerInfo_Card(int _id = -1, const QString &_name = QString(), int _x = -1, int _y = -1, int _counters = -1, bool _tapped = false, bool _attacking = false, const QString &_annotation = QString());
|
||||
ServerInfo_Card(int _id = -1, const QString &_name = QString(), int _x = -1, int _y = -1, bool _tapped = false, bool _attacking = false, const QString &_pt = QString(), const QString &_annotation = QString(), const QList<ServerInfo_CardCounter *> &_counterList = QList<ServerInfo_CardCounter *>());
|
||||
static SerializableItem *newItem() { return new ServerInfo_Card; }
|
||||
int getId() const { return static_cast<SerializableItem_Int *>(itemMap.value("id"))->getData(); }
|
||||
QString getName() const { return static_cast<SerializableItem_String *>(itemMap.value("name"))->getData(); }
|
||||
int getX() const { return static_cast<SerializableItem_Int *>(itemMap.value("x"))->getData(); }
|
||||
int getY() const { return static_cast<SerializableItem_Int *>(itemMap.value("y"))->getData(); }
|
||||
int getCounters() const { return static_cast<SerializableItem_Int *>(itemMap.value("counters"))->getData(); }
|
||||
bool getTapped() const { return static_cast<SerializableItem_Bool *>(itemMap.value("tapped"))->getData(); }
|
||||
bool getAttacking() const { return static_cast<SerializableItem_Bool *>(itemMap.value("attacking"))->getData(); }
|
||||
QString getPT() const { return static_cast<SerializableItem_String *>(itemMap.value("pt"))->getData(); }
|
||||
QString getAnnotation() const { return static_cast<SerializableItem_String *>(itemMap.value("annotation"))->getData(); }
|
||||
QList<ServerInfo_CardCounter *> getCounters() const { return typecastItemList<ServerInfo_CardCounter *>(); }
|
||||
};
|
||||
|
||||
class ServerInfo_Zone : public SerializableItem_Map {
|
||||
|
|
|
@ -24,38 +24,41 @@ ItemId_Command_CreateToken = 1022,
|
|||
ItemId_Command_CreateArrow = 1023,
|
||||
ItemId_Command_DeleteArrow = 1024,
|
||||
ItemId_Command_SetCardAttr = 1025,
|
||||
ItemId_Command_ReadyStart = 1026,
|
||||
ItemId_Command_Concede = 1027,
|
||||
ItemId_Command_IncCounter = 1028,
|
||||
ItemId_Command_CreateCounter = 1029,
|
||||
ItemId_Command_SetCounter = 1030,
|
||||
ItemId_Command_DelCounter = 1031,
|
||||
ItemId_Command_NextTurn = 1032,
|
||||
ItemId_Command_SetActivePhase = 1033,
|
||||
ItemId_Command_DumpZone = 1034,
|
||||
ItemId_Command_StopDumpZone = 1035,
|
||||
ItemId_Event_Say = 1036,
|
||||
ItemId_Event_Leave = 1037,
|
||||
ItemId_Event_GameClosed = 1038,
|
||||
ItemId_Event_Shuffle = 1039,
|
||||
ItemId_Event_RollDie = 1040,
|
||||
ItemId_Event_MoveCard = 1041,
|
||||
ItemId_Event_CreateToken = 1042,
|
||||
ItemId_Event_DeleteArrow = 1043,
|
||||
ItemId_Event_SetCardAttr = 1044,
|
||||
ItemId_Event_SetCounter = 1045,
|
||||
ItemId_Event_DelCounter = 1046,
|
||||
ItemId_Event_SetActivePlayer = 1047,
|
||||
ItemId_Event_SetActivePhase = 1048,
|
||||
ItemId_Event_DumpZone = 1049,
|
||||
ItemId_Event_StopDumpZone = 1050,
|
||||
ItemId_Event_ServerMessage = 1051,
|
||||
ItemId_Event_GameJoined = 1052,
|
||||
ItemId_Event_ChatJoinChannel = 1053,
|
||||
ItemId_Event_ChatLeaveChannel = 1054,
|
||||
ItemId_Event_ChatSay = 1055,
|
||||
ItemId_Context_ReadyStart = 1056,
|
||||
ItemId_Context_Concede = 1057,
|
||||
ItemId_Context_DeckSelect = 1058,
|
||||
ItemId_Other = 1059
|
||||
ItemId_Command_SetCardCounter = 1026,
|
||||
ItemId_Command_IncCardCounter = 1027,
|
||||
ItemId_Command_ReadyStart = 1028,
|
||||
ItemId_Command_Concede = 1029,
|
||||
ItemId_Command_IncCounter = 1030,
|
||||
ItemId_Command_CreateCounter = 1031,
|
||||
ItemId_Command_SetCounter = 1032,
|
||||
ItemId_Command_DelCounter = 1033,
|
||||
ItemId_Command_NextTurn = 1034,
|
||||
ItemId_Command_SetActivePhase = 1035,
|
||||
ItemId_Command_DumpZone = 1036,
|
||||
ItemId_Command_StopDumpZone = 1037,
|
||||
ItemId_Event_Say = 1038,
|
||||
ItemId_Event_Leave = 1039,
|
||||
ItemId_Event_GameClosed = 1040,
|
||||
ItemId_Event_Shuffle = 1041,
|
||||
ItemId_Event_RollDie = 1042,
|
||||
ItemId_Event_MoveCard = 1043,
|
||||
ItemId_Event_CreateToken = 1044,
|
||||
ItemId_Event_DeleteArrow = 1045,
|
||||
ItemId_Event_SetCardAttr = 1046,
|
||||
ItemId_Event_SetCardCounter = 1047,
|
||||
ItemId_Event_SetCounter = 1048,
|
||||
ItemId_Event_DelCounter = 1049,
|
||||
ItemId_Event_SetActivePlayer = 1050,
|
||||
ItemId_Event_SetActivePhase = 1051,
|
||||
ItemId_Event_DumpZone = 1052,
|
||||
ItemId_Event_StopDumpZone = 1053,
|
||||
ItemId_Event_ServerMessage = 1054,
|
||||
ItemId_Event_GameJoined = 1055,
|
||||
ItemId_Event_ChatJoinChannel = 1056,
|
||||
ItemId_Event_ChatLeaveChannel = 1057,
|
||||
ItemId_Event_ChatSay = 1058,
|
||||
ItemId_Context_ReadyStart = 1059,
|
||||
ItemId_Context_Concede = 1060,
|
||||
ItemId_Context_DeckSelect = 1061,
|
||||
ItemId_Other = 1062
|
||||
};
|
||||
|
|
|
@ -147,6 +147,22 @@ Command_SetCardAttr::Command_SetCardAttr(int _gameId, const QString &_zone, int
|
|||
insertItem(new SerializableItem_String("attr_name", _attrName));
|
||||
insertItem(new SerializableItem_String("attr_value", _attrValue));
|
||||
}
|
||||
Command_SetCardCounter::Command_SetCardCounter(int _gameId, const QString &_zone, int _cardId, int _counterId, int _counterValue)
|
||||
: GameCommand("set_card_counter", _gameId)
|
||||
{
|
||||
insertItem(new SerializableItem_String("zone", _zone));
|
||||
insertItem(new SerializableItem_Int("card_id", _cardId));
|
||||
insertItem(new SerializableItem_Int("counter_id", _counterId));
|
||||
insertItem(new SerializableItem_Int("counter_value", _counterValue));
|
||||
}
|
||||
Command_IncCardCounter::Command_IncCardCounter(int _gameId, const QString &_zone, int _cardId, int _counterId, int _counterDelta)
|
||||
: GameCommand("inc_card_counter", _gameId)
|
||||
{
|
||||
insertItem(new SerializableItem_String("zone", _zone));
|
||||
insertItem(new SerializableItem_Int("card_id", _cardId));
|
||||
insertItem(new SerializableItem_Int("counter_id", _counterId));
|
||||
insertItem(new SerializableItem_Int("counter_delta", _counterDelta));
|
||||
}
|
||||
Command_ReadyStart::Command_ReadyStart(int _gameId, bool _ready)
|
||||
: GameCommand("ready_start", _gameId)
|
||||
{
|
||||
|
@ -262,6 +278,14 @@ Event_SetCardAttr::Event_SetCardAttr(int _playerId, const QString &_zone, int _c
|
|||
insertItem(new SerializableItem_String("attr_name", _attrName));
|
||||
insertItem(new SerializableItem_String("attr_value", _attrValue));
|
||||
}
|
||||
Event_SetCardCounter::Event_SetCardCounter(int _playerId, const QString &_zone, int _cardId, int _counterId, int _counterValue)
|
||||
: GameEvent("set_card_counter", _playerId)
|
||||
{
|
||||
insertItem(new SerializableItem_String("zone", _zone));
|
||||
insertItem(new SerializableItem_Int("card_id", _cardId));
|
||||
insertItem(new SerializableItem_Int("counter_id", _counterId));
|
||||
insertItem(new SerializableItem_Int("counter_value", _counterValue));
|
||||
}
|
||||
Event_SetCounter::Event_SetCounter(int _playerId, int _counterId, int _value)
|
||||
: GameEvent("set_counter", _playerId)
|
||||
{
|
||||
|
@ -368,6 +392,8 @@ void ProtocolItem::initializeHashAuto()
|
|||
itemNameHash.insert("cmdcreate_arrow", Command_CreateArrow::newItem);
|
||||
itemNameHash.insert("cmddelete_arrow", Command_DeleteArrow::newItem);
|
||||
itemNameHash.insert("cmdset_card_attr", Command_SetCardAttr::newItem);
|
||||
itemNameHash.insert("cmdset_card_counter", Command_SetCardCounter::newItem);
|
||||
itemNameHash.insert("cmdinc_card_counter", Command_IncCardCounter::newItem);
|
||||
itemNameHash.insert("cmdready_start", Command_ReadyStart::newItem);
|
||||
itemNameHash.insert("cmdconcede", Command_Concede::newItem);
|
||||
itemNameHash.insert("cmdinc_counter", Command_IncCounter::newItem);
|
||||
|
@ -387,6 +413,7 @@ void ProtocolItem::initializeHashAuto()
|
|||
itemNameHash.insert("game_eventcreate_token", Event_CreateToken::newItem);
|
||||
itemNameHash.insert("game_eventdelete_arrow", Event_DeleteArrow::newItem);
|
||||
itemNameHash.insert("game_eventset_card_attr", Event_SetCardAttr::newItem);
|
||||
itemNameHash.insert("game_eventset_card_counter", Event_SetCardCounter::newItem);
|
||||
itemNameHash.insert("game_eventset_counter", Event_SetCounter::newItem);
|
||||
itemNameHash.insert("game_eventdel_counter", Event_DelCounter::newItem);
|
||||
itemNameHash.insert("game_eventset_active_player", Event_SetActivePlayer::newItem);
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
2:create_arrow:i,start_player_id:s,start_zone:i,start_card_id:i,target_player_id:s,target_zone:i,target_card_id:c,color
|
||||
2:delete_arrow:i,arrow_id
|
||||
2:set_card_attr:s,zone:i,card_id:s,attr_name:s,attr_value
|
||||
2:set_card_counter:s,zone:i,card_id:i,counter_id:i,counter_value
|
||||
2:inc_card_counter:s,zone:i,card_id:i,counter_id:i,counter_delta
|
||||
2:ready_start:b,ready
|
||||
2:concede
|
||||
2:inc_counter:i,counter_id:i,delta
|
||||
|
@ -42,6 +44,7 @@
|
|||
3:create_token:s,zone:i,card_id:s,card_name:s,pt:i,x:i,y
|
||||
3:delete_arrow:i,arrow_id
|
||||
3:set_card_attr:s,zone:i,card_id:s,attr_name:s,attr_value
|
||||
3:set_card_counter:s,zone:i,card_id:i,counter_id:i,counter_value
|
||||
3:set_counter:i,counter_id:i,value
|
||||
3:del_counter:i,counter_id
|
||||
3:set_active_player:i,active_player_id
|
||||
|
|
|
@ -224,6 +224,28 @@ public:
|
|||
static SerializableItem *newItem() { return new Command_SetCardAttr; }
|
||||
int getItemId() const { return ItemId_Command_SetCardAttr; }
|
||||
};
|
||||
class Command_SetCardCounter : public GameCommand {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Command_SetCardCounter(int _gameId = -1, const QString &_zone = QString(), int _cardId = -1, int _counterId = -1, int _counterValue = -1);
|
||||
QString getZone() const { return static_cast<SerializableItem_String *>(itemMap.value("zone"))->getData(); };
|
||||
int getCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("card_id"))->getData(); };
|
||||
int getCounterId() const { return static_cast<SerializableItem_Int *>(itemMap.value("counter_id"))->getData(); };
|
||||
int getCounterValue() const { return static_cast<SerializableItem_Int *>(itemMap.value("counter_value"))->getData(); };
|
||||
static SerializableItem *newItem() { return new Command_SetCardCounter; }
|
||||
int getItemId() const { return ItemId_Command_SetCardCounter; }
|
||||
};
|
||||
class Command_IncCardCounter : public GameCommand {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Command_IncCardCounter(int _gameId = -1, const QString &_zone = QString(), int _cardId = -1, int _counterId = -1, int _counterDelta = -1);
|
||||
QString getZone() const { return static_cast<SerializableItem_String *>(itemMap.value("zone"))->getData(); };
|
||||
int getCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("card_id"))->getData(); };
|
||||
int getCounterId() const { return static_cast<SerializableItem_Int *>(itemMap.value("counter_id"))->getData(); };
|
||||
int getCounterDelta() const { return static_cast<SerializableItem_Int *>(itemMap.value("counter_delta"))->getData(); };
|
||||
static SerializableItem *newItem() { return new Command_IncCardCounter; }
|
||||
int getItemId() const { return ItemId_Command_IncCardCounter; }
|
||||
};
|
||||
class Command_ReadyStart : public GameCommand {
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
@ -396,6 +418,17 @@ public:
|
|||
static SerializableItem *newItem() { return new Event_SetCardAttr; }
|
||||
int getItemId() const { return ItemId_Event_SetCardAttr; }
|
||||
};
|
||||
class Event_SetCardCounter : public GameEvent {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Event_SetCardCounter(int _playerId = -1, const QString &_zone = QString(), int _cardId = -1, int _counterId = -1, int _counterValue = -1);
|
||||
QString getZone() const { return static_cast<SerializableItem_String *>(itemMap.value("zone"))->getData(); };
|
||||
int getCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("card_id"))->getData(); };
|
||||
int getCounterId() const { return static_cast<SerializableItem_Int *>(itemMap.value("counter_id"))->getData(); };
|
||||
int getCounterValue() const { return static_cast<SerializableItem_Int *>(itemMap.value("counter_value"))->getData(); };
|
||||
static SerializableItem *newItem() { return new Event_SetCardCounter; }
|
||||
int getItemId() const { return ItemId_Event_SetCardCounter; }
|
||||
};
|
||||
class Event_SetCounter : public GameEvent {
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include "server_card.h"
|
||||
|
||||
Server_Card::Server_Card(QString _name, int _id, int _coord_x, int _coord_y)
|
||||
: id(_id), coord_x(_coord_x), coord_y(_coord_y), name(_name), counters(0), tapped(false), attacking(false), facedown(false), annotation(QString()), doesntUntap(false)
|
||||
: id(_id), coord_x(_coord_x), coord_y(_coord_y), name(_name), tapped(false), attacking(false), facedown(false), pt(QString()), annotation(QString()), doesntUntap(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -32,23 +32,18 @@ Server_Card::~Server_Card()
|
|||
void Server_Card::resetState()
|
||||
{
|
||||
setCoords(0, 0);
|
||||
setCounters(0);
|
||||
counters.clear();
|
||||
setTapped(false);
|
||||
setAttacking(false);
|
||||
setFaceDown(false);
|
||||
setPT(QString());
|
||||
setAnnotation(QString());
|
||||
setDoesntUntap(false);
|
||||
}
|
||||
|
||||
bool Server_Card::setAttribute(const QString &aname, const QString &avalue, bool allCards)
|
||||
{
|
||||
if (aname == "counters") {
|
||||
bool ok;
|
||||
int tmp_int = avalue.toInt(&ok);
|
||||
if (!ok)
|
||||
return false;
|
||||
setCounters(tmp_int);
|
||||
} else if (aname == "tapped") {
|
||||
if (aname == "tapped") {
|
||||
bool value = avalue == "1";
|
||||
if (!(!value && allCards && doesntUntap))
|
||||
setTapped(value);
|
||||
|
@ -56,6 +51,8 @@ bool Server_Card::setAttribute(const QString &aname, const QString &avalue, bool
|
|||
setAttacking(avalue == "1");
|
||||
} else if (aname == "facedown") {
|
||||
setFaceDown(avalue == "1");
|
||||
} else if (aname == "pt") {
|
||||
setPT(avalue);
|
||||
} else if (aname == "annotation") {
|
||||
setAnnotation(avalue);
|
||||
} else if (aname == "doesnt_untap") {
|
||||
|
@ -65,3 +62,11 @@ bool Server_Card::setAttribute(const QString &aname, const QString &avalue, bool
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Server_Card::setCounter(int id, int value)
|
||||
{
|
||||
if (value)
|
||||
counters.insert(id, value);
|
||||
else
|
||||
counters.remove(id);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#define SERVER_CARD_H
|
||||
|
||||
#include <QString>
|
||||
#include <QMap>
|
||||
|
||||
class Server_CardZone;
|
||||
|
||||
|
@ -30,10 +31,11 @@ private:
|
|||
int id;
|
||||
int coord_x, coord_y;
|
||||
QString name;
|
||||
int counters;
|
||||
QMap<int, int> counters;
|
||||
bool tapped;
|
||||
bool attacking;
|
||||
bool facedown;
|
||||
QString pt;
|
||||
QString annotation;
|
||||
bool doesntUntap;
|
||||
public:
|
||||
|
@ -47,20 +49,23 @@ public:
|
|||
int getX() const { return coord_x; }
|
||||
int getY() const { return coord_y; }
|
||||
QString getName() const { return name; }
|
||||
int getCounters() const { return counters; }
|
||||
const QMap<int, int> &getCounters() const { return counters; }
|
||||
int getCounter(int id) const { return counters.value(id, 0); }
|
||||
bool getTapped() const { return tapped; }
|
||||
bool getAttacking() const { return attacking; }
|
||||
bool getFaceDown() const { return facedown; }
|
||||
QString getPT() const { return pt; }
|
||||
QString getAnnotation() const { return annotation; }
|
||||
bool getDoesntUntap() const { return doesntUntap; }
|
||||
|
||||
void setId(int _id) { id = _id; }
|
||||
void setCoords(int x, int y) { coord_x = x; coord_y = y; }
|
||||
void setName(const QString &_name) { name = _name; }
|
||||
void setCounters(int _counters) { counters = _counters; }
|
||||
void setCounter(int id, int value);
|
||||
void setTapped(bool _tapped) { tapped = _tapped; }
|
||||
void setAttacking(bool _attacking) { attacking = _attacking; }
|
||||
void setFaceDown(bool _facedown) { facedown = _facedown; }
|
||||
void setPT(const QString &_pt) { pt = _pt; }
|
||||
void setAnnotation(const QString &_annotation) { annotation = _annotation; }
|
||||
void setDoesntUntap(bool _doesntUntap) { doesntUntap = _doesntUntap; }
|
||||
|
||||
|
|
|
@ -275,7 +275,15 @@ QList<ServerInfo_Player *> Server_Game::getGameState(Server_Player *playerWhosAs
|
|||
while (cardIterator.hasNext()) {
|
||||
Server_Card *card = cardIterator.next();
|
||||
QString displayedName = card->getFaceDown() ? QString() : card->getName();
|
||||
cardList.append(new ServerInfo_Card(card->getId(), displayedName, card->getX(), card->getY(), card->getCounters(), card->getTapped(), card->getAttacking(), card->getAnnotation()));
|
||||
|
||||
QList<ServerInfo_CardCounter *> cardCounterList;
|
||||
QMapIterator<int, int> cardCounterIterator(card->getCounters());
|
||||
while (cardCounterIterator.hasNext()) {
|
||||
cardCounterIterator.next();
|
||||
cardCounterList.append(new ServerInfo_CardCounter(cardCounterIterator.key(), cardCounterIterator.value()));
|
||||
}
|
||||
|
||||
cardList.append(new ServerInfo_Card(card->getId(), displayedName, card->getX(), card->getY(), card->getTapped(), card->getAttacking(), card->getPT(), card->getAnnotation(), cardCounterList));
|
||||
}
|
||||
}
|
||||
zoneList.append(new ServerInfo_Zone(zone->getName(), zone->getType(), zone->hasCoords(), zone->cards.size(), cardList));
|
||||
|
|
|
@ -99,6 +99,8 @@ ResponseCode Server_ProtocolHandler::processCommandHelper(Command *command, Comm
|
|||
case ItemId_Command_CreateArrow: return cmdCreateArrow(qobject_cast<Command_CreateArrow *>(command), cont, game, player);
|
||||
case ItemId_Command_DeleteArrow: return cmdDeleteArrow(qobject_cast<Command_DeleteArrow *>(command), cont, game, player);
|
||||
case ItemId_Command_SetCardAttr: return cmdSetCardAttr(qobject_cast<Command_SetCardAttr *>(command), cont, game, player);
|
||||
case ItemId_Command_SetCardCounter: return cmdSetCardCounter(qobject_cast<Command_SetCardCounter *>(command), cont, game, player);
|
||||
case ItemId_Command_IncCardCounter: return cmdIncCardCounter(qobject_cast<Command_IncCardCounter *>(command), cont, game, player);
|
||||
case ItemId_Command_IncCounter: return cmdIncCounter(qobject_cast<Command_IncCounter *>(command), cont, game, player);
|
||||
case ItemId_Command_CreateCounter: return cmdCreateCounter(qobject_cast<Command_CreateCounter *>(command), cont, game, player);
|
||||
case ItemId_Command_SetCounter: return cmdSetCounter(qobject_cast<Command_SetCounter *>(command), cont, game, player);
|
||||
|
@ -682,8 +684,6 @@ ResponseCode Server_ProtocolHandler::setCardAttrHelper(CommandContainer *cont, S
|
|||
if (!game->getGameStarted())
|
||||
return RespGameNotStarted;
|
||||
|
||||
// zone, card id, attr name, attr value
|
||||
// card id = -1 => affects all cards in the specified zone
|
||||
Server_CardZone *zone = player->getZones().value(zoneName);
|
||||
if (!zone)
|
||||
return RespNameNotFound;
|
||||
|
@ -710,6 +710,53 @@ ResponseCode Server_ProtocolHandler::cmdSetCardAttr(Command_SetCardAttr *cmd, Co
|
|||
return setCardAttrHelper(cont, game, player, cmd->getZone(), cmd->getCardId(), cmd->getAttrName(), cmd->getAttrValue());
|
||||
}
|
||||
|
||||
ResponseCode Server_ProtocolHandler::cmdSetCardCounter(Command_SetCardCounter *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player)
|
||||
{
|
||||
if (player->getSpectator())
|
||||
return RespFunctionNotAllowed;
|
||||
|
||||
if (!game->getGameStarted())
|
||||
return RespGameNotStarted;
|
||||
|
||||
Server_CardZone *zone = player->getZones().value(cmd->getZone());
|
||||
if (!zone)
|
||||
return RespNameNotFound;
|
||||
|
||||
Server_Card *card = zone->getCard(cmd->getCardId(), false);
|
||||
if (!card)
|
||||
return RespNameNotFound;
|
||||
|
||||
card->setCounter(cmd->getCounterId(), cmd->getCounterValue());
|
||||
|
||||
cont->enqueueGameEventPrivate(new Event_SetCardCounter(player->getPlayerId(), zone->getName(), card->getId(), cmd->getCounterId(), cmd->getCounterValue()), game->getGameId());
|
||||
cont->enqueueGameEventPublic(new Event_SetCardCounter(player->getPlayerId(), zone->getName(), card->getId(), cmd->getCounterId(), cmd->getCounterValue()), game->getGameId());
|
||||
return RespOk;
|
||||
}
|
||||
|
||||
ResponseCode Server_ProtocolHandler::cmdIncCardCounter(Command_IncCardCounter *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player)
|
||||
{
|
||||
if (player->getSpectator())
|
||||
return RespFunctionNotAllowed;
|
||||
|
||||
if (!game->getGameStarted())
|
||||
return RespGameNotStarted;
|
||||
|
||||
Server_CardZone *zone = player->getZones().value(cmd->getZone());
|
||||
if (!zone)
|
||||
return RespNameNotFound;
|
||||
|
||||
Server_Card *card = zone->getCard(cmd->getCardId(), false);
|
||||
if (!card)
|
||||
return RespNameNotFound;
|
||||
|
||||
int newValue = card->getCounter(cmd->getCounterId()) + cmd->getCounterDelta();
|
||||
card->setCounter(cmd->getCounterId(), newValue);
|
||||
|
||||
cont->enqueueGameEventPrivate(new Event_SetCardCounter(player->getPlayerId(), zone->getName(), card->getId(), cmd->getCounterId(), newValue), game->getGameId());
|
||||
cont->enqueueGameEventPublic(new Event_SetCardCounter(player->getPlayerId(), zone->getName(), card->getId(), cmd->getCounterId(), newValue), game->getGameId());
|
||||
return RespOk;
|
||||
}
|
||||
|
||||
ResponseCode Server_ProtocolHandler::cmdIncCounter(Command_IncCounter *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player)
|
||||
{
|
||||
if (player->getSpectator())
|
||||
|
@ -833,8 +880,15 @@ ResponseCode Server_ProtocolHandler::cmdDumpZone(Command_DumpZone *cmd, CommandC
|
|||
QString displayedName = card->getFaceDown() ? QString() : card->getName();
|
||||
if (zone->getType() == HiddenZone)
|
||||
respCardList.append(new ServerInfo_Card(i, displayedName));
|
||||
else
|
||||
respCardList.append(new ServerInfo_Card(card->getId(), displayedName, card->getX(), card->getY(), card->getCounters(), card->getTapped(), card->getAttacking(), card->getAnnotation()));
|
||||
else {
|
||||
QList<ServerInfo_CardCounter *> cardCounterList;
|
||||
QMapIterator<int, int> cardCounterIterator(card->getCounters());
|
||||
while (cardCounterIterator.hasNext()) {
|
||||
cardCounterIterator.next();
|
||||
cardCounterList.append(new ServerInfo_CardCounter(cardCounterIterator.key(), cardCounterIterator.value()));
|
||||
}
|
||||
respCardList.append(new ServerInfo_Card(card->getId(), displayedName, card->getX(), card->getY(), card->getTapped(), card->getAttacking(), card->getPT(), card->getAnnotation(), cardCounterList));
|
||||
}
|
||||
}
|
||||
if (zone->getType() == HiddenZone) {
|
||||
zone->setCardsBeingLookedAt(numberCards);
|
||||
|
|
|
@ -66,6 +66,8 @@ private:
|
|||
ResponseCode cmdDeleteArrow(Command_DeleteArrow *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode setCardAttrHelper(CommandContainer *cont, Server_Game *game, Server_Player *player, const QString &zone, int cardId, const QString &attrName, const QString &attrValue);
|
||||
ResponseCode cmdSetCardAttr(Command_SetCardAttr *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdSetCardCounter(Command_SetCardCounter *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdIncCardCounter(Command_IncCardCounter *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdIncCounter(Command_IncCounter *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdCreateCounter(Command_CreateCounter *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdSetCounter(Command_SetCounter *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
|
|
Loading…
Reference in a new issue