diff options
Diffstat (limited to 'crsm.h')
| -rw-r--r-- | crsm.h | 75 |
1 files changed, 67 insertions, 8 deletions
@@ -1,5 +1,4 @@ -#ifndef CRSM_H -#define CRSM_H +#pragma once #include <QObject> #include <QProcess> @@ -15,9 +14,42 @@ #include <Irc> #include <IrcConnection> #include <IrcCommand> +#include <QSignalMapper> + +#include "ClientInfo.hpp" + +#define CONFIG_FILE_NAME "CrServerManager.conf" +#define CUR_SCEN_FILE_NAME "curscen.txt" +#define LAST_SCEN_FILE_NAME "lastscen.txt" +#define SCOREBOARD_FILE_NAME settings["ClonkDirectory"] + "scoreboard.html" + +#ifdef Q_OS_LINUX64 +#define C4GROUP_EXECUTABLE "c4group64" +#else +#define C4GROUP_EXECUTABLE "c4group" +#endif class CRSM : public QObject { +private: + enum IrcModOperations { + ModCheck, + ModInfo, + SkipScen, + ClearUserList, + SkipCurrentScen, + Autohost, + NoAutohost, + ModHelp, + Kill, + IO, + CheckOnly, + NewAlias, + AliasWishes, + IngameChat + }; + + Q_OBJECT public: explicit CRSM(QObject *parent = 0); @@ -35,24 +67,38 @@ private slots: void readLog(); void scenarioFinished(); void ircMessageReceived(IrcMessage* message); + void greet(QString pcName); private: QProcess *serverprocess; QStringList scenlist; QStringList userlist; QStringList args; + QStringList ircModChecks; + QStringList ircMods; + QString aliasWishEditor = ""; + QString currentAliasWish = ""; + QMap<QString, QList<QPair<IrcModOperations, QString>>> ircModFifos; int current; QTextStream *qout; QTextStream *qin; bool finish; QMap<QString, QString> settings; QMap<QString, QString> session; -// QStringList waitinggreets; + QMap<QString, ClientInfo> clients; QStringList greeted; QMap<QString, QStringList> lists; + QMap<QString, QMap<QString, QString>> maps; int clientcount; - IrcConnection *connection; + IrcConnection *connection = 0; bool autoHost = true; + QSignalMapper greetMapper; + ClientInfo sessionAdmin; + QFile *logfile; + QTextStream logstream; + QTextCodec *codec; + QStringList ircModIOList; + QString writtenToServer; void startScen(QString, QStringList); void readConfig(); @@ -62,8 +108,21 @@ private: void cleanUp(); bool scenExists(QString filePath); QString listScenarios(QString commandArgs); - QFile *logfile; - QTextStream *logstream; + QString printQueue(); + //QByteArray toClonkFormat(const QString&); + void ircCheckModCmd(const QString &nick, IrcModOperations operation, QString arg = ""); + void ircModOperation(const QString &nick, IrcModOperations operation, QString arg); + void ircModOperation(const QString &nick, QPair<IrcModOperations, QString> operationArg); + QString skipScen(); + void skipCurrent(); + void writeToServer(const QString& message); + void writeConfig(); + QString addAliasWish(const QString& param); + void ircModJoined(const QString& nick); + void informModsAboutAliasWish(); + void editAliasWishes(); + void editAliasWishes(const QString &message); + void stopAliasWishEditing(); + QString ircActivateIngameChat(bool activated = true); + QStringList listC4Folder(const QString &path); }; - -#endif // CRSM_H |
