00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __BINARIES_H_
00024 #define __BINARIES_H_
00025
00026 #include "ini/ini.h"
00027 #include "global.h"
00028 #include <QHash>
00029 #include <QObject>
00030 #include <QString>
00031
00032 class EnginePlugin;
00033 class Message;
00034
00035 class MAIN_EXPORT Binaries : public QObject
00036 {
00037 public:
00038 Binaries(const EnginePlugin *plugin);
00039
00046 virtual QString clientBinary(Message& message) const { return obtainBinary(configKeyClientBinary(), Client, message); }
00047
00054 virtual QString clientWorkingDirectory(Message& message) const;
00055
00056 virtual QString configKeyClientBinary() const { return "BinaryPath"; }
00057 virtual QString configKeyOfflineBinary() const { return configKeyClientBinary(); }
00058 virtual QString configKeyServerBinary() const { return "ServerBinaryPath"; }
00059
00066 virtual QString offlineGameBinary(Message& message) const { return obtainBinary(configKeyOfflineBinary(), Offline, message); }
00067
00082 virtual QString offlineGameWorkingDirectory(Message& message) const;
00083
00090 const EnginePlugin* plugin() const { return enginePlugin; }
00091
00098 virtual QString serverBinary(Message& message) const { return obtainBinary(configKeyServerBinary(), TServer, message); }
00099
00114 virtual QString serverWorkingDirectory(Message& message) const;
00115
00116 protected:
00117 enum BinaryType
00118 {
00119 Client,
00120 Offline,
00121 TServer
00122 };
00123
00131 typedef QHash<BinaryType, QString> BinaryNamesDictionary;
00132
00133 static BinaryNamesDictionary binaryNames;
00134
00135 QString obtainBinary(const QString& configKey, BinaryType binaryType, Message& message) const;
00136
00137 const EnginePlugin *enginePlugin;
00138 };
00139
00140 #endif