1 #ifndef MESSAGELOGWIDGET_H 2 #define MESSAGELOGWIDGET_H 3 4 #include "chatview/chatview.h" 5 #include "translation.h" 6 #include "user_level.h" 7 8 class Player; 9 class CardZone; 10 class GameEventContext; 11 class CardItem; 12 13 class MessageLogWidget : public ChatView 14 { 15 Q_OBJECT 16 private: 17 enum MessageContext 18 { 19 MessageContext_None, 20 MessageContext_MoveCard, 21 MessageContext_Mulligan 22 }; 23 24 int mulliganNumber; 25 Player *mulliganPlayer; 26 MessageContext currentContext; 27 QString messagePrefix, messageSuffix; 28 29 const QString &tableConstant() const; 30 const QString &graveyardConstant() const; 31 const QString &exileConstant() const; 32 const QString &handConstant() const; 33 const QString &deckConstant() const; 34 const QString &sideboardConstant() const; 35 const QString &stackConstant() const; 36 37 QString sanitizeHtml(QString dirty) const; 38 QString cardLink(QString cardName) const; 39 QPair<QString, QString> getFromStr(CardZone *zone, QString cardName, int position, bool ownerChange) const; 40 41 public slots: 42 void containerProcessingDone(); 43 void containerProcessingStarted(const GameEventContext &context); 44 void logAlwaysRevealTopCard(Player *player, CardZone *zone, bool reveal); 45 void logAttachCard(Player *player, QString cardName, Player *targetPlayer, QString targetCardName); 46 void logConcede(Player *player); 47 void logUnconcede(Player *player); 48 void logConnectionStateChanged(Player *player, bool connectionState); 49 void logCreateArrow(Player *player, 50 Player *startPlayer, 51 QString startCard, 52 Player *targetPlayer, 53 QString targetCard, 54 bool playerTarget); 55 void logCreateToken(Player *player, QString cardName, QString pt); 56 void logDeckSelect(Player *player, QString deckHash, int sideboardSize); 57 void logDestroyCard(Player *player, QString cardName); 58 void logDrawCards(Player *player, int number); 59 void logDumpZone(Player *player, CardZone *zone, int numberCards); 60 void logFlipCard(Player *player, QString cardName, bool faceDown); 61 void logGameClosed(); 62 void logGameStart(); 63 void logJoin(Player *player); 64 void logJoinSpectator(QString name); 65 void logKicked(); 66 void logLeave(Player *player, QString reason); 67 void logLeaveSpectator(QString name, QString reason); 68 void logNotReadyStart(Player *player); 69 void logMoveCard(Player *player, CardItem *card, CardZone *startZone, int oldX, CardZone *targetZone, int newX); 70 void logMulligan(Player *player, int number); 71 void logReplayStarted(int gameId); 72 void logReadyStart(Player *player); 73 void logRevealCards(Player *player, 74 CardZone *zone, 75 int cardId, 76 QString cardName, 77 Player *otherPlayer, 78 bool faceDown, 79 int amount); 80 void logReverseTurn(Player *player, bool reversed); 81 void logRollDie(Player *player, int sides, int roll); 82 void logSay(Player *player, QString message); 83 void logSetActivePhase(int phase); 84 void logSetActivePlayer(Player *player); 85 void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation); 86 void logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue); 87 void logSetCounter(Player *player, QString counterName, int value, int oldValue); 88 void logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap); 89 void logSetPT(Player *player, CardItem *card, QString newPT); 90 void logSetSideboardLock(Player *player, bool locked); 91 void logSetTapped(Player *player, CardItem *card, bool tapped); 92 void logShuffle(Player *player, CardZone *zone, int start, int end); 93 void 94 logSpectatorSay(QString spectatorName, UserLevelFlags spectatorUserLevel, QString userPrivLevel, QString message); 95 void logStopDumpZone(Player *player, CardZone *zone); 96 void logUnattachCard(Player *player, QString cardName); 97 void logUndoDraw(Player *player, QString cardName); 98 void setContextJudgeName(QString player); 99 void appendHtmlServerMessage(const QString &html, 100 bool optionalIsBold = false, 101 QString optionalFontColor = QString()) override; 102 103 public: 104 void connectToPlayer(Player *player); 105 MessageLogWidget(const TabSupervisor *_tabSupervisor, 106 const UserlistProxy *_userlistProxy, 107 TabGame *_game, 108 QWidget *parent = nullptr); 109 }; 110 111 #endif 112