summaryrefslogtreecommitdiffstats
path: root/src/crsm.cpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2017-04-06 17:22:23 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2017-04-06 17:22:52 +0200
commit21d4d5f0de6bd8ed1cdab4f7fe6b9596dd390252 (patch)
tree53af18c9eb2098721dca970f0316d832938b231e /src/crsm.cpp
parent3fe710cb029522b86ef27c322f0cb793b1368051 (diff)
downloadmanager-21d4d5f0de6bd8ed1cdab4f7fe6b9596dd390252.tar.gz
manager-21d4d5f0de6bd8ed1cdab4f7fe6b9596dd390252.zip
Move clonk control specific parts into ClonkControl
There are still many clonk commands hardcoded through the pass-CRSM-Commands
Diffstat (limited to 'src/crsm.cpp')
-rw-r--r--src/crsm.cpp76
1 files changed, 38 insertions, 38 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index 754e73c..86f3f70 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -14,6 +14,7 @@
CRSM::CRSM(QObject *parent) :
QObject(parent), Session(this), parser(Session)
{
+ control.setController(this);
parser.addTarget(this);
qsrand((uint)QDateTime::currentMSecsSinceEpoch());
@@ -62,7 +63,7 @@ CRSM::CRSM(QObject *parent) :
if(processManager->isRunning())
{
Session.read(Config.CRSM.SessionFile, false);
- writeToServer("Der Server Manager läuft wieder.\n");
+ control.serverMessage("Der Server Manager läuft wieder.");
if(Session.State == CRSMSession::Running)
{
watchdog();
@@ -258,7 +259,7 @@ void CRSM::clientMessage(ClientInfo& client, const QString& message, ClonkOutput
}
if(client.floodCheck(Config.Clonk.Chat.AntiFlood.Count, Config.Clonk.Chat.AntiFlood.Time, QDateTime(QDate::currentDate(), time)))
{
- kick(client.pcName, "Flooding! Maximal " + QString::number(Config.Clonk.Chat.AntiFlood.Count) + " Nachrichten in " + QString::number(Config.Clonk.Chat.AntiFlood.Time) + "s");
+ kick(client, "Flooding! Maximal " + QString::number(Config.Clonk.Chat.AntiFlood.Count) + " Nachrichten in " + QString::number(Config.Clonk.Chat.AntiFlood.Time) + "s");
}
else if(type == Sound)
{
@@ -302,7 +303,7 @@ void CRSM::clientConnected(const ClientInfo& client)
void CRSM::clientRemoved(const ClientInfo& client, const QString& reason)
{
- writeToServer(QString(client.nick +" ist ein L34V0R!\n"));
+ control.serverMessage(client.nick +" ist ein L34V0R!");
if(Session.IRC.UseIngameChat)
{
@@ -314,7 +315,7 @@ void CRSM::clientRemoved(const ClientInfo& client, const QString& reason)
Session.Clonk.LeaveAdmins.insert(client, QDateTime::currentDateTime());
afkAdminTimer.stop();
Session.AfkAdmin = false;
- writeToServer("Rundenadmin wurde freigegeben.\n");
+ control.serverMessage("Rundenadmin wurde freigegeben.");
Session.Clonk.Admin.clear();
}
@@ -326,7 +327,7 @@ void CRSM::clientRemoved(const ClientInfo& client, const QString& reason)
}
else if(Session.Clonk.Clients.size() == 0 && Config.Clonk.Server.EmptyTimer != -1 && (Session.CountDown == -1 || Session.CountDown > Config.Clonk.Server.EmptyTimer))
{
- writeToServer("/start " + QString::number(Config.Clonk.Server.EmptyTimer) + "\n");
+ control.setCountdown(Config.Clonk.Server.EmptyTimer);
}
}
@@ -340,7 +341,7 @@ void CRSM::gameStarted()
Stats.AddScenarioStart(Session.Scenario.wishClient, scenarioFileName(Session.Scenario.name));
if(!Session.League)
{
- writeToServer(QString("/set maxplayer 0\n"));
+ control.setCommand("maxplayer 0");
}
setSessionState(CRSMSession::Running);
watchdog();
@@ -547,7 +548,7 @@ void CRSM::ircMessageReceived(IrcMessage *message)
if(joinChannel == Config.IRC.IngameChannel && Session.IRC.UseIngameChat)
{
- writeToServer("[IRC] " + message->nick() + " hat den Channel betreten." + "\n");
+ control.serverMessage("[IRC] " + message->nick() + " hat den Channel betreten.");
}
else
ircCheckUserStatus(ClientInfo::ircClient(message->nick()), ClientInfo::ircClient(message->nick()), &CRSM::ircModCmd);
@@ -581,7 +582,7 @@ void CRSM::ircMessageReceived(IrcMessage *message)
QString leaveChannel = partMessage->channel();
if(leaveChannel == Config.IRC.IngameChannel && Session.IRC.UseIngameChat)
{
- writeToServer("[IRC] " + message->nick() + " hat den Channel verlassen." + "\n");
+ control.serverMessage("[IRC] " + message->nick() + " hat den Channel verlassen.");
}
}
else if(message->type() == IrcMessage::Mode)
@@ -626,13 +627,13 @@ void CRSM::greet(QString pcName)
return;
}
- writeToServer(QString("Hallo, " + info.nick + "!\n"));
+ control.serverMessage("Hallo, " + info.nick + "!");
if(Session.Clonk.LeaveAdmins.contains(info))
{
qint64 timeGone;
if((timeGone = Session.Clonk.LeaveAdmins.value(info).secsTo(QDateTime::currentDateTime())) < Config.Clonk.Chat.RegainAdminTime && (!Session.Clonk.Admin.empty() || !Session.IRC.Admin.empty()))
{
- writeToServer(info.nick + "! Der Rundenadmin wurde freigegeben, weil du das Spiel verlassen hast.\nDu hast noch " + QString::number(Config.Clonk.Chat.RegainAdminTime - timeGone) + "s Zeit um den Rundenadmin zurückzuholen.\n");
+ control.serverMessage(info.nick + "! Der Rundenadmin wurde freigegeben, weil du das Spiel verlassen hast.\nDu hast noch " + QString::number(Config.Clonk.Chat.RegainAdminTime - timeGone) + "s Zeit um den Rundenadmin zurückzuholen.");
}
else
{
@@ -696,13 +697,13 @@ void CRSM::newManagementData()
}
else
{
- writeToServer(data + "\n");
+ control.rawCommand(command);
}
}
else
{
const QString& msg = ClientInfo::managementClient(conn).toString(true) + " " + data + "\n";
- writeToServer(msg);
+ control.serverMessage(msg);
if(Session.IRC.UseIngameChat)
{
sendIrcMessage(msg, Config.IRC.IngameChannel, false, false);
@@ -1667,7 +1668,7 @@ void CRSM::respond(const ClientInfo &client, const QString &message, const Respo
switch(client.interface)
{
case Clonk:
- writeToServer(message);
+ control.serverMessage(message);
break;
case IRC:
foreach(const QString line, message.split('\n', QString::SkipEmptyParts))
@@ -1772,12 +1773,15 @@ void CRSM::replayOutputBuffer(QTcpSocket *socket, bool clear)
}
}
-void CRSM::announceInfo(const QString &info)
+void CRSM::announceInfo(const QString &info, bool useOutgameChannel)
{
out(info);
if(Config.IRC.Use)
{
- sendIrcMessage(info, Config.IRC.Channel, false, false);
+ if(useOutgameChannel)
+ {
+ sendIrcMessage(info, Config.IRC.Channel, false, false);
+ }
if(Config.IRC.UseIngameChat)
{
sendIrcMessage(info, Config.IRC.IngameChannel, false, false);
@@ -1820,9 +1824,9 @@ bool CRSM::scenAllowed(const ScenarioSettings &scen, const ClientInfo &client, U
return true;
}
-void CRSM::kick(const QString& pcName, const QString& reason)
+void CRSM::kick(const ClientInfo& client, const QString& reason)
{
- writeToServer("/kick " + pcName + (reason.isEmpty() ? QString("") : QString(" ") + reason) + "\n");
+ control.kick(client, reason);
}
void CRSM::prepareAndConnectIrc()
@@ -1867,11 +1871,7 @@ void CRSM::afkAdminTimeout()
{
Session.IRC.Admin.clear();
Session.Clonk.Admin.clear();
- writeToServer("Der Rundenadmin war zu lange AFK und wurde freigegeben.\n");
- if(Session.IRC.UseIngameChat)
- {
- sendIrcMessage("Der Rundenadmin war zu lange AFK und wurde freigegeben.\n", Config.IRC.IngameChannel, false, false);
- }
+ announceInfo("Der Rundenadmin war zu lange AFK und wurde freigegeben.", false);
Session.AfkAdmin = false;
}
@@ -2272,11 +2272,11 @@ void CRSM::handleIrcMessage(const ClientInfo &client, QString message, const QSt
{
if(action)
{
- writeToServer("/me [IRC] " + client.nick + " " + message + "\n");
+ control.serverMessage("[IRC] " + client.nick + " " + message, true);
}
else
{
- writeToServer("[IRC]<" + client.nick + "> " + message + "\n");
+ control.serverMessage("[IRC]<" + client.nick + "> " + message);
}
}
else if(!action && !(command = getCommand(message)).isEmpty())
@@ -2305,7 +2305,7 @@ void CRSM::handleIrcMessage(const ClientInfo &client, QString message, const QSt
writeMessage = "[IRC]<" + client.nick + "> ";
}
writeMessage += message;
- writeToServer(writeMessage + "\n");
+ control.serverMessage(writeMessage);
handled = true;
}
}
@@ -2345,7 +2345,7 @@ void CRSM::watchdog()
{
watchDogTimer.start(Config.Clonk.Server.Watchdog.Timeout * 1000);
watchDogString = GetRandomString(20);
- writeToServer("/watchdog " + watchDogString + "\n");
+ control.watchdog(watchDogString);
}
else
{
@@ -2490,12 +2490,12 @@ CMD_FUNCTION_IMPL(help)
}
CMD_FUNCTION_IMPL(passToClonk)
- writeToServer('/' + cmd + ' ' + args + '\n');
+ control.rawCommand(cmd + ' ' + args);
return Success;
}
CMD_FUNCTION_IMPL(passToClonkGrouped)
- writeToServer('/' + cmd.split(' ').last() + ' ' + args + '\n');
+ control.rawCommand(cmd.split(' ').last() + ' ' + args);
return Success;
}
@@ -2573,10 +2573,10 @@ CMD_FUNCTION_IMPL(afkAdmin)
{
respond(client, "Der Rundenadmin wird nach weiteren " + QString::number(Config.Hosting.AfkAdminTime) + "s Inaktivität freigegeben.\n");
}
- writeToServer("/alert\n");
+ control.alert();
if(!Session.Clonk.Admin.empty())
{
- writeToServer(Session.Clonk.Admin.nick + "! Wenn du dich nicht in den nächsten " + QString::number(Config.Hosting.AfkAdminTime) + "s meldest, wird der Rundenadmin freigegeben.\n");
+ control.serverMessage(Session.Clonk.Admin.nick + "! Wenn du dich nicht in den nächsten " + QString::number(Config.Hosting.AfkAdminTime) + "s meldest, wird der Rundenadmin freigegeben.");
}
if(!Session.IRC.Admin.empty())
{
@@ -2891,7 +2891,7 @@ CMD_FUNCTION_IMPL(passToClonkPcName)
respond(client, "Moderatoren können nur von anderen Moderatoren gekickt werden.\n");
return RightsFail;
}
- writeToServer("/" + cmd + " " + info.pcName + "\n");
+ control.rawCommand(cmd + " " + info.pcName);
return Success;
}
@@ -2925,13 +2925,13 @@ CMD_FUNCTION_IMPL(noadmin)
}
else
{
- static const QString msg("Rundenadmin wurde freigegeben.\n");
+ static const QString msg("Rundenadmin wurde freigegeben.");
Session.IRC.Admin.clear();
Session.Clonk.Admin.clear();
respond(client, msg);
if(client.interface == IRC)
{
- writeToServer(msg);
+ control.serverMessage(msg);
}
}
return Success;
@@ -2978,7 +2978,7 @@ CMD_FUNCTION_IMPL(passToClonkNumeric)
}
else
{
- writeToServer("/" + cmd + " " + QString::number(number) + "\n");
+ control.rawCommand(cmd + " " + QString::number(number));
return Success;
}
}
@@ -2986,7 +2986,7 @@ CMD_FUNCTION_IMPL(passToClonkNumeric)
CMD_FUNCTION_IMPL(passToClonkNumericOrEmpty)
if(args.isEmpty())
{
- writeToServer("/" + cmd + "\n");
+ control.rawCommand(cmd);
return Success;
}
else
@@ -3003,7 +3003,7 @@ CMD_FUNCTION_IMPL(passToClonkOnOff)
}
else
{
- writeToServer("/" + cmd + " " + args + "\n");
+ control.rawCommand(cmd + " " + args);
return Success;
}
}
@@ -3085,7 +3085,7 @@ CMD_FUNCTION_IMPL(exitDetach)
}
CMD_FUNCTION_IMPL(exitUpdate)
- writeToServer("Der Server Manager wird upgedatet. Befehle funktionieren temporär nicht.\n");
+ control.serverMessage("Der Server Manager wird upgedatet. Befehle funktionieren temporär nicht.");
return exitDetach(cmd, "Updating...", client, userType);
}
@@ -3150,7 +3150,7 @@ CMD_FUNCTION_IMPL(grouphelp)
}
CMD_FUNCTION_IMPL(setRaw)
- writeToServer("/set " + args + '\n');
+ control.setCommand(args);
return Success;
}