summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/defaults.cpp1
-rw-r--r--src/gui/chatwindow.cpp25
-rw-r--r--src/gui/chatwindow.h5
-rw-r--r--src/gui/setup_chat.cpp4
-rw-r--r--src/net/ea/chathandler.cpp3
5 files changed, 37 insertions, 1 deletions
diff --git a/src/defaults.cpp b/src/defaults.cpp
index 06e67d6ed..4c8183f39 100644
--- a/src/defaults.cpp
+++ b/src/defaults.cpp
@@ -299,6 +299,7 @@ DefaultsData* getConfigDefaults()
#endif
AddDEF("logInput", false);
AddDEF("highlightWords", "");
+ AddDEF("globalsFilter", "Sagatha");
AddDEF("selfMouseHeal", true);
AddDEF("serverslistupdate", "");
AddDEF("fadeoutmusic", true);
diff --git a/src/gui/chatwindow.cpp b/src/gui/chatwindow.cpp
index 1065501b7..f5618a279 100644
--- a/src/gui/chatwindow.cpp
+++ b/src/gui/chatwindow.cpp
@@ -215,6 +215,7 @@ ChatWindow::ChatWindow():
mChatHistoryIndex(0),
mAwayLog(),
mHighlights(),
+ mGlobalsFilter(),
mGMLoaded(false),
mHaveMouse(false),
mAutoHide(config.getBoolValue("autohideChat")),
@@ -291,9 +292,11 @@ ChatWindow::ChatWindow():
initTradeFilter();
loadCustomList();
parseHighlights();
+ parseGlobalsFilter();
config.addListener("autohideChat", this);
config.addListener("showBattleEvents", this);
+ config.addListener("globalsFilter", this);
enableVisibleSound(true);
}
@@ -1683,6 +1686,18 @@ void ChatWindow::parseHighlights()
mHighlights.push_back(player_node->getName());
}
+void ChatWindow::parseGlobalsFilter()
+{
+ mGlobalsFilter.clear();
+ if (!player_node)
+ return;
+
+ splitToStringVector(mGlobalsFilter, config.getStringValue(
+ "globalsFilter"), ',');
+
+ mHighlights.push_back(player_node->getName());
+}
+
bool ChatWindow::findHighlight(const std::string &str)
{
return findI(str, mHighlights) != std::string::npos;
@@ -1708,6 +1723,8 @@ void ChatWindow::optionChanged(const std::string &name)
mAutoHide = config.getBoolValue("autohideChat");
else if (name == "showBattleEvents")
mShowBattleEvents = config.getBoolValue("showBattleEvents");
+ else if (name == "globalsFilter")
+ parseGlobalsFilter();
}
void ChatWindow::mouseMoved(gcn::MouseEvent &event)
@@ -1768,3 +1785,11 @@ void ChatWindow::logicChildren()
BLOCK_END("ChatWindow::logicChildren")
}
#endif
+
+void ChatWindow::addGlobalMessage(const std::string &line)
+{
+ if (debugChatTab && findI(line, mGlobalsFilter) != std::string::npos)
+ debugChatTab->chatLog(line, BY_OTHER);
+ else
+ localChatTab->chatLog(line, BY_GM);
+}
diff --git a/src/gui/chatwindow.h b/src/gui/chatwindow.h
index 67f87be1a..80b59b8d7 100644
--- a/src/gui/chatwindow.h
+++ b/src/gui/chatwindow.h
@@ -273,6 +273,8 @@ class ChatWindow final : public Window,
void parseHighlights();
+ void parseGlobalsFilter();
+
bool findHighlight(const std::string &str) A_WARN_UNUSED;
void copyToClipboard(const int x, const int y) const;
@@ -293,6 +295,8 @@ class ChatWindow final : public Window,
void widgetResized(const gcn::Event &event) override;
+ void addGlobalMessage(const std::string &line);
+
#ifdef USE_PROFILER
void logicChildren();
#endif
@@ -367,6 +371,7 @@ class ChatWindow final : public Window,
unsigned int mChatHistoryIndex;
std::list<std::string> mAwayLog;
StringVect mHighlights;
+ StringVect mGlobalsFilter;
bool mGMLoaded;
bool mHaveMouse;
bool mAutoHide;
diff --git a/src/gui/setup_chat.cpp b/src/gui/setup_chat.cpp
index 91a9dd859..3a81119ba 100644
--- a/src/gui/setup_chat.cpp
+++ b/src/gui/setup_chat.cpp
@@ -186,6 +186,10 @@ Setup_Chat::Setup_Chat(const Widget2 *const widget) :
"highlightWords", this, "highlightWordsEvent");
// TRANSLATORS: settings option
+ new SetupItemTextField(_("Globals ignore names (separated by comma)"), "",
+ "globalsFilter", this, "globalsFilterEvent");
+
+ // TRANSLATORS: settings option
new SetupItemCheckBox(_("Show MVP messages"), "",
"showMVP", this, "showMVPEvent");
diff --git a/src/net/ea/chathandler.cpp b/src/net/ea/chathandler.cpp
index c8259bc91..a7879f6fc 100644
--- a/src/net/ea/chathandler.cpp
+++ b/src/net/ea/chathandler.cpp
@@ -356,7 +356,8 @@ void ChatHandler::processChat(Net::MessageIn &msg, const bool normalChat,
}
else if (localChatTab)
{
- localChatTab->chatLog(chatMsg, BY_GM);
+ if (chatWindow)
+ chatWindow->addGlobalMessage(chatMsg);
}
BLOCK_END("ChatHandler::processChat")
}