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;
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