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

Event context for mulligans, German translation

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