diff --git a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java index 4decac5a001..6754d45cc09 100644 --- a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java +++ b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java @@ -102,6 +102,18 @@ public class ChatPanel extends javax.swing.JPanel { NONE, GAME, CHAT } + /** + * Controls the output start messages as the chat panel is created + * + */ + private ChatType chatType = ChatType.DEFAULT; + + public enum ChatType { + DEFAULT, GAME, TABLES, TOURNAMENT + } + + private boolean startMessageDone = false; + /** * Maps message colors to {@link Color}. */ @@ -143,6 +155,23 @@ public class ChatPanel extends javax.swing.JPanel { } } + public ChatType getChatType() { + return chatType; + } + + public void setChatType(ChatType chatType) { + this.chatType = chatType; + } + + public boolean isStartMessageDone() { + return startMessageDone; + } + + public void setStartMessageDone(boolean startMessageDone) { + this.startMessageDone = startMessageDone; + } + + public void connect(UUID chatId) { session = MageFrame.getSession(); this.chatId = chatId; diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 3d3b3b49194..8fd77858d66 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -715,6 +715,7 @@ public final class GamePanel extends javax.swing.JPanel { userChatPanel = new mage.client.chat.ChatPanel(); userChatPanel.setParentChat(gameChatPanel); userChatPanel.useExtendedView(ChatPanel.VIEW_MODE.CHAT); + userChatPanel.setChatType(ChatPanel.ChatType.GAME); gameChatPanel.setConnectedChat(userChatPanel); gameChatPanel.disableInput(); gameChatPanel.setMinimumSize(new java.awt.Dimension(100, 48)); diff --git a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java index a2250b20a81..f15e20113b5 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -35,6 +35,7 @@ import mage.Constants; import mage.cards.decks.Deck; import mage.client.MageFrame; import mage.client.chat.ChatPanel; +import mage.client.chat.ChatPanel.ChatType; import mage.client.constants.Constants.DeckEditorMode; import mage.client.draft.DraftPanel; import mage.client.game.GamePanel; @@ -113,6 +114,7 @@ public class CallbackClientImpl implements CallbackClient { ChatMessage message = (ChatMessage) callback.getData(); ChatPanel panel = MageFrame.getChat(callback.getObjectId()); if (panel != null) { + // play the to the message connected sound if (message.getSoundToPlay() != null) { switch (message.getSoundToPlay()) { case PlayerLeft: @@ -123,20 +125,17 @@ public class CallbackClientImpl implements CallbackClient { break; } } - if (message.getMessage().equals(Constants.MSG_TIP_HOT_KEYS_CODE) && panel.getConnectedChat() != null) { - panel.getConnectedChat().receiveMessage("[Tips] ", "You may use hot keys to play faster: " + "" + - "\nTurn Mousewheel - Show big image of card your mousepointer hovers over" + - "\nF2 - Confirm \"Ok\", \"Yes\" or \"Done\" button" + - "\nF4 - Skip current turn but stop on declare attackers" + - "\nF9 - Skip everything until your next turn" + - "\nF3 - Undo F4/F9", "", ChatMessage.MessageColor.ORANGE); - } else { - if (message.isUserMessage() && panel.getConnectedChat() != null) { - panel.getConnectedChat().receiveMessage(message.getUsername(), message.getMessage(), message.getTime(), ChatMessage.MessageColor.BLACK); - } else { - panel.receiveMessage(message.getUsername(), message.getMessage(), message.getTime(), message.getColor()); - } + // send start message to chat if needed + if (!panel.isStartMessageDone()) { + createChatStartMessage(panel); } + // send the message itself + if (message.isUserMessage() && panel.getConnectedChat() != null) { + panel.getConnectedChat().receiveMessage(message.getUsername(), message.getMessage(), message.getTime(), ChatMessage.MessageColor.BLACK); + } else { + panel.receiveMessage(message.getUsername(), message.getMessage(), message.getTime(), message.getColor()); + } + } } else if (callback.getMethod().equals("serverMessage")) { if (callback.getData() != null) { @@ -339,6 +338,34 @@ public class CallbackClientImpl implements CallbackClient { }); } + private void createChatStartMessage(ChatPanel chatPanel) { + chatPanel.setStartMessageDone(true); + ChatPanel usedPanel = chatPanel; + if (chatPanel.getConnectedChat() != null) { + usedPanel = chatPanel.getConnectedChat(); + } + switch (usedPanel.getChatType()) { + case GAME: + usedPanel.receiveMessage("", "You may use hot keys to play faster: " + "" + + "\nTurn Mousewheel - Show big image of card your mousepointer hovers over" + + "\nF2 - Confirm \"Ok\", \"Yes\" or \"Done\" button" + + "\nF4 - Skip current turn but stop on declare attackers" + + "\nF9 - Skip everything until your next turn" + + "\nF3 - Undo F4/F9", "", ChatMessage.MessageColor.ORANGE); + break; + case TOURNAMENT: + usedPanel.receiveMessage("", "On this panel you can see the players, their state and the results of the games of the tournament. Also you can chat with the competitors of the tournament.", "", ChatMessage.MessageColor.ORANGE); + break; + case TABLES: + usedPanel.receiveMessage("", + "Download card images by using the \"Images\" menu to the top right ." + + "\nDownload icons and symbols by using the \"Symbols\" menu to the top right.", + "", ChatMessage.MessageColor.ORANGE); + break; + + } + } + public UUID getId() { return clientId; } diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index dd832e554cf..bb3caa40893 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -118,6 +118,7 @@ public class TablesPanel extends javax.swing.JPanel { tableTables.createDefaultColumnsFromModel(); chatPanel.useExtendedView(ChatPanel.VIEW_MODE.NONE); chatPanel.setBorder(null); + chatPanel.setChatType(ChatPanel.ChatType.TABLES); JComponent[] components = new JComponent[] {chatPanel, jSplitPane1, jScrollPane1, jScrollPane2, jPanel1, jPanel3}; for (JComponent component : components) { diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java index d9a4c554a9e..4de0b69d6d1 100644 --- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java +++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java @@ -86,6 +86,7 @@ public class TournamentPanel extends javax.swing.JPanel { tableMatches.createDefaultColumnsFromModel(); chatPanel1.useExtendedView(ChatPanel.VIEW_MODE.NONE); + chatPanel1.setChatType(ChatPanel.ChatType.TOURNAMENT); Action action = new AbstractAction() { diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 230784c941a..b1300c509e0 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -517,7 +517,6 @@ public abstract class GameImpl> implements Game, Serializa this.gameOptions = options; scorePlayer = state.getPlayers().values().iterator().next(); init(choosingPlayerId, options); - informPlayers(Constants.MSG_TIP_HOT_KEYS_CODE); play(startingPlayerId); //saveState(); }