#pragma once #include #include #include class CRSM; #define CMD_FUNCTION(name) CmdResult name(const QString& cmd, const QString& args, const ClientInfo& client, UserType userType) #define CMD_FUNCTION_IMPL(name) CmdResult CRSM::name(const QString& cmd, const QString& args, const ClientInfo& client, UserType userType) { (void)cmd; (void)args; (void)client; (void)userType; enum UserType { User = 0, Admin = 1, Moderator = 2, Max = Moderator }; enum CmdResult { Success = 0, SyntaxFail = 1, RightsFail = 2, UnknownCommand = 3 }; using CmdFunction = CmdResult (CRSM::*)(const QString&, const QString&, const ClientInfo&, UserType); const QMap userTypeStrings { {User, "Benutzer"}, {Admin, "Rundenadmin oder Moderator"}, {Moderator, "Moderator"} }; struct CmdFunctionRef { CmdFunction func = nullptr; int interfaces = Clonk | IRC; UserType userType = User; QString shortDescription = ""; QString longDescription = ""; QString name = ""; QString argList = ""; CmdFunctionRef(QString name, CmdFunction func, int interfaces, UserType userType, const QString& shortDescription = "", QString argList = "", const QString &longDescription = "") : func(func), interfaces(interfaces), userType(userType), shortDescription(shortDescription), longDescription(longDescription), name(name), argList(argList) { } CmdFunctionRef() { } };