00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __GAME_RUNNER_H_
00024 #define __GAME_RUNNER_H_
00025
00026 #include "serverapi/gamerunnerstructs.h"
00027 #include "apprunner.h"
00028 #include "global.h"
00029 #include "pathfinder.h"
00030 #include <QObject>
00031 #include <QString>
00032
00033 class Server;
00034
00035 class MAIN_EXPORT GameRunner : public QObject
00036 {
00037 public:
00038 enum HostMode
00039 {
00040 HOST,
00041 OFFLINE,
00042 DEMO
00043 };
00044
00045 GameRunner(const Server* server);
00046
00050 virtual bool connectParameters(QStringList &args, PathFinder &pf, bool &iwadFound, const QString &connectPassword, const QString &wadTargetDirectory);
00051
00061 Message createHostCommandLine(const HostInfo& hostInfo, CommandLineInfo& cmdLine, HostMode mode);
00062
00070 JoinError createJoinCommandLine(CommandLineInfo& cli, const QString &connectPassword, bool managedDemo);
00071
00075 Message host(const HostInfo& hostInfo, HostMode mode);
00076
00084 Message runExecutable(const CommandLineInfo& cli, bool bWrapWithStandardServerConsole);
00085
00086
00087 protected:
00092 virtual QString argForConnect() const { return "-connect"; }
00093
00101 virtual QString argForConnectPassword() const { return QString(); }
00102
00106 virtual QString argForIwadLoading() const { return "-iwad"; }
00107
00112 virtual QString argForPort() const { return "-port"; }
00113
00117 virtual QString argForPwadLoading() const { return "-file"; }
00118
00122 virtual QString argForDemoPlayback() const { return "-playdemo"; }
00126 virtual QString argForDemoRecord() const { return "-record"; }
00127
00131 virtual QString argForServerLaunch() const { return ""; }
00132
00133 virtual Message hostAppendIwad();
00134 virtual Message hostAppendPwads();
00135 virtual Message hostGetBinary(bool bOfflinePlay);
00136 virtual Message hostGetWorkingDirectory(bool bOfflinePlay);
00137
00143 virtual void hostDMFlags(QStringList& args, const DMFlags& dmFlags) const {};
00144
00153 virtual void hostProperties(QStringList& args) const {};
00154
00155 CommandLineInfo* currentCmdLine;
00156 const HostInfo* currentHostInfo;
00157 const Server* server;
00158 };
00159
00160 #endif