summaryrefslogtreecommitdiffstats
path: root/src/crsm.cpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2017-05-30 20:27:57 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2017-05-30 20:27:57 +0200
commit8bd7d77ba07d84b7829201befe30c07b12c5568a (patch)
tree5c0def8fc1e2a05d22891ec18c5e7ab173fb3401 /src/crsm.cpp
parentc20ac02beb8520953d90d0d9114371fe36187ed0 (diff)
downloadmanager-8bd7d77ba07d84b7829201befe30c07b12c5568a.tar.gz
manager-8bd7d77ba07d84b7829201befe30c07b12c5568a.zip
Move IngameChat functionality into its own ClonkOutputInterface
Diffstat (limited to 'src/crsm.cpp')
-rw-r--r--src/crsm.cpp37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index 6adc72f..aa1ef13 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -12,7 +12,7 @@
#define MGMT_BUFFER_FILENAME "CRSM-MGMT-Buffer"
CRSM::CRSM(QObject *parent) :
- QObject(parent), Session(this), parser(Session)
+ QObject(parent), Session(this), parser(Session), ingameChat(Config.IRC.IngameChannel, *this)
{
control.setController(this);
parser.addTarget(this);
@@ -68,6 +68,7 @@ CRSM::CRSM(QObject *parent) :
{
watchdog();
}
+ unRegisterIngameChat();
}
QFile sessionFile(Config.CRSM.SessionFile);
if(sessionFile.exists()) sessionFile.remove();
@@ -286,14 +287,6 @@ bool CRSM::clientMessage(ClientInfo& client, const QString& message, ClonkOutput
}
return true;
}
- else if(Session.IRC.UseIngameChat)
- {
- sendIrcMessage("[Clonk]<" + client.nick+ "> " + message, Config.IRC.IngameChannel, false, false);
- }
- }
- else if(Session.IRC.UseIngameChat)
- {
- sendIrcMessage("[Clonk] " + client.nick + " " + message, Config.IRC.IngameChannel, true, false);
}
}
return false;
@@ -306,10 +299,6 @@ bool CRSM::clientConnected(const ClientInfo& client)
connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater()));
greetMapper.setMapping(timer, client.pcName);
timer->start(1000);
- if(Session.IRC.UseIngameChat)
- {
- sendIrcMessage("[Clonk] " + client.toString() + " verbunden.", Config.IRC.IngameChannel, false, false);
- }
if(Session.CountDown != -1 && Session.CountDown <= Config.Clonk.Server.JoinStopCountDown)
{
control.abortCountdown();
@@ -319,13 +308,9 @@ bool CRSM::clientConnected(const ClientInfo& client)
bool CRSM::clientRemoved(const ClientInfo& client, const QString& reason)
{
+ Q_UNUSED(reason);
control.serverMessage(client.nick + " ist ein L34V0R!");
- if(Session.IRC.UseIngameChat)
- {
- sendIrcMessage("[Clonk] " + client.toString() + " entfernt (" + reason + ").", Config.IRC.IngameChannel, false, false);
- }
-
if(client == Session.Clonk.Admin)
{
Session.Clonk.LeaveAdmins.insert(client, QDateTime::currentDateTime());
@@ -859,6 +844,7 @@ void CRSM::startScen(const ScenarioSettings &scen, QStringList argList)
Session.Scenario = scen;
Session.IRC.UseIngameChat = Config.IRC.UseIngameChat;
+ unRegisterIngameChat();
Session.Clonk.Server.pcName = Config.Auto.Volatile.Clonk.ServerPCName;
Session.Clonk.Server.nick = Config.Auto.Volatile.Clonk.ServerNick;
@@ -1325,6 +1311,7 @@ QString CRSM::ircActivateIngameChat(bool activated)
if(Session.IRC.UseIngameChat != activated)
{
Session.IRC.UseIngameChat = activated;
+ unRegisterIngameChat();
ircSetIngameChannelTopic();
return "Ingamechat wurde " + (Session.IRC.UseIngameChat ? QString("") : QString("de")) + "aktiviert.";
}
@@ -2377,6 +2364,18 @@ void CRSM::watchdog()
}
}
+void CRSM::unRegisterIngameChat()
+{
+ if(Session.IRC.UseIngameChat)
+ {
+ parser.addTarget(&ingameChat);
+ }
+ else
+ {
+ parser.removeTarget(&ingameChat);
+ }
+}
+
CMD_FUNCTION_IMPL(help)
bool recursive = args.startsWith("recursive ") && client.interface == Management;
ClientInterface interface = client.interface;
@@ -2896,7 +2895,7 @@ CMD_FUNCTION_IMPL(io)
CMD_FUNCTION_IMPL(passToClonkPcName)
if(args == Config.Auto.Volatile.Clonk.ServerNick || args == Config.Auto.Volatile.Clonk.ServerPCName)
- {
+ { // FIXME: wrong cmd for passToClonkPcNameGrouped
respond(client, Config.CRSM.CommandSigns.first() + cmd + " kann nicht auf den Server angewendet werden!\n");
return Success;
}