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