#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #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); ~CRSM(); void start(); signals: private slots: void readServerOutput(); void processError(); void readInput(); void nextScen(); void printAdditionalHelp(); 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>> ircModFifos; int current; QTextStream *qout; QTextStream *qin; bool finish; QMap settings; QMap session; QMap clients; QStringList greeted; QMap lists; QMap> maps; int clientcount; 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(); void readScenarios(); QMap defaultSettings(); void listC4Folders(); void cleanUp(); bool scenExists(QString filePath); QString listScenarios(QString commandArgs); 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 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); };