comparison system/file.h @ 53:ddbcbd000206

* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons * ParseMoji moved to TextStream * Some cleaning (0 -> NULL when needed, removal of useless returns, ...)
author thib
date Sun, 19 Apr 2009 11:44:05 +0000
parents 15a18fbe6f21
children 4416cfac86ae
comparison
equal deleted inserted replaced
52:15a18fbe6f21 53:ddbcbd000206
1 /* file.h : KANON の圧縮ファイル・PDT ファイル(画像ファイル)の展開の 1 /* file.h : KANON の圧縮ファイル・PDT ファイル(画像ファイル)の展開の
2 * ためのクラス 2 * ためのクラス
3 * class FILESEARCH : ファイルの管理を行う 3 * class FileSearcher : ファイルの管理を行う
4 * class ARCINFO : 書庫ファイルの中の1つのファイルを扱うクラス 4 * class ARCINFO : 書庫ファイルの中の1つのファイルを扱うクラス
5 * class PDTCONV : PDT ファイルの展開を行う。 5 * class PDTCONV : PDT ファイルの展開を行う。
6 */ 6 */
7 7
8 /* 8 /*
85 return c; 85 return c;
86 } 86 }
87 87
88 88
89 /********************************************* 89 /*********************************************
90 ** FILESEARCH: 90 ** FileSearcher:
91 ** 書庫ファイル/ディレクトリを含め、 91 ** 書庫ファイル/ディレクトリを含め、
92 ** 全ファイルの管理を行う。 92 ** 全ファイルの管理を行う。
93 ** 93 **
94 ** 最初に、設定ファイルからファイルの種類ごとに 94 ** 最初に、設定ファイルからファイルの種類ごとに
95 ** 実際に入っているディレクトリ、書庫を設定する 95 ** 実際に入っているディレクトリ、書庫を設定する
104 class SCN2kFILE; 104 class SCN2kFILE;
105 /* ARCINFO はファイルを読み込むために必要 */ 105 /* ARCINFO はファイルを読み込むために必要 */
106 class ARCINFO; 106 class ARCINFO;
107 class ARCFILE_ATOM; 107 class ARCFILE_ATOM;
108 108
109 class KEYHOLDER { 109 class KeyHolder {
110 public: 110 public:
111 static KeyHolder* GetInstance(void);
112 static void Quit(void);
113
111 void SetKey(char[16]); 114 void SetKey(char[16]);
112 void SetKey2(char[33]); 115 void SetKey2(char[33]);
113 void GuessKey(char*); 116 void GuessKey(char*);
117
118 private:
119 KeyHolder(){}
120 ~KeyHolder(){}
121
122 public:
114 const char* GetKey(void); 123 const char* GetKey(void);
124
115 private: 125 private:
116 char key[16]; 126 char key[16];
117 }; 127 static KeyHolder* _singleton;
118 128 };
119 class FILESEARCH { 129
130 class FileSearcher {
120 public: 131 public:
121 #define TYPEMAX 14 132 #define TYPEMAX 14
122 enum FILETYPE { 133 enum FILETYPE {
123 /* 一応、0 - 15 まで reserved */ 134 /* 一応、0 - 15 まで reserved */
124 ALL = 1, /* dat/ 以下のファイル(デフォルトの検索先) */ 135 ALL = 1, /* dat/ 以下のファイル(デフォルトの検索先) */
134 BGM = 11, /* default: BGM */ 145 BGM = 11, /* default: BGM */
135 MOV = 12, /* default : MOV */ 146 MOV = 12, /* default : MOV */
136 GAN = 13 /* default : MOV */ 147 GAN = 13 /* default : MOV */
137 }; 148 };
138 enum ARCTYPE {ATYPE_DIR, ATYPE_ARC, ATYPE_SCN2k}; 149 enum ARCTYPE {ATYPE_DIR, ATYPE_ARC, ATYPE_SCN2k};
139 private: 150
140 /* InitRoot() の時点で初期化される変数 */ 151 public:
141 DIRFILE* root_dir; 152 static FileSearcher* GetInstance(void);
142 DIRFILE* dat_dir; 153 static void Quit(void);
143 ARCFILE* searcher[TYPEMAX]; 154
144 /* ファイルの存在位置の information */
145 ARCTYPE is_archived[TYPEMAX];
146 const char* filenames[TYPEMAX];
147 /* デフォルトの information */
148 static ARCTYPE default_is_archived[TYPEMAX];
149 static const char* default_dirnames[TYPEMAX];
150 public:
151 FILESEARCH(void);
152 ~FILESEARCH();
153 /* 初めにゲームのデータがあるディレクトリを設定する必要がある */ 155 /* 初めにゲームのデータがあるディレクトリを設定する必要がある */
154 int InitRoot(char* root); 156 int InitRoot(char* root);
155 /* ファイルの型ごとの情報をセットする */ 157 /* ファイルの型ごとの情報をセットする */
156 void SetFileInformation(FILETYPE type, ARCTYPE is_arc, 158 void SetFileInformation(FILETYPE type, ARCTYPE is_arc,
157 char* filename); 159 char* filename);
163 class ARCINFO* Find(FILETYPE type, const char* fname, const char* ext=0); 165 class ARCINFO* Find(FILETYPE type, const char* fname, const char* ext=0);
164 /* ある種類のファイルをすべてリストアップ 166 /* ある種類のファイルをすべてリストアップ
165 ** 末尾は NULL pointer 167 ** 末尾は NULL pointer
166 */ 168 */
167 char** ListAll(FILETYPE type); 169 char** ListAll(FILETYPE type);
170
171 private:
172 FileSearcher(void);
173 ~FileSearcher();
174
175 private:
176 /* InitRoot() の時点で初期化される変数 */
177 DIRFILE* root_dir;
178 DIRFILE* dat_dir;
179 ARCFILE* searcher[TYPEMAX];
180 /* ファイルの存在位置の information */
181 ARCTYPE is_archived[TYPEMAX];
182 const char* filenames[TYPEMAX];
183 /* デフォルトの information */
184 static ARCTYPE default_is_archived[TYPEMAX];
185 static const char* default_dirnames[TYPEMAX];
186 static FileSearcher *_singleton;
168 }; 187 };
169 188
170 class ARCINFO { 189 class ARCINFO {
171 protected: 190 protected:
172 /* ファイルそのものの情報 */ 191 /* ファイルそのものの情報 */
229 void CopyRGB(char* image, const char* from); 248 void CopyRGB(char* image, const char* from);
230 void CopyRGBA_rev(char* image, const char* from); 249 void CopyRGBA_rev(char* image, const char* from);
231 void CopyRGB_rev(char* image, const char* from); 250 void CopyRGB_rev(char* image, const char* from);
232 }; 251 };
233 252
234 extern FILESEARCH file_searcher;
235 extern KEYHOLDER key_holder;
236
237 #endif // !defined(__KANON_FILE_H__) 253 #endif // !defined(__KANON_FILE_H__)