00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef ArmageTron_tDirectories_H
00030 #define ArmageTron_tDirectories_H
00031
00032 #include <fstream>
00033 #include "tArray.h"
00034 #include "tString.h"
00035
00036 class tPath
00037 {
00038 public:
00039 bool Open ( std::ifstream& f,
00040 const char* filename ) const;
00041
00042 bool Open ( std::ofstream& f,
00043 const char* filename,
00044 std::ios::openmode mode = std::ios::out,
00045 bool sensitive = false ) const;
00046
00047 bool Open ( std::fstream& f,
00048 const char* filename ) const;
00049
00050 tString GetReadPath ( const char* filename ) const;
00051 tString GetWritePath ( const char* filename ) const;
00052 static bool IsValidPath( char const * filename );
00053
00054 tString GetPaths(void) const;
00055
00056 tPath(){};
00057 virtual ~tPath(){};
00058 protected:
00059 virtual void Paths ( tArray< tString >& paths ) const = 0;
00060 };
00061
00062 class tPathResource: public tPath {
00063 public:
00064 tString GetWritePath(const char *filename) const;
00065 static tString GetDirPath();
00066 private:
00067 void Paths(tArray< tString >& paths) const;
00068 };
00069
00070 class tPathScripts: public tPath {
00071 public:
00072 static tString GetDirPath();
00073 private:
00074 void Paths ( tArray< tString >& paths ) const;
00075 };
00076
00077 #ifdef DEDICATED
00078 class tPathWebroot: public tPath
00079 {
00080 public:
00081 static tString GetDirPath();
00082 private:
00083 void Paths ( tArray< tString >& paths ) const;
00084 };
00085 #endif
00086
00087 class tDirectories
00088 {
00089 public:
00090 enum { eGetFilesAllFiles = 0, eGetFilesFilesOnly = 1, eGetFilesDirsOnly = 2 };
00091
00092 static const tPath& Data();
00093 static const tPath& Music();
00094 static const tPath& Config();
00095 static const tPath& Var();
00096 static const tPath& Screenshot();
00097 static const tPathResource& Resource();
00098 static const tPath& Scripts();
00099
00100 #ifdef DEDICATED
00101 static const tPathWebroot& Webroot();
00102 #endif
00103
00104 static void SetData( const tString& dir );
00105 static void SetUserData( const tString& dir );
00106 static void SetConfig( const tString& dir );
00107 static void SetUserConfig( const tString& dir );
00108 static void SetVar( const tString& dir );
00109 static void SetScreenshot( const tString& dir );
00110 static void SetResource( const tString& dir );
00111 static void SetAutoResource( const tString& dir );
00112 static void SetIncludedResource( const tString& dir );
00113
00114
00115
00116 static void GetFiles( const tString& dir, const tString& fileSpec,
00117 tArray< tString >& files, int flag = eGetFilesAllFiles );
00118
00119
00120 static bool FileMatchesWildcard( const char *str, const char *pattern,
00121 bool ignoreCase = true );
00122
00123
00124 static tString& FileNameToMenuName( const char* fileName, tString& menuName );
00125
00126
00127 static void GetSpecList( const tString& fileSpec, tArray< tString >& specList );
00128
00129
00130 static void SortFiles( tArray< tString >& files );
00131 };
00132
00133 #endif