Commit 808d2a3c authored by Max-Wilhelm Bruker's avatar Max-Wilhelm Bruker
Browse files

Event context for mulligans, German translation

parent 0c1c0fcb
......@@ -126,7 +126,8 @@ void MessageLogWidget::logSpectatorSay(QString spectatorName, QString message)
void MessageLogWidget::logShuffle(Player *player)
{
soundEngine->shuffle();
append(tr("%1 shuffles his library.").arg(sanitizeHtml(player->getName())));
if (currentContext != MessageContext_Mulligan)
append(tr("%1 shuffles his library.").arg(sanitizeHtml(player->getName())));
}
void MessageLogWidget::logRollDie(Player *player, int sides, int roll)
......@@ -136,8 +137,12 @@ void MessageLogWidget::logRollDie(Player *player, int sides, int roll)
void MessageLogWidget::logDrawCards(Player *player, int number)
{
soundEngine->draw();
append(tr("%1 draws %n card(s).", "", number).arg(sanitizeHtml(player->getName())));
if (currentContext == MessageContext_Mulligan)
mulliganPlayer = player;
else {
soundEngine->draw();
append(tr("%1 draws %n card(s).", "", number).arg(sanitizeHtml(player->getName())));
}
}
void MessageLogWidget::logUndoDraw(Player *player, QString cardName)
......@@ -251,10 +256,20 @@ void MessageLogWidget::logMoveCard(Player *player, CardItem *card, CardZone *sta
LogMoveCard attributes = {player, card, card->getName(), startZone, oldX, targetZone, newX};
if (currentContext == MessageContext_MoveCard)
moveCardQueue.append(attributes);
else if (currentContext == MessageContext_Mulligan)
mulliganPlayer = player;
else
doMoveCard(attributes);
}
void MessageLogWidget::logMulligan(Player *player, int number)
{
if (number > -1)
append(tr("%1 takes a mulligan to %n.", "", number).arg(sanitizeHtml(player->getName())));
else
append(tr("%1 draws his initial hand.").arg(sanitizeHtml(player->getName())));
}
void MessageLogWidget::logFlipCard(Player *player, QString cardName, bool faceDown)
{
if (faceDown)
......@@ -451,6 +466,10 @@ void MessageLogWidget::containerProcessingStarted(GameEventContext *_context)
{
if (qobject_cast<Context_MoveCard *>(_context))
currentContext = MessageContext_MoveCard;
else if (qobject_cast<Context_Mulligan *>(_context)) {
currentContext = MessageContext_Mulligan;
mulliganNumber = static_cast<Context_Mulligan *>(_context)->getNumber();
}
}
void MessageLogWidget::containerProcessingDone()
......@@ -461,6 +480,9 @@ void MessageLogWidget::containerProcessingDone()
moveCardQueue.clear();
moveCardPT.clear();
moveCardTapped.clear();
} else if (currentContext == MessageContext_Mulligan) {
logMulligan(mulliganPlayer, mulliganNumber);
mulliganNumber = 0;
}
currentContext = MessageContext_None;
......
......@@ -27,16 +27,20 @@ struct LogMoveCard {
class MessageLogWidget : public QTextEdit {
Q_OBJECT
private:
enum MessageContext { MessageContext_None, MessageContext_MoveCard };
enum MessageContext { MessageContext_None, MessageContext_MoveCard, MessageContext_Mulligan };
CardInfoWidget *infoWidget;
QString sanitizeHtml(QString dirty) const;
QPair<QString, QString> getFromStr(CardZone *zone, QString cardName, int position) const;
QString getCardNameUnderMouse(const QPoint &pos) const;
MessageContext currentContext;
QList<LogMoveCard> moveCardQueue;
QMap<CardItem *, QString> moveCardPT;
QMap<CardItem *, bool> moveCardTapped;
Player *mulliganPlayer;
int mulliganNumber;
signals:
void cardNameHovered(QString cardName);
void showCardInfoPopup(QPoint pos, QString cardName);
......@@ -68,6 +72,7 @@ public slots:
void logUndoDraw(Player *player, QString cardName);
void doMoveCard(LogMoveCard &attributes);
void logMoveCard(Player *player, CardItem *card, CardZone *startZone, int oldX, CardZone *targetZone, int newX);
void logMulligan(Player *player, int number);
void logFlipCard(Player *player, QString cardName, bool faceDown);
void logDestroyCard(Player *player, QString cardName);
void logAttachCard(Player *player, QString cardName, Player *targetPlayer, QString targetCardName);
......
......@@ -891,8 +891,7 @@ void Player::eventMoveCard(Event_MoveCard *event, GameEventContext *context)
if (context)
switch (context->getItemId()) {
case ItemId_Context_UndoDraw: emit logUndoDraw(this, card->getName()); break;
case ItemId_Context_MoveCard: emit logMoveCard(this, card, startZone, logPosition, targetZone, logX);
default: ;
default: emit logMoveCard(this, card, startZone, logPosition, targetZone, logX);
}
else
emit logMoveCard(this, card, startZone, logPosition, targetZone, logX);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -76,7 +76,8 @@ ItemId_Context_Concede = 1074,
ItemId_Context_DeckSelect = 1075,
ItemId_Context_UndoDraw = 1076,
ItemId_Context_MoveCard = 1077,
ItemId_Command_UpdateServerMessage = 1078,
ItemId_Command_BanFromServer = 1079,
ItemId_Other = 1080
ItemId_Context_Mulligan = 1078,
ItemId_Command_UpdateServerMessage = 1079,
ItemId_Command_BanFromServer = 1080,
ItemId_Other = 1081
};
......@@ -458,6 +458,11 @@ Context_MoveCard::Context_MoveCard()
: GameEventContext("move_card")
{
}
Context_Mulligan::Context_Mulligan(int _number)
: GameEventContext("mulligan")
{
insertItem(new SerializableItem_Int("number", _number));
}
Command_UpdateServerMessage::Command_UpdateServerMessage()
: AdminCommand("update_server_message")
{
......@@ -547,6 +552,7 @@ void ProtocolItem::initializeHashAuto()
itemNameHash.insert("game_event_contextdeck_select", Context_DeckSelect::newItem);
itemNameHash.insert("game_event_contextundo_draw", Context_UndoDraw::newItem);
itemNameHash.insert("game_event_contextmove_card", Context_MoveCard::newItem);
itemNameHash.insert("game_event_contextmulligan", Context_Mulligan::newItem);
itemNameHash.insert("cmdupdate_server_message", Command_UpdateServerMessage::newItem);
itemNameHash.insert("cmdban_from_server", Command_BanFromServer::newItem);
}
......@@ -75,5 +75,6 @@
6:deck_select:i,deck_id
6:undo_draw
6:move_card
6:mulligan:i,number
7:update_server_message
7:ban_from_server:s,user_name:i,minutes
\ No newline at end of file
......@@ -691,6 +691,14 @@ public:
static SerializableItem *newItem() { return new Context_MoveCard; }
int getItemId() const { return ItemId_Context_MoveCard; }
};
class Context_Mulligan : public GameEventContext {
Q_OBJECT
public:
Context_Mulligan(int _number = -1);
int getNumber() const { return static_cast<SerializableItem_Int *>(itemMap.value("number"))->getData(); };
static SerializableItem *newItem() { return new Context_Mulligan; }
int getItemId() const { return ItemId_Context_Mulligan; }
};
class Command_UpdateServerMessage : public AdminCommand {
Q_OBJECT
public:
......
......@@ -402,6 +402,7 @@ ResponseCode Server_Player::moveCard(CommandContainer *cont, Server_CardZone *st
if (card->getDestroyOnZoneChange() && (startzone->getName() != targetzone->getName())) {
cont->enqueueGameEventPrivate(new Event_DestroyCard(getPlayerId(), startzone->getName(), card->getId()), game->getGameId(), -1, new Context_MoveCard);
cont->enqueueGameEventOmniscient(new Event_DestroyCard(getPlayerId(), startzone->getName(), card->getId()), game->getGameId(), new Context_MoveCard);
cont->enqueueGameEventPublic(new Event_DestroyCard(getPlayerId(), startzone->getName(), card->getId()), game->getGameId(), new Context_MoveCard);
card->deleteLater();
} else {
......
......@@ -632,9 +632,16 @@ ResponseCode Server_ProtocolHandler::cmdMulligan(Command_Mulligan * /*cmd*/, Com
deck->shuffle();
cont->enqueueGameEventPrivate(new Event_Shuffle(player->getPlayerId()), game->getGameId());
cont->enqueueGameEventOmniscient(new Event_Shuffle(player->getPlayerId()), game->getGameId());
cont->enqueueGameEventPublic(new Event_Shuffle(player->getPlayerId()), game->getGameId());
player->drawCards(cont, number);
if (number == player->getInitialCards())
number = -1;
cont->getGameEventQueuePrivate()->setContext(new Context_Mulligan(number));
cont->getGameEventQueuePublic()->setContext(new Context_Mulligan(number));
cont->getGameEventQueueOmniscient()->setContext(new Context_Mulligan(number));
return RespOk;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment