summaryrefslogtreecommitdiffstats
path: root/src/crsm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/crsm.cpp')
-rw-r--r--src/crsm.cpp92
1 files changed, 44 insertions, 48 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index 51136c8..e819b4e 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -183,7 +183,7 @@ void CRSM::readServerOutput()
if(infoMatch.exactMatch(joinExp.cap(1)))
{
const ClientInfo& info = ClientInfo::clonkClient(infoMatch.cap(3), infoMatch.cap(1), infoMatch.cap(2).toInt());
- clients.insert(info.pcName, info);
+ Session.Clonk.Clients.insert(info.pcName, info);
QTimer *timer = new QTimer;
connect(timer, SIGNAL(timeout()), &greetMapper, SLOT(map()));
connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater()));
@@ -243,20 +243,20 @@ void CRSM::readServerOutput()
connection->sendCommand(IrcCommand::createMessage(Config.IRC.IngameChannel, "[Clonk] " + info.toString() + " entfernt" + leaveExp.cap(2)));
}
- if(info == sessionAdmin)
+ if(info == Session.Clonk.Admin)
{
- leaveAdmins.insert(info, QDateTime::currentDateTime());
+ Session.Clonk.LeaveAdmins.insert(info, QDateTime::currentDateTime());
writeToServer("Rundenadmin wurde freigegeben.\n");
- sessionAdmin = ClientInfo();
+ Session.Clonk.Admin.clear();
}
- clients.remove(info.pcName);
+ Session.Clonk.Clients.remove(info.pcName);
}
- if(clients.size() == 0 && userlist.length() > 0 && !Session.UserWish)
+ if(Session.Clonk.Clients.size() == 0 && userlist.length() > 0 && !Session.UserWish)
{
processManager->closeProgFifos();
}
- else if(clients.size() == 0 && Config.Clonk.Server.EmptyTimer != -1 && (Session.CountDown == -1 || Session.CountDown > Config.Clonk.Server.EmptyTimer))
+ 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");
}
@@ -388,10 +388,6 @@ void CRSM::scenarioFinished()
return;
}
Session.clear();
- sessionAdmin = ClientInfo();
- ircAdmin = ClientInfo();
- clients.clear();
- leaveAdmins.clear();
if((autoHost || userlist.length() > 0) && !finish)
nextScen();
else if(!Config.IRC.IngameChannel.isEmpty())
@@ -502,9 +498,9 @@ void CRSM::ircMessageReceived(IrcMessage *message)
{
stopAliasWishEditing();
}
- if(ircAdmin == ClientInfo::ircClient(message->nick()))
+ if(Session.IRC.Admin == ClientInfo::ircClient(message->nick()))
{
- ircAdmin = ClientInfo();
+ Session.IRC.Admin.clear();
}
}
else if(message->type() == IrcMessage::Kick)
@@ -544,20 +540,20 @@ void CRSM::ircMessageReceived(IrcMessage *message)
void CRSM::greet(QString pcName)
{
- if(!clients.contains(pcName))
+ if(!Session.Clonk.Clients.contains(pcName))
return;
- const ClientInfo &info = clients.value(pcName);
+ const ClientInfo &info = Session.Clonk.Clients.value(pcName);
writeToServer(QString("Hallo " + info.nick + "!\n"));
- if(leaveAdmins.contains(info))
+ if(Session.Clonk.LeaveAdmins.contains(info))
{
int timeGone;
- if((timeGone = leaveAdmins.value(info).secsTo(QDateTime::currentDateTime())) < Config.Clonk.Chat.RegainAdminTime && sessionAdmin != ClientInfo())
+ if((timeGone = Session.Clonk.LeaveAdmins.value(info).secsTo(QDateTime::currentDateTime())) < Config.Clonk.Chat.RegainAdminTime && !Session.Clonk.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");
}
else
{
- leaveAdmins.remove(info);
+ Session.Clonk.LeaveAdmins.remove(info);
}
}
}
@@ -1268,13 +1264,13 @@ UserType CRSM::clientUserType(const ClientInfo &client)
case Clonk:
if(Config.Clonk.Chat.Moderators.contains(client.CUID))
return Moderator;
- if(sessionAdmin == client)
+ if(Session.Clonk.Admin == client)
return Admin;
break;
case IRC:
if(ircMods.contains(client.nick))
return Moderator;
- else if(ircAdmin == client)
+ else if(Session.IRC.Admin == client)
return Admin;
break;
case Management:
@@ -1391,20 +1387,20 @@ void CRSM::ircCheckUserStatus(const ClientInfo &requester, const ClientInfo &sub
void CRSM::setIngameAdmin(const ClientInfo &client, const QString& newAdmin)
{
- if(clients.contains(newAdmin))
+ if(Session.Clonk.Clients.contains(newAdmin))
{
- const ClientInfo& info = clients.value(newAdmin);
- if(sessionAdmin == info)
+ const ClientInfo& info = Session.Clonk.Clients.value(newAdmin);
+ if(Session.Clonk.Admin == info)
{
respond(client, info.toString() + " ist bereits Rundenadmin.\n");
}
- sessionAdmin = info;
+ Session.Clonk.Admin = info;
}
else
{
bool notFound = true, ambigous = false;
ClientInfo foundClient;
- foreach(const ClientInfo& client, clients)
+ foreach(const ClientInfo& client, Session.Clonk.Clients)
{
if(client.nick == newAdmin)
{
@@ -1427,16 +1423,16 @@ void CRSM::setIngameAdmin(const ClientInfo &client, const QString& newAdmin)
respond(client, newAdmin + " wurde nicht gefunden!\n");
return;
}
- else if(sessionAdmin == foundClient)
+ else if(Session.Clonk.Admin == foundClient)
{
- respond(client, sessionAdmin.toString() + " ist bereits Rundenadmin!\n");
+ respond(client, Session.Clonk.Admin.toString() + " ist bereits Rundenadmin!\n");
return;
}
else
{
- sessionAdmin = foundClient;
+ Session.Clonk.Admin = foundClient;
}
- respond(client, sessionAdmin.toString() + " wurde als Rundenadmin eingetragen.\n");
+ respond(client, Session.Clonk.Admin.toString() + " wurde als Rundenadmin eingetragen.\n");
}
}
@@ -1537,11 +1533,11 @@ void CRSM::prepareAndConnectIrc()
ClientInfo &CRSM::getClientInfo(const QString &pcName, int cuid, const QString &user)
{
- if(!clients.contains(pcName))
+ if(!Session.Clonk.Clients.contains(pcName))
{
- clients.insert(pcName, ClientInfo::clonkClient(user, pcName, cuid));
+ Session.Clonk.Clients.insert(pcName, ClientInfo::clonkClient(user, pcName, cuid));
}
- return clients[pcName];
+ return Session.Clonk.Clients[pcName];
}
void CRSM::exit()
@@ -1600,7 +1596,7 @@ CMD_FUNCTION_IMPL(admin)
switch(client.interface)
{
case Clonk:
- interfaceAdminPtr = &sessionAdmin;
+ interfaceAdminPtr = &Session.Clonk.Admin;
if(args == Config.Auto.Volatile.Clonk.ServerNick || args == Config.Auto.Volatile.Clonk.ServerPCName)
{
respond(client, "Der Server kann nicht als Rundenadmin eingetragen werden!\n");
@@ -1608,7 +1604,7 @@ CMD_FUNCTION_IMPL(admin)
}
break;
case IRC:
- interfaceAdminPtr = &ircAdmin;
+ interfaceAdminPtr = &Session.IRC.Admin;
break;
default:
return;
@@ -1619,9 +1615,9 @@ CMD_FUNCTION_IMPL(admin)
respond(client, "Du ist bereits Rundenadmin!\n");
return;
}
- else if((ircAdmin != ClientInfo() || sessionAdmin != ClientInfo()) && userType < Admin && !(leaveAdmins.contains(client) && leaveAdmins.value(client).secsTo(QDateTime::currentDateTime()) < Config.Clonk.Chat.RegainAdminTime))
+ else if((!Session.IRC.Admin.empty() || !Session.Clonk.Admin.empty()) && userType < Admin && !(Session.Clonk.LeaveAdmins.contains(client) && Session.Clonk.LeaveAdmins.value(client).secsTo(QDateTime::currentDateTime()) < Config.Clonk.Chat.RegainAdminTime))
{
- respond(client, ircAdmin.toString() + (!ircAdmin.nick.isEmpty() && !sessionAdmin.nick.isEmpty() ? " und " : "") + sessionAdmin.toString() + " ist bereits Rundenadmin!\n");
+ respond(client, Session.IRC.Admin.toString() + (!Session.IRC.Admin.nick.isEmpty() && !Session.Clonk.Admin.nick.isEmpty() ? " und " : "") + Session.Clonk.Admin.toString() + " ist bereits Rundenadmin!\n");
return;
}
else if(args.isEmpty())
@@ -1663,13 +1659,13 @@ CMD_FUNCTION_IMPL(host)
{
userlist << scen;
respond(client, "Szenario " + scen.name + " wurde der Warteschlange" + (scen.league ? " mit Liga" : "") + " hinzugefügt.\n");
- if(userlist.length() == 1 && !Session.UserWish && !Session.Running && Session.Hosting && clients.size() > 0)
+ if(userlist.length() == 1 && !Session.UserWish && !Session.Running && Session.Hosting && Session.Clonk.Clients.size() > 0)
respond(client, "Überrede alle Spieler zu leaven und dein Wunsch wird sofort gehostet ;-)\n");
else if(!Session.Hosting)
{
nextScen();
}
- else if(clients.size() == 0 && !Session.UserWish)
+ else if(Session.Clonk.Clients.size() == 0 && !Session.UserWish)
{
processManager->closeProgFifos();
}
@@ -1824,26 +1820,26 @@ CMD_FUNCTION_IMPL(io)
CMD_FUNCTION_IMPL(pcNamePassToClonk)
ClientInfo info;
- if(clients.contains(args))
+ if(Session.Clonk.Clients.contains(args))
{
- info = clients.value(args);
+ info = Session.Clonk.Clients.value(args);
}
else
{
- foreach(const QString& pcName, clients.keys())
+ foreach(const QString& pcName, Session.Clonk.Clients.keys())
{
if(pcName.compare(args, Qt::CaseInsensitive) == 0)
{
- info = clients.value(pcName);
+ info = Session.Clonk.Clients.value(pcName);
break;
}
}
}
- if(info == ClientInfo())
+ if(info.empty())
{
bool notFound = true, ambigous = false;
ClientInfo foundClient;
- foreach(const ClientInfo& client, clients)
+ foreach(const ClientInfo& client, Session.Clonk.Clients)
{
if(client.nick.compare(args, Qt::CaseInsensitive) == 0)
{
@@ -1888,14 +1884,14 @@ CMD_FUNCTION_IMPL(ingameadmin)
}
CMD_FUNCTION_IMPL(noadmin)
- ircAdmin = ClientInfo();
- sessionAdmin = ClientInfo();
+ Session.IRC.Admin.clear();
+ Session.Clonk.Admin.clear();
respond(client, "Rundenadmin wurde freigegeben.\n");
}
CMD_FUNCTION_IMPL(clientlist)
QString response = "Verbundene Clients (Chatnick (PC-Name)): ";
- foreach(const ClientInfo& connectedClient, clients)
+ foreach(const ClientInfo& connectedClient, Session.Clonk.Clients)
{
if(connectedClient.nick.isEmpty())
continue;
@@ -2061,7 +2057,7 @@ IRC_CHECK_CALLBACK_IMPL(ircSetAdmin)
}
else
{
- ircAdmin = subject;
+ Session.IRC.Admin = subject;
respond(requester, subject.toString() + " wurde als Rundenadmin eingetragen.\n");
}
}