Mercurial > otakunoraifu
comparison system/system_config.cc @ 65:4416cfac86ae
Convert EUC-JP files to UTF8
author | Thibaut Girka <thib@sitedethib.com> |
---|---|
date | Fri, 26 Nov 2010 10:53:15 +0100 |
parents | d7cde171a1de |
children |
comparison
equal
deleted
inserted
replaced
64:045ca45f9610 | 65:4416cfac86ae |
---|---|
1 /* system_config.cc | 1 /* system_config.cc |
2 * gameexe.ini ファイルの読み込み | 2 * gameexe.ini <ゃ茯粋昭 |
3 */ | 3 */ |
4 | 4 |
5 /* | 5 /* |
6 * | 6 * |
7 * Copyright (C) 2000- Kazunori Ueno(JAGARL) <jagarl@creator.club.ne.jp> | 7 * Copyright (C) 2000- Kazunori Ueno(JAGARL) <jagarl@creator.club.ne.jp> |
39 # define dprintf(X) printf X | 39 # define dprintf(X) printf X |
40 #else | 40 #else |
41 # define dprintf(X) | 41 # define dprintf(X) |
42 #endif /* DEBUG_CONFIG */ | 42 #endif /* DEBUG_CONFIG */ |
43 | 43 |
44 #define MAXTOKEN 10 /* = で区切られた領域の最大数 */ | 44 #define MAXTOKEN 10 /* = у阪紊ф */ |
45 #define MAXVARS 32 /* , で区切られた数値の最大数 */ | 45 #define MAXVARS 32 /* , у阪医ゃ紊ф */ |
46 | 46 |
47 // 初期化ファイルの読み込み | 47 // <ゃ茯粋昭 |
48 /* config は 文字列、数列、その複合など、いろいろな形式がありうる */ | 48 /* config 絖医茲綵√ */ |
49 /* 文字列と数列は一般に AyuSys_Config クラスに含める */ | 49 /* 絖医筝 AyuSys_Config 鴻 */ |
50 | 50 |
51 | 51 |
52 /**********************************************************/ | 52 /**********************************************************/ |
53 /* とりあえずハッシュ比較付き文字列 */ | 53 /* 激ユ莠篁絖 */ |
54 class HashStr { | 54 class HashStr { |
55 const char* str; | 55 const char* str; |
56 unsigned int hash; | 56 unsigned int hash; |
57 public: | 57 public: |
58 HashStr(const char*); | 58 HashStr(const char*); |
78 return; /* invalid string */ | 78 return; /* invalid string */ |
79 } | 79 } |
80 char* new_str = new char[strlen(s)+1]; | 80 char* new_str = new char[strlen(s)+1]; |
81 strcpy(new_str, s); | 81 strcpy(new_str, s); |
82 str = new_str; | 82 str = new_str; |
83 /* calc hash... 適当 */ | 83 /* calc hash... 綵 */ |
84 int h = strlen(s); | 84 int h = strlen(s); |
85 while(*s != 0) { | 85 while(*s != 0) { |
86 h = *s + ((h * (0x9449+*s))>>7); | 86 h = *s + ((h * (0x9449+*s))>>7); |
87 s++; | 87 s++; |
88 } | 88 } |
99 hash = orig.hash; | 99 hash = orig.hash; |
100 } | 100 } |
101 | 101 |
102 /********************************************************** | 102 /********************************************************** |
103 **AyuSys_Config_[String | Intlist] : | 103 **AyuSys_Config_[String | Intlist] : |
104 ** 設定の本体 | 104 ** 荐絎篏 |
105 ** original : 元設定 | 105 ** original : 荐絎 |
106 ** old_data : 前回 ClearDiff() したときの設定 | 106 ** old_data : ClearDiff() 荐絎 |
107 ** new_data : ClearDiff() 以降に設定した内容を保存 | 107 ** new_data : ClearDiff() 篁ラ荐絎絎鴻篆絖 |
108 ** データ設定: | 108 ** 若粋┃絎鐚 |
109 ** Init() : 元設定を作成 | 109 ** Init() : 荐絎篏 |
110 ** Set() : 設定を変更 | 110 ** Set() : 荐絎紊 |
111 ** Get() : 最も新しい設定を得る | 111 ** Get() : 違荐絎緇 |
112 ** | 112 ** |
113 ** 変更の記録: | 113 ** 紊眼荐駕 |
114 ** Diff() : 前回のClearDiff() から変更した内容を得る | 114 ** Diff() : ClearDiff() 紊眼絎鴻緇 |
115 ** DiffLen() : Diff() で必要な文字列長を得る | 115 ** DiffLen() : Diff() у荀絖激緇 |
116 ** ClearDiff() : 変更記録を消す | 116 ** ClearDiff() : 紊頑蚊羔 |
117 ** PatchOld() : Diff() で得た記録に基づき、変更前の状態に戻す | 117 ** PatchOld() : Diff() у荐蚊冴ャ紊翫倶祉 |
118 ** PatchNew() : Diff() で得た記録に基づき、変更後の状態に戻す | 118 ** PatchNew() : Diff() у荐蚊冴ャ紊翫倶祉 |
119 ** | 119 ** |
120 ** 元設定からの変更の記録: | 120 ** 荐絎紊眼荐駕 |
121 ** SetOriginal() : 元設定に戻す | 121 ** SetOriginal() : 荐絎祉 |
122 ** DiffOriginal() : 元設定から現在の設定の変更を得る | 122 ** DiffOriginal() : 荐絎憜荐絎紊眼緇 |
123 ** DiffOriginalLen() : DiffOriginal() で必要な文字列長を得る | 123 ** DiffOriginalLen() : DiffOriginal() у荀絖激緇 |
124 ** PatchOriginal() : DiffOriginal() で得た記録に基づき、設定を復旧する | 124 ** PatchOriginal() : DiffOriginal() у荐蚊冴ャ荐絎緇с |
125 */ | 125 */ |
126 | 126 |
127 /************************************************ | 127 /************************************************ |
128 ** AyuSysConfigStringItem | 128 ** AyuSysConfigStringItem |
129 ** 文字列をデータとしてもつ設定項目 | 129 ** 絖若帥よ┃絎 |
130 */ | 130 */ |
131 class AyuSysConfigStringItem { | 131 class AyuSysConfigStringItem { |
132 char* original_data; | 132 char* original_data; |
133 char* old_data; | 133 char* old_data; |
134 char* new_data; | 134 char* new_data; |
158 if (o.new_data) { | 158 if (o.new_data) { |
159 new_data = new char[strlen(o.new_data)+1]; | 159 new_data = new char[strlen(o.new_data)+1]; |
160 strcpy(new_data, o.new_data); | 160 strcpy(new_data, o.new_data); |
161 } | 161 } |
162 } | 162 } |
163 /* 設定:Init で初期化、Set で変更、Get で変更を優先して取り出す */ | 163 /* 荐絎鐚Init уSet у眼Get у眼冴 */ |
164 void Init(int deal, const char* str) { /* deal は無視 */ | 164 void Init(int deal, const char* str) { /* deal ∴ */ |
165 if (original_data) delete[] original_data; | 165 if (original_data) delete[] original_data; |
166 int len = strlen(str); | 166 int len = strlen(str); |
167 original_data = new char[len+1]; | 167 original_data = new char[len+1]; |
168 strcpy(original_data, str); | 168 strcpy(original_data, str); |
169 original_data[len] = '\0'; | 169 original_data[len] = '\0'; |
170 } | 170 } |
171 void Set(int deal, const char* str) { /* deal は無視 */ | 171 void Set(int deal, const char* str) { /* deal ∴ */ |
172 if (new_data) delete[] new_data; | 172 if (new_data) delete[] new_data; |
173 int len = strlen(str); | 173 int len = strlen(str); |
174 new_data = new char[len+1]; | 174 new_data = new char[len+1]; |
175 strcpy(new_data, str); | 175 strcpy(new_data, str); |
176 new_data[len] = '\0'; | 176 new_data[len] = '\0'; |
177 } | 177 } |
178 const char* Get(int deal) const {/* deal は無視 */ | 178 const char* Get(int deal) const {/* deal ∴ */ |
179 if (new_data) return new_data; | 179 if (new_data) return new_data; |
180 else if (old_data) return old_data; | 180 else if (old_data) return old_data; |
181 return original_data; | 181 return original_data; |
182 } | 182 } |
183 const char* GetOriginal(int deal) const { | 183 const char* GetOriginal(int deal) const { |
184 return original_data; | 184 return original_data; |
185 } | 185 } |
186 int Deal(void) const { | 186 int Deal(void) const { |
187 return 1; | 187 return 1; |
188 } | 188 } |
189 /* オリジナルからの変化の調査 : | 189 /* 吾紊茯炊 : |
190 ** DiffOriginal で変化を文字列で取り出し、PatchOriginal で | 190 ** DiffOriginal у絖у冴PatchOriginal |
191 ** 変化を反映 | 191 ** 紊 |
192 */ | 192 */ |
193 int DiffOriginalLen(void) { | 193 int DiffOriginalLen(void) { |
194 if (new_data == NULL) return 0; | 194 if (new_data == NULL) return 0; |
195 return strlen(new_data)+1; | 195 return strlen(new_data)+1; |
196 } | 196 } |
197 void DiffOriginal(string& data) { | 197 void DiffOriginal(string& data) { |
198 if (new_data == NULL) { /* あり得ない */ | 198 if (new_data == NULL) { /* 緇 */ |
199 fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n"); | 199 fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n"); |
200 return; | 200 return; |
201 } | 201 } |
202 char* out_data = new char[strlen(new_data)*2+1]; | 202 char* out_data = new char[strlen(new_data)*2+1]; |
203 char* buf = out_data; | 203 char* buf = out_data; |
261 } | 261 } |
262 }; | 262 }; |
263 | 263 |
264 /************************************************ | 264 /************************************************ |
265 ** AyuSysConfigIntlistItem | 265 ** AyuSysConfigIntlistItem |
266 ** 数値列をデータとしてもつ設定項目 | 266 ** 医ゅ若帥よ┃絎 |
267 */ | 267 */ |
268 class AyuSysConfigIntlistItem { | 268 class AyuSysConfigIntlistItem { |
269 int item_deal; | 269 int item_deal; |
270 int* original_data; | 270 int* original_data; |
271 int* old_data; | 271 int* old_data; |
298 if (o.new_data) { | 298 if (o.new_data) { |
299 new_data = new int[item_deal]; | 299 new_data = new int[item_deal]; |
300 memcpy(new_data, o.new_data, sizeof(int)*item_deal); | 300 memcpy(new_data, o.new_data, sizeof(int)*item_deal); |
301 } | 301 } |
302 } | 302 } |
303 /* 設定:Init で初期化、Set で変更、Get で変更を優先して取り出す */ | 303 /* 荐絎鐚Init уSet у眼Get у眼冴 */ |
304 void Init(int deal, const int* list) { /* deal は無視 */ | 304 void Init(int deal, const int* list) { /* deal ∴ */ |
305 if (original_data) delete[] original_data; | 305 if (original_data) delete[] original_data; |
306 original_data = NULL; | 306 original_data = NULL; |
307 if (deal <= 0) { | 307 if (deal <= 0) { |
308 item_deal = 0; return; | 308 item_deal = 0; return; |
309 } | 309 } |
310 item_deal = deal; | 310 item_deal = deal; |
311 original_data = new int[item_deal]; | 311 original_data = new int[item_deal]; |
312 memcpy(original_data, list, sizeof(int)*deal); | 312 memcpy(original_data, list, sizeof(int)*deal); |
313 } | 313 } |
314 void Set(int deal, const int* list) { /* deal は無視 */ | 314 void Set(int deal, const int* list) { /* deal ∴ */ |
315 item_deal = deal; | 315 item_deal = deal; |
316 if (new_data) delete[] new_data; | 316 if (new_data) delete[] new_data; |
317 new_data = new int[item_deal]; | 317 new_data = new int[item_deal]; |
318 memcpy(new_data, list, sizeof(int)*item_deal); | 318 memcpy(new_data, list, sizeof(int)*item_deal); |
319 } | 319 } |
320 const int* Get(int deal) const {/* deal は無視 */ | 320 const int* Get(int deal) const {/* deal ∴ */ |
321 if (item_deal == 0) return NULL; | 321 if (item_deal == 0) return NULL; |
322 if (deal > item_deal) { | 322 if (deal > item_deal) { |
323 fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal); | 323 fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal); |
324 return NULL; | 324 return NULL; |
325 } | 325 } |
326 if (new_data) return new_data; | 326 if (new_data) return new_data; |
327 else if (old_data) return old_data; | 327 else if (old_data) return old_data; |
328 return original_data; | 328 return original_data; |
329 } | 329 } |
330 const int* GetOriginal(int deal) const {/* deal は無視 */ | 330 const int* GetOriginal(int deal) const {/* deal ∴ */ |
331 if (item_deal == 0) return NULL; | 331 if (item_deal == 0) return NULL; |
332 if (deal > item_deal) { | 332 if (deal > item_deal) { |
333 fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal); | 333 fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal); |
334 return NULL; | 334 return NULL; |
335 } | 335 } |
336 return original_data; | 336 return original_data; |
337 } | 337 } |
338 int Deal(void) const { | 338 int Deal(void) const { |
339 return item_deal; | 339 return item_deal; |
340 } | 340 } |
341 /* オリジナルからの変化の調査 : | 341 /* 吾紊茯炊 : |
342 ** DiffOriginal で変化を文字列で取り出し、PatchOriginal で | 342 ** DiffOriginal у絖у冴PatchOriginal |
343 ** 変化を反映 | 343 ** 紊 |
344 */ | 344 */ |
345 int DiffOriginalLen(void) { | 345 int DiffOriginalLen(void) { |
346 if (new_data == NULL) return 0; | 346 if (new_data == NULL) return 0; |
347 return 12 * item_deal + 1; | 347 return 12 * item_deal + 1; |
348 } | 348 } |
349 void DiffOriginal(string& data) { | 349 void DiffOriginal(string& data) { |
350 if (new_data == NULL) { /* あり得ない */ | 350 if (new_data == NULL) { /* 緇 */ |
351 fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n"); | 351 fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n"); |
352 return; | 352 return; |
353 } | 353 } |
354 int i; char buf[1024]; | 354 int i; char buf[1024]; |
355 for (i=0; i<item_deal; i++) { | 355 for (i=0; i<item_deal; i++) { |
407 // template map<HashStr, AyuSysConfigStringItem>; | 407 // template map<HashStr, AyuSysConfigStringItem>; |
408 // template map<HashStr, AyuSysConfigIntlistItem>; | 408 // template map<HashStr, AyuSysConfigIntlistItem>; |
409 | 409 |
410 /************************************************ | 410 /************************************************ |
411 ** AyuSysConfigItem | 411 ** AyuSysConfigItem |
412 ** データ名 -> データ本体の map と、map 全体に | 412 ** 若水 -> 若炊篏 map map 篏 |
413 ** 様々な操作を行うためのメソッド | 413 ** 罕篏茵<純 |
414 */ | 414 */ |
415 | 415 |
416 template<class ItemType, class DataType> class AyuSysConfigItem { | 416 template<class ItemType, class DataType> class AyuSysConfigItem { |
417 typedef map<HashStr,ItemType> maptype; | 417 typedef map<HashStr,ItemType> maptype; |
418 typedef typename maptype::iterator mapiterator; | 418 typedef typename maptype::iterator mapiterator; |
419 typedef typename maptype::const_iterator const_mapiterator; | 419 typedef typename maptype::const_iterator const_mapiterator; |
420 maptype data; | 420 maptype data; |
421 public: | 421 public: |
422 void SetOrig(HashStr& name, int deal, const DataType* str) { | 422 void SetOrig(HashStr& name, int deal, const DataType* str) { |
423 if (str == NULL) return; /* 無効 */ | 423 if (str == NULL) return; /* ≦ */ |
424 data[name].Init(deal, str); | 424 data[name].Init(deal, str); |
425 } | 425 } |
426 void Set(HashStr& name, int deal, const DataType* new_data) { | 426 void Set(HashStr& name, int deal, const DataType* new_data) { |
427 if (new_data == NULL) return; /* 無効 */ | 427 if (new_data == NULL) return; /* ≦ */ |
428 /* 設定を検索 */ | 428 /* 荐絎罎膣 */ |
429 mapiterator it = data.find(name); | 429 mapiterator it = data.find(name); |
430 /* 設定が元設定に見つからないなら失敗 */ | 430 /* 荐絎荐絎荀ゃ紊掩 */ |
431 if (it == data.end()) { | 431 if (it == data.end()) { |
432 fprintf(stderr,"AyuSysConfigItem::Set : there is no '%s' parameter\n",name.c_str()); | 432 fprintf(stderr,"AyuSysConfigItem::Set : there is no '%s' parameter\n",name.c_str()); |
433 return; | 433 return; |
434 } | 434 } |
435 /* 設定を変更 */ | 435 /* 荐絎紊 */ |
436 it->second.Set(deal, new_data); | 436 it->second.Set(deal, new_data); |
437 } | 437 } |
438 /* 新しい設定を優先して返す */ | 438 /* 違荐絎菴 */ |
439 const DataType* Get(int deal, HashStr& name) const { | 439 const DataType* Get(int deal, HashStr& name) const { |
440 const_mapiterator it = data.find(name); | 440 const_mapiterator it = data.find(name); |
441 if (it == data.end()) return NULL; | 441 if (it == data.end()) return NULL; |
442 return it->second.Get(deal); | 442 return it->second.Get(deal); |
443 } | 443 } |
449 int Deal(HashStr& name) const { | 449 int Deal(HashStr& name) const { |
450 const_mapiterator it = data.find(name); | 450 const_mapiterator it = data.find(name); |
451 if (it == data.end()) return NULL; | 451 if (it == data.end()) return NULL; |
452 return it->second.Deal(); | 452 return it->second.Deal(); |
453 } | 453 } |
454 /* オリジナルからの変化の調査 : | 454 /* 吾紊茯炊 : |
455 ** DiffOriginal で変化を文字列で取り出し、PatchOriginal で | 455 ** DiffOriginal у絖у冴PatchOriginal |
456 ** 変化を反映 | 456 ** 紊 |
457 */ | 457 */ |
458 void DiffOriginal(string& ret_str) { | 458 void DiffOriginal(string& ret_str) { |
459 mapiterator it = data.begin(); | 459 mapiterator it = data.begin(); |
460 for (; it != data.end(); it++) { | 460 for (; it != data.end(); it++) { |
461 int len = it->second.DiffOriginalLen(); | 461 int len = it->second.DiffOriginalLen(); |
508 }; | 508 }; |
509 // template AyuSysConfigItem<AyuSysConfigStringItem, char>; | 509 // template AyuSysConfigItem<AyuSysConfigStringItem, char>; |
510 // template AyuSysConfigItem<AyuSysConfigIntlistItem, int>; | 510 // template AyuSysConfigItem<AyuSysConfigIntlistItem, int>; |
511 | 511 |
512 /************************************************/ | 512 /************************************************/ |
513 /* ラッパ */ | 513 /* */ |
514 struct AyuSysConfigString { | 514 struct AyuSysConfigString { |
515 AyuSysConfigItem<AyuSysConfigStringItem,char> orig; | 515 AyuSysConfigItem<AyuSysConfigStringItem,char> orig; |
516 void Dump(FILE* f) const { | 516 void Dump(FILE* f) const { |
517 fprintf(f, "string config:\n"); | 517 fprintf(f, "string config:\n"); |
518 orig.Dump(f); | 518 orig.Dump(f); |
525 orig.Dump(f); | 525 orig.Dump(f); |
526 } | 526 } |
527 }; | 527 }; |
528 | 528 |
529 /************************************************/ | 529 /************************************************/ |
530 /* AyuSysConfig クラス */ | 530 /* AyuSysConfig */ |
531 int AyuSysConfig::SearchParam(const char* name) const{ | 531 int AyuSysConfig::SearchParam(const char* name) const{ |
532 HashStr str(name); | 532 HashStr str(name); |
533 if (str_config->orig.Get(1, str)) return 1; /* char* のパラメータ */ | 533 if (str_config->orig.Get(1, str)) return 1; /* char* <若 */ |
534 else if (int_config->orig.Get(1, str)) return 2; /* int のパラメータ */ | 534 else if (int_config->orig.Get(1, str)) return 2; /* int <若 */ |
535 /* XXX.015.XXX の類のキー名を XXX.000.XXX の形に規格化して再検索 */ | 535 /* XXX.015.XXX 蕁弱 XXX.000.XXX 綵≪荀弱罎膣 */ |
536 char name_copy[1024]; | 536 char name_copy[1024]; |
537 strncpy(name_copy, name, 1000); | 537 strncpy(name_copy, name, 1000); |
538 name_copy[1000] = 0; | 538 name_copy[1000] = 0; |
539 char* s; | 539 char* s; |
540 for (s=name_copy; s != NULL; s = strchr(s,'.')) { | 540 for (s=name_copy; s != NULL; s = strchr(s,'.')) { |
542 s[1] = '0'; s[2] = '0'; s[3] = '0'; | 542 s[1] = '0'; s[2] = '0'; s[3] = '0'; |
543 } | 543 } |
544 s++; | 544 s++; |
545 } | 545 } |
546 HashStr str2(name_copy); | 546 HashStr str2(name_copy); |
547 if (str_config->orig.Get(1, str2)) return 1; /* char* のパラメータ */ | 547 if (str_config->orig.Get(1, str2)) return 1; /* char* <若 */ |
548 else if (int_config->orig.Get(1, str2)) return 2; /* int のパラメータ */ | 548 else if (int_config->orig.Get(1, str2)) return 2; /* int <若 */ |
549 else return 0; | 549 else return 0; |
550 } | 550 } |
551 const char* AyuSysConfig::GetParaStr(const char* name) const{ | 551 const char* AyuSysConfig::GetParaStr(const char* name) const{ |
552 HashStr str(name); | 552 HashStr str(name); |
553 const char* ret = str_config->orig.Get(1,str); | 553 const char* ret = str_config->orig.Get(1,str); |
650 void AyuSysConfig::SetOrigParamArray(const char* name, int deal, int* array) { | 650 void AyuSysConfig::SetOrigParamArray(const char* name, int deal, int* array) { |
651 HashStr str(name); | 651 HashStr str(name); |
652 int_config->orig.SetOrig(str, deal, array); | 652 int_config->orig.SetOrig(str, deal, array); |
653 } | 653 } |
654 void AyuSysConfig::SetOriginal(void) { | 654 void AyuSysConfig::SetOriginal(void) { |
655 /* 全ての設定を元に戻す */ | 655 /* 荐絎祉 */ |
656 str_config->orig.SetOriginal(); | 656 str_config->orig.SetOriginal(); |
657 int_config->orig.SetOriginal(); | 657 int_config->orig.SetOriginal(); |
658 change_flag = 1; | 658 change_flag = 1; |
659 } | 659 } |
660 void AyuSysConfig::DiffOriginal(string& data) { | 660 void AyuSysConfig::DiffOriginal(string& data) { |
672 str_config->Dump(f); | 672 str_config->Dump(f); |
673 int_config->Dump(f); | 673 int_config->Dump(f); |
674 } | 674 } |
675 | 675 |
676 /************************************************ | 676 /************************************************ |
677 ** AyuSysConfig のコンストラクタ: | 677 ** AyuSysConfig 潟潟鴻随 |
678 ** 全ての config 項目を初期化する | 678 ** config |
679 */ | 679 */ |
680 | 680 |
681 AyuSysConfig * AyuSysConfig::_singleton = NULL; | 681 AyuSysConfig * AyuSysConfig::_singleton = NULL; |
682 | 682 |
683 AyuSysConfig* AyuSysConfig::GetInstance(void) | 683 AyuSysConfig* AyuSysConfig::GetInstance(void) |
701 | 701 |
702 change_flag = 1; dirty_flag = 0; | 702 change_flag = 1; dirty_flag = 0; |
703 str_config = new AyuSysConfigString; | 703 str_config = new AyuSysConfigString; |
704 int_config = new AyuSysConfigIntlist; | 704 int_config = new AyuSysConfigIntlist; |
705 | 705 |
706 /****** 文字列 *******/ | 706 /****** 絖 *******/ |
707 SetOrigParaStr("#WAKUPDT", "GRDAT"); /* 枠、マウスカーソルなどの画像ファイル */ | 707 SetOrigParaStr("#WAKUPDT", "GRDAT"); /* 鴻若純糸<ゃ */ |
708 SetOrigParaStr("#REGNAME", "xclannad"); /* レジストリ名。セーブファイルの作成に使う */ | 708 SetOrigParaStr("#REGNAME", "xclannad"); /* 吾鴻祉若<ゃ篏篏帥 */ |
709 SetOrigParaStr("#CAPTION", "xclannad"); /* ウィンドウのタイトル */ | 709 SetOrigParaStr("#CAPTION", "xclannad"); /* c潟帥ゃ */ |
710 SetOrigParaStr("#SAVENAME","SAVE.INI"); /* セーブファイルの名前 */ | 710 SetOrigParaStr("#SAVENAME","SAVE.INI"); /* 祉若<ゃ */ |
711 SetOrigParaStr("#SAVETITLE", "This is save file"); /* セーブファイルの先頭の文字列 */ | 711 SetOrigParaStr("#SAVETITLE", "This is save file"); /* 祉若<ゃ絖 */ |
712 SetOrigParaStr("#SAVENOTITLE", "-----------------"); /* 使われてないセーブデータの名前 */ | 712 SetOrigParaStr("#SAVENOTITLE", "-----------------"); /* 篏帥祉若若帥 */ |
713 SetOrigParaStr("#CGM_FILE", "MODE.CGM");/* CG mode の設定が保存されたファイル名 */ | 713 SetOrigParaStr("#CGM_FILE", "MODE.CGM");/* CG mode 荐絎篆絖<ゃ */ |
714 SetOrigParaStr("#CGTABLE_FILE", "MODE.CGM");/* CG mode の設定が保存されたファイル名 */ | 714 SetOrigParaStr("#CGTABLE_FILE", "MODE.CGM");/* CG mode 荐絎篆絖<ゃ */ |
715 | 715 |
716 SetOrigParaStr("#WAKU.000.000.NAME", ""); // テキストウィンドウの窓飾り画像名 | 716 SetOrigParaStr("#WAKU.000.000.NAME", ""); // 鴻c潟腦蕋障糸 |
717 SetOrigParaStr("#WAKU.000.000.BACK", ""); // テキストウィンドウのテキスト背景画像名 | 717 SetOrigParaStr("#WAKU.000.000.BACK", ""); // 鴻c潟鴻糸 |
718 SetOrigParaStr("#WAKU.000.000.BTN", ""); // テキストウィンドウのボタン画像名 | 718 SetOrigParaStr("#WAKU.000.000.BTN", ""); // 鴻c潟帥括糸 |
719 | 719 |
720 SetOrigParaStr("#MOUSE_CURSOR.000.NAME", ""); // マウスカーソルのファイル名 | 720 SetOrigParaStr("#MOUSE_CURSOR.000.NAME", ""); // 鴻若純<ゃ |
721 SetOrigParaStr("#CURSOR.000.NAME", ""); // リターンカーソルのファイル名 | 721 SetOrigParaStr("#CURSOR.000.NAME", ""); // 帥若潟若純<ゃ |
722 SetOrigParaStr("#SELBTN.000.NAME", ""); // 選択肢背景 | 722 SetOrigParaStr("#SELBTN.000.NAME", ""); // 御∵ |
723 SetOrigParaStr("#SELBTN.000.BACK", ""); // 選択肢背景 | 723 SetOrigParaStr("#SELBTN.000.BACK", ""); // 御∵ |
724 | 724 |
725 char name_str[8] = "#NAME.A"; | 725 char name_str[8] = "#NAME.A"; |
726 for (i='A'; i<='Z'; i++) { | 726 for (i='A'; i<='Z'; i++) { |
727 name_str[6] = i; | 727 name_str[6] = i; |
728 SetOrigParaStr(name_str, ""); | 728 SetOrigParaStr(name_str, ""); |
729 } | 729 } |
730 | 730 |
731 /****** 数値列 *******/ | 731 /****** 医ゅ *******/ |
732 SetOrigParam("#CANCELCALL", 2, 0,0); /* キャンセルボタン(右クリック)したときに呼び出されるサブルーチン番号(メニュー) */ | 732 SetOrigParam("#CANCELCALL", 2, 0,0); /* c潟祉帥(劻)若喝冴泣若括(<ャ) */ |
733 SetOrigParam("#COM2_TITLE", 1, 1); /* ? */ | 733 SetOrigParam("#COM2_TITLE", 1, 1); /* 鐚 */ |
734 SetOrigParam("#COM2_TITLE_COLOR", 1, 2); /* 選択肢タイトルの色 */ | 734 SetOrigParam("#COM2_TITLE_COLOR", 1, 2); /* 御≪帥ゃ */ |
735 SetOrigParam("#COM2_TITLE_INDENT", 1, 2); /* ? */ | 735 SetOrigParam("#COM2_TITLE_INDENT", 1, 2); /* 鐚 */ |
736 SetOrigParam("#SAVEFILETIME", 1, 24); /* セーブする場所の数 */ | 736 SetOrigParam("#SAVEFILETIME", 1, 24); /* 祉若贋 */ |
737 SetOrigParam("#SEEN_START", 1, 0); /* ゲームを開始するシナリオ番号 */ | 737 SetOrigParam("#SEEN_START", 1, 0); /* 蚊若紮激 */ |
738 SetOrigParam("#SEEN_SRT", 1, 0); /* ゲームを開始するシナリオ番号(好き好き大好き) */ | 738 SetOrigParam("#SEEN_SRT", 1, 0); /* 蚊若紮激(絅純絅純紊уソ) */ |
739 SetOrigParam("#SEEN_MENU", 1, 0); /* メニューのシナリオ番号 */ | 739 SetOrigParam("#SEEN_MENU", 1, 0); /* <ャ若激 */ |
740 SetOrigParam("#SEEN_TEXT_CURRENT", 1, 0); /* seen.txt を root directory に置くか */ | 740 SetOrigParam("#SEEN_TEXT_CURRENT", 1, 0); /* seen.txt root directory 臀 */ |
741 SetOrigParam("#FADE_TIME", 1, 40); /* 画面のフェード・アウトの速度 */ | 741 SetOrigParam("#FADE_TIME", 1, 40); /* 脂≪с若祉≪綺 */ |
742 SetOrigParam("#NVL_SYSTEM",1, 0); /* テキストウィンドウが全画面か否か */ | 742 SetOrigParam("#NVL_SYSTEM",1, 0); /* 鴻c潟脂≪ */ |
743 SetOrigParam("#WINDOW_ATTR", 5, -1, 128,128, 190, 0); /* テキストウィンドウの色 */ | 743 SetOrigParam("#WINDOW_ATTR", 5, -1, 128,128, 190, 0); /* 鴻c潟 */ |
744 SetOrigParam("#WINDOW_ATTR_AREA", 4, 4,4,4,4); /* テキストウィンドウの範囲 */ | 744 SetOrigParam("#WINDOW_ATTR_AREA", 4, 4,4,4,4); /* 鴻c潟膀 */ |
745 SetOrigParam("#WINDOW_ATTR_TYPE", 1, 0); /* テキストウィンドウを半透明にするか */ | 745 SetOrigParam("#WINDOW_ATTR_TYPE", 1, 0); /* 鴻c潟 */ |
746 SetOrigParam("#WINDOW_MSG_POS", 2, 22, 350); /* テキストウィンドウの位置 */ | 746 SetOrigParam("#WINDOW_MSG_POS", 2, 22, 350); /* 鴻c潟篏臀 */ |
747 SetOrigParam("#WINDOW_COM_POS", 2,450, 250); /* 選択ウィンドウの位置 */ | 747 SetOrigParam("#WINDOW_COM_POS", 2,450, 250); /* 御c潟篏臀 */ |
748 SetOrigParam("#WINDOW_GRP_POS", 2, 16, 100); /* なにかのウィンドウの位置 */ | 748 SetOrigParam("#WINDOW_GRP_POS", 2, 16, 100); /* c潟篏臀 */ |
749 SetOrigParam("#WINDOW_SUB_POS", 2, 48, 100); /* なにかのウィンドウの位置 */ | 749 SetOrigParam("#WINDOW_SUB_POS", 2, 48, 100); /* c潟篏臀 */ |
750 SetOrigParam("#WINDOW_SYS_POS", 2, 32, 100); /* なにかのウィンドウの位置 */ | 750 SetOrigParam("#WINDOW_SYS_POS", 2, 32, 100); /* c潟篏臀 */ |
751 SetOrigParam("#WINDOW_WAKU_TYPE", 1, 0); /* テキストウィンドウの枠の種類。xkanon 独自設定 */ | 751 SetOrigParam("#WINDOW_WAKU_TYPE", 1, 0); /* 鴻c潟腮蕁xkanon 荐絎 */ |
752 SetOrigParam("#RETN_CONT", 1, 16); /* リターンカーソルの数 */ | 752 SetOrigParam("#RETN_CONT", 1, 16); /* 帥若潟若純 */ |
753 SetOrigParam("#RETN_SPEED",1,100); /* リターンカーソルの動く速度 */ | 753 SetOrigParam("#RETN_SPEED",1,100); /* 帥若潟若純綺 */ |
754 SetOrigParam("#RETN_XSIZE", 1, 16); /* リターンカーソルの大きさ */ | 754 SetOrigParam("#RETN_XSIZE", 1, 16); /* 帥若潟若純紊с */ |
755 SetOrigParam("#RETN_YSIZE", 1, 16); /* リターンカーソルの大きさ */ | 755 SetOrigParam("#RETN_YSIZE", 1, 16); /* 帥若潟若純紊с */ |
756 SetOrigParam("#FONT_SIZE", 1, 26); /* フォントの大きさ */ | 756 SetOrigParam("#FONT_SIZE", 1, 26); /* 潟紊с */ |
757 SetOrigParam("#FONT_WEIGHT", 1, 100); /* フォントの weight */ | 757 SetOrigParam("#FONT_WEIGHT", 1, 100); /* 潟 weight */ |
758 SetOrigParam("#MSG_MOJI_SIZE", 2, 12, 29); /* 文字の大きさ(半角) */ | 758 SetOrigParam("#MSG_MOJI_SIZE", 2, 12, 29); /* 絖紊с(茹) */ |
759 SetOrigParam("#MESSAGE_SIZE", 2, 23, 3); /* メッセージウィンドウの文字数 */ | 759 SetOrigParam("#MESSAGE_SIZE", 2, 23, 3); /* <祉若吾c潟絖 */ |
760 SetOrigParam("#COM_MESSAGE_SIZE", 2, 23, 3); /* メッセージウィンドウの文字数 */ | 760 SetOrigParam("#COM_MESSAGE_SIZE", 2, 23, 3); /* <祉若吾c潟絖 */ |
761 SetOrigParam("#INIT_MESSAGE_SPEED", 1, 30); /* テキスト表示速度 */ | 761 SetOrigParam("#INIT_MESSAGE_SPEED", 1, 30); /* 鴻茵腓咲綺 */ |
762 SetOrigParam("#INIT_MESSAGE_SPEED_MOD", 1, 0); /* テキスト表示 no wait */ | 762 SetOrigParam("#INIT_MESSAGE_SPEED_MOD", 1, 0); /* 鴻茵腓 no wait */ |
763 SetOrigParam("#MESSAGE_KEY_WAIT_USE", 1, 0); /* テキスト進行オートモード */ | 763 SetOrigParam("#MESSAGE_KEY_WAIT_USE", 1, 0); /* 鴻画若≪若 */ |
764 SetOrigParam("#MESSAGE_KEY_WAIT_TIME", 1, 1500); /* オートモードでのキー待ち時間 */ | 764 SetOrigParam("#MESSAGE_KEY_WAIT_TIME", 1, 1500); /* 若≪若с弱≧ */ |
765 | 765 |
766 SetOrigParam("#GRP_DC_TIMES", 1, 4); /* 裏画面の数 */ | 766 SetOrigParam("#GRP_DC_TIMES", 1, 4); /* 茖脂≪ */ |
767 SetOrigParam("#MUSIC_LINEAR_PAC",1,0); /* PCM データの 8bit -> 16bit 変換を行うか */ | 767 SetOrigParam("#MUSIC_LINEAR_PAC",1,0); /* PCM 若帥 8bit -> 16bit 紊茵 */ |
768 SetOrigParam("#MUSIC_TYPE",1,0); /* PCM データの種類 */ | 768 SetOrigParam("#MUSIC_TYPE",1,0); /* PCM 若帥腮蕁 */ |
769 SetOrigParam("#WINDOW_MSGBK_BOX",1,0); /* バックログ用のボタン */ | 769 SetOrigParam("#WINDOW_MSGBK_BOX",1,0); /* 亥帥 */ |
770 SetOrigParam("#WINDOW_MSGBK_LBOX_POS",4,15,7,8,0); /* バックログ用のボタン(左)の位置 */ | 770 SetOrigParam("#WINDOW_MSGBK_LBOX_POS",4,15,7,8,0); /* 亥帥(綏)篏臀 */ |
771 SetOrigParam("#WINDOW_MSGBK_RBOX_POS",4,7,7,0,0); /* バックログ用のボタン(左)の位置 */ | 771 SetOrigParam("#WINDOW_MSGBK_RBOX_POS",4,7,7,0,0); /* 亥帥(綏)篏臀 */ |
772 SetOrigParam("#MSGBK_MOD",1,0); /* バックログ用のボタンを使用するか */ | 772 SetOrigParam("#MSGBK_MOD",1,0); /* 亥帥潟篏睡 */ |
773 | 773 |
774 SetOrigParam("#WAKU.000.000.TYPE", 1, 5); | 774 SetOrigParam("#WAKU.000.000.TYPE", 1, 5); |
775 SetOrigParam("#WAKU.000.000.MOVE_BOX", 5, 0, 0, 0, 0, 0); // テキストウィンドウの移動用ボタン位置 | 775 SetOrigParam("#WAKU.000.000.MOVE_BOX", 5, 0, 0, 0, 0, 0); // 鴻c潟腱糸帥割臀 |
776 SetOrigParam("#WAKU.000.000.CLEAR_BOX", 5, 0, 0, 0, 0, 0); // 一時消去用ボタン位置 | 776 SetOrigParam("#WAKU.000.000.CLEAR_BOX", 5, 0, 0, 0, 0, 0); // 筝羔サ帥割臀 |
777 SetOrigParam("#WAKU.000.000.READJUMP_BOX", 5, 0, 0, 0, 0, 0); // スキップ用ボタン位置 | 777 SetOrigParam("#WAKU.000.000.READJUMP_BOX", 5, 0, 0, 0, 0, 0); // 鴻帥割臀 |
778 SetOrigParam("#WAKU.000.000.AUTOMODE_BOX", 5, 0, 0, 0, 0, 0); // オート用ボタン位置 | 778 SetOrigParam("#WAKU.000.000.AUTOMODE_BOX", 5, 0, 0, 0, 0, 0); // 若帥割臀 |
779 SetOrigParam("#WAKU.000.000.MSGBK_BOX", 5, 0, 0, 0, 0, 0); // バックログボタン位置 | 779 SetOrigParam("#WAKU.000.000.MSGBK_BOX", 5, 0, 0, 0, 0, 0); // 違帥割臀 |
780 SetOrigParam("#WAKU.000.000.MSGBKLEFT_BOX", 5, 0, 0, 0, 0, 0); // バックログ(進める)ボタン位置 | 780 SetOrigParam("#WAKU.000.000.MSGBKLEFT_BOX", 5, 0, 0, 0, 0, 0); // 逸蚊鐚帥割臀 |
781 SetOrigParam("#WAKU.000.000.MSGBKRIGHT_BOX", 5, 0, 0, 0, 0, 0); // バックログ(戻る)ボタン位置 | 781 SetOrigParam("#WAKU.000.000.MSGBKRIGHT_BOX", 5, 0, 0, 0, 0, 0); // 逸祉鐚帥割臀 |
782 SetOrigParam("#WAKU.000.000.EXBTN_000_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン0位置 | 782 SetOrigParam("#WAKU.000.000.EXBTN_000_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀 |
783 SetOrigParam("#WAKU.000.000.EXBTN_001_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン1位置 | 783 SetOrigParam("#WAKU.000.000.EXBTN_001_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀 |
784 SetOrigParam("#WAKU.000.000.EXBTN_002_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン2位置 | 784 SetOrigParam("#WAKU.000.000.EXBTN_002_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀 |
785 | 785 |
786 SetOrigParam("#WINDOW.000.MOJI_SIZE", 1, 21); // 文字サイズ | 786 SetOrigParam("#WINDOW.000.MOJI_SIZE", 1, 21); // 絖泣ゃ |
787 SetOrigParam("#WINDOW.000.MOJI_REP", 2, -1, 2); // 文字の余裕 | 787 SetOrigParam("#WINDOW.000.MOJI_REP", 2, -1, 2); // 絖篏茖 |
788 SetOrigParam("#WINDOW.000.MOJI_CNT", 2, 20, 3); // ウィンドウ内の文字数 | 788 SetOrigParam("#WINDOW.000.MOJI_CNT", 2, 20, 3); // c潟絖 |
789 SetOrigParam("#WINDOW.000.MOJI_POS", 4, 100, 0, 180, 40); // テキスト位置。3つ目がx で1つ目がyらしい | 789 SetOrigParam("#WINDOW.000.MOJI_POS", 4, 100, 0, 180, 40); // 鴻篏臀3ょx 1ょy |
790 SetOrigParam("#WINDOW.000.MOJI_SHADOW", 1, 0); // 文字に影を付けるか | 790 SetOrigParam("#WINDOW.000.MOJI_SHADOW", 1, 0); // 絖綵宴篁 |
791 SetOrigParam("#WINDOW.000.LUBY_SIZE", 1, 8); // ルビの文字サイズ | 791 SetOrigParam("#WINDOW.000.LUBY_SIZE", 1, 8); // 絖泣ゃ |
792 SetOrigParam("#WINDOW.000.MOJI_MIN", 2, 8, 1); // 文字同士の隙間? | 792 SetOrigParam("#WINDOW.000.MOJI_MIN", 2, 8, 1); // 絖紕鐚 |
793 SetOrigParam("#WINDOW.000.SELCOM_USE", 1, 0); // 選択肢の実装方法 | 793 SetOrigParam("#WINDOW.000.SELCOM_USE", 1, 0); // 御≪絎茖号 |
794 SetOrigParam("#WINDOW.000.POS", 4, 100, 0, 0, 260); // ウィンドウ位置 | 794 SetOrigParam("#WINDOW.000.POS", 4, 100, 0, 0, 260); // c潟篏臀 |
795 SetOrigParam("#WINDOW.000.ATTR_MOD", 1, 0); // ウィンドウ色 | 795 SetOrigParam("#WINDOW.000.ATTR_MOD", 1, 0); // c潟 |
796 SetOrigParam("#WINDOW.000.ATTR", 5, -1, -1, -1, -1, -1); // ウィンドウ色 | 796 SetOrigParam("#WINDOW.000.ATTR", 5, -1, -1, -1, -1, -1); // c潟 |
797 /* SELCOM はよくわからんので無視 */ | 797 /* SELCOM х∴ */ |
798 SetOrigParam("#WINDOW.000.OPEN_ANM_MOD", 1, 0); // ウィンドウを開くときの効果らしい | 798 SetOrigParam("#WINDOW.000.OPEN_ANM_MOD", 1, 0); // c潟号 |
799 SetOrigParam("#WINDOW.000.OPEN_ANM_TIME", 1, 500); | 799 SetOrigParam("#WINDOW.000.OPEN_ANM_TIME", 1, 500); |
800 SetOrigParam("#WINDOW.000.CLOSE_ANM_MOD", 1, 0); // ウィンドウを閉じるときの効果らしい | 800 SetOrigParam("#WINDOW.000.CLOSE_ANM_MOD", 1, 0); // c潟号 |
801 SetOrigParam("#WINDOW.000.CLOSE_ANM_TIME", 1, 500); | 801 SetOrigParam("#WINDOW.000.CLOSE_ANM_TIME", 1, 500); |
802 SetOrigParam("#WINDOW.000.WAKU_SETNO", 1, 0); // 枠の種類 | 802 SetOrigParam("#WINDOW.000.WAKU_SETNO", 1, 0); // 腮蕁 |
803 SetOrigParam("#WINDOW.000.MOVE_USE", 1, 0); // ウィンドウ枠移動ボタン使用の可否 | 803 SetOrigParam("#WINDOW.000.MOVE_USE", 1, 0); // c潟腱糸帥割戎 |
804 SetOrigParam("#WINDOW.000.CLEAR_USE", 1, 0); // ウィンドウ枠消去ボタン使用の可否 | 804 SetOrigParam("#WINDOW.000.CLEAR_USE", 1, 0); // c潟羔サ帥割戎 |
805 SetOrigParam("#WINDOW.000.READJUMP_USE", 1, 0); // スキップボタン使用の可否 | 805 SetOrigParam("#WINDOW.000.READJUMP_USE", 1, 0); // 鴻帥割戎 |
806 SetOrigParam("#WINDOW.000.AUTOMODE_USE", 1, 0); // スキップボタン使用の可否 | 806 SetOrigParam("#WINDOW.000.AUTOMODE_USE", 1, 0); // 鴻帥割戎 |
807 SetOrigParam("#WINDOW.000.MSGBK_USE", 1, 0); // バックログボタン使用の可否 | 807 SetOrigParam("#WINDOW.000.MSGBK_USE", 1, 0); // 違帥割戎 |
808 SetOrigParam("#WINDOW.000.MSGBKLEFT_USE", 1, 0); // バックログ(進む)ボタン使用の可否 | 808 SetOrigParam("#WINDOW.000.MSGBKLEFT_USE", 1, 0); // 逸蚊鐚帥割戎 |
809 SetOrigParam("#WINDOW.000.MSGBKRIGHT_USE", 1, 0); // バックログ(戻る)ボタン使用の可否 | 809 SetOrigParam("#WINDOW.000.MSGBKRIGHT_USE", 1, 0); // 逸祉鐚帥割戎 |
810 SetOrigParam("#WINDOW.000.EXBTN_000_USE", 1, 0); // その他ボタン0使用の可否 | 810 SetOrigParam("#WINDOW.000.EXBTN_000_USE", 1, 0); // 篁帥鰹篏睡 |
811 SetOrigParam("#WINDOW.000.EXBTN_001_USE", 1, 0); // その他ボタン1使用の可否 | 811 SetOrigParam("#WINDOW.000.EXBTN_001_USE", 1, 0); // 篁帥鰹篏睡 |
812 SetOrigParam("#WINDOW.000.EXBTN_002_USE", 1, 0); // その他ボタン2使用の可否 | 812 SetOrigParam("#WINDOW.000.EXBTN_002_USE", 1, 0); // 篁帥鰹篏睡 |
813 SetOrigParam("#WINDOW.000.NAME_MOD", 1, 0); // 名前ウィンドウを別途使用するか | 813 SetOrigParam("#WINDOW.000.NAME_MOD", 1, 0); // c潟ラ篏睡 |
814 SetOrigParam("#WINDOW.000.NAME_MOJI_SIZE", 1, 20); // 名前フォントのサイズ | 814 SetOrigParam("#WINDOW.000.NAME_MOJI_SIZE", 1, 20); // 潟泣ゃ |
815 SetOrigParam("#WINDOW.000.NAME_MOJI_POS", 2, 0, 0); // 名前ウィンドウの文字の位置 | 815 SetOrigParam("#WINDOW.000.NAME_MOJI_POS", 2, 0, 0); // c潟絖篏臀 |
816 SetOrigParam("#WINDOW.000.NAME_MOJI_MIN", 1, 0); // 名前ウィンドウの幅 | 816 SetOrigParam("#WINDOW.000.NAME_MOJI_MIN", 1, 0); // c潟綛 |
817 SetOrigParam("#WINDOW.000.NAME_CENTERING", 1, 1); // 名前のセンタリングの有無 | 817 SetOrigParam("#WINDOW.000.NAME_CENTERING", 1, 1); // 祉潟帥潟違 |
818 SetOrigParam("#WINDOW.000.NAME_POS", 2, 159, 78); // 名前ウィンドウ位置(左下位置らしい) | 818 SetOrigParam("#WINDOW.000.NAME_POS", 2, 159, 78); // c潟篏臀鐚綏筝篏臀鐚 |
819 SetOrigParam("#WINDOW.000.NAME_WAKU_SETNO", 1, -1); // 名前ウィンドウ位置(左下位置らしい) | 819 SetOrigParam("#WINDOW.000.NAME_WAKU_SETNO", 1, -1); // c潟篏臀鐚綏筝篏臀鐚 |
820 SetOrigParam("#WINDOW.000.FACE.000", 5, 0, 0, 1, 1, 1); // 顔ウィンドウ位置(始め2つがx,y、MOJI_POSからの相対位置なのに注意) | 820 SetOrigParam("#WINDOW.000.FACE.000", 5, 0, 0, 1, 1, 1); // 蕁c潟篏臀(紮鐚ゃx,yMOJI_POS後鞘臀羈) |
821 SetOrigParam("#WINDOW.000.KEYCUR_MOD", 3, 0, 0, 0); // リターンカーソルの位置 | 821 SetOrigParam("#WINDOW.000.KEYCUR_MOD", 3, 0, 0, 0); // 帥若潟若純篏臀 |
822 | 822 |
823 | 823 |
824 SetOrigParam("#CURSOR.000.SIZE", 2, 0, 0); // リターンカーソルの大きさ | 824 SetOrigParam("#CURSOR.000.SIZE", 2, 0, 0); // 帥若潟若純紊с |
825 SetOrigParam("#CURSOR.000.CONT", 1, 50); // リターンカーソルの繰り返し数 | 825 SetOrigParam("#CURSOR.000.CONT", 1, 50); // 帥若潟若純膵違菴 |
826 SetOrigParam("#CURSOR.000.SPEED", 1, 1000); // ブリンクする速さ | 826 SetOrigParam("#CURSOR.000.SPEED", 1, 1000); // 潟 |
827 | 827 |
828 SetOrigParam("#SELBTN.000.CENTERING", 2, 0, 0); | 828 SetOrigParam("#SELBTN.000.CENTERING", 2, 0, 0); |
829 SetOrigParam("#SELBTN.000.BASEPOS", 2, 0, 0); // 選択肢ウィンドウの位置 | 829 SetOrigParam("#SELBTN.000.BASEPOS", 2, 0, 0); // 御≪c潟篏臀 |
830 SetOrigParam("#SELBTN.000.REPPOS", 2, 0, 50); // 選択肢ウィンドウの次の位置(相対) | 830 SetOrigParam("#SELBTN.000.REPPOS", 2, 0, 50); // 御≪c潟罨<篏臀鐚後常 |
831 SetOrigParam("#SELBTN.000.MOJISIZE", 4, 26, 0,0,0); // 文字の大きさ | 831 SetOrigParam("#SELBTN.000.MOJISIZE", 4, 26, 0,0,0); // 絖紊с |
832 SetOrigParam("#SELBTN.000.MOJIDEFAULTCOL", 1, 0); // 非選択時の文字色 | 832 SetOrigParam("#SELBTN.000.MOJIDEFAULTCOL", 1, 0); // 御絖 |
833 SetOrigParam("#SELBTN.000.MOJISELECTCOL", 1, 0); // 選択時の文字色 | 833 SetOrigParam("#SELBTN.000.MOJISELECTCOL", 1, 0); // 御絖 |
834 | 834 |
835 SetOrigParam("#COLOR_TABLE.000", 3, 255,255,255); | 835 SetOrigParam("#COLOR_TABLE.000", 3, 255,255,255); |
836 SetOrigParam("#SHAKE.000", 3, 0,0,0); | 836 SetOrigParam("#SHAKE.000", 3, 0,0,0); |
837 | 837 |
838 SetOrigParam("#SELR.000",16,0,0,640,480,0,0,500,50,0,0,0,0,0,0,255,0); | 838 SetOrigParam("#SELR.000",16,0,0,640,480,0,0,500,50,0,0,0,0,0,0,255,0); |
848 delete str_config; | 848 delete str_config; |
849 delete int_config; | 849 delete int_config; |
850 } | 850 } |
851 | 851 |
852 static int SplitVar(const char* str, int* ret_var, int ret_size) { | 852 static int SplitVar(const char* str, int* ret_var, int ret_size) { |
853 /* , あるいは ),:( をセパレータとして、-?[0-9]+ の | 853 /* , ),:( 祉若帥-?[0-9]+ |
854 ** フォーマットの数値列を読み込む。先頭に (、末尾に ) が付きうる。 | 854 ** 若医ゅ茯粋昭 (絨障 ) 篁 |
855 ** (),-[0-9] 以外の文字があったらそこで終了 | 855 ** (),-[0-9] 篁ュ絖cх篋 |
856 ** 得られたデータ数を返す | 856 ** 緇若炊違菴 |
857 */ | 857 */ |
858 if (*str == '(') str++; | 858 if (*str == '(') str++; |
859 int i; for (i=0; i<ret_size; i++) { | 859 int i; for (i=0; i<ret_size; i++) { |
860 int c; int is_positive = 1; | 860 int c; int is_positive = 1; |
861 /* セパレータの読み飛ばし */ | 861 /* 祉若帥茯翠違 */ |
862 c = *str; | 862 c = *str; |
863 if (c == ',' || c == ':') { | 863 if (c == ',' || c == ':') { |
864 str++; | 864 str++; |
865 } else if (c == ')' && str[1] == '(') { | 865 } else if (c == ')' && str[1] == '(') { |
866 str += 2; | 866 str += 2; |
867 } | 867 } |
868 /* - を parse */ | 868 /* - parse */ |
869 c = *str; | 869 c = *str; |
870 if (c == '-' && isdigit(str[1])) { | 870 if (c == '-' && isdigit(str[1])) { |
871 is_positive = -1; str++; | 871 is_positive = -1; str++; |
872 } else if (! isdigit(c)) { | 872 } else if (! isdigit(c)) { |
873 return i; /* 異常な文字を見つけた:終了 */ | 873 return i; /* 医幻絖荀ゃ鐚腟篋 */ |
874 } | 874 } |
875 int number = 0; | 875 int number = 0; |
876 /* 数字読み込み */ | 876 /* 医茯粋昭 */ |
877 while(isdigit( (c=*str) )) { | 877 while(isdigit( (c=*str) )) { |
878 number *= 10; | 878 number *= 10; |
879 number += c-'0'; | 879 number += c-'0'; |
880 str++; | 880 str++; |
881 } | 881 } |
882 ret_var[i] = is_positive * number; | 882 ret_var[i] = is_positive * number; |
883 } | 883 } |
884 return i; | 884 return i; |
885 } | 885 } |
886 /* 決められた数の引数を得る。-1 ならエラーが生じた */ | 886 /* 羆冴違綣違緇-1 若 */ |
887 static inline int SplitVar(const char* str, int& var1) { | 887 static inline int SplitVar(const char* str, int& var1) { |
888 if (SplitVar(str, &var1, 1) != 1) return -1; | 888 if (SplitVar(str, &var1, 1) != 1) return -1; |
889 return 0; | 889 return 0; |
890 } | 890 } |
891 static inline int SplitVar(const char* str, int& var1, int& var2) { | 891 static inline int SplitVar(const char* str, int& var1, int& var2) { |
923 delete info; return false; | 923 delete info; return false; |
924 } | 924 } |
925 unsigned char* buf_end = buf_orig + size; | 925 unsigned char* buf_end = buf_orig + size; |
926 int line_count = 0; | 926 int line_count = 0; |
927 while(buf_orig < buf_end) { | 927 while(buf_orig < buf_end) { |
928 /* buf_orig から一行読み込む */ | 928 /* buf_orig 筝茵茯粋昭 */ |
929 /* その際に、 | 929 /* |
930 ** ・頭が # 以外なら次の行までとばす | 930 ** 脂 # 篁ュ罨<茵障с違 |
931 ** ・"" 外のスペース、TABを初めとする制御文字 (0x20 以下のASCIIコード)を削除 | 931 ** "" 紊鴻若鴻TAB九勝絖 (0x20 篁ヤASCII潟若) |
932 ** ・= で区切る。区切りは最大で10個で、tokens に代入される | 932 ** = у阪阪紊с10сtokens 篁eャ |
933 ** などの操作を行う | 933 ** 篏茵 |
934 */ | 934 */ |
935 | 935 |
936 /* # チェック */ | 936 /* # с */ |
937 if (*buf_orig != '#') { | 937 if (*buf_orig != '#') { |
938 /* 次の '\n' まで読み飛ばし */ | 938 /* 罨< '\n' 障ц翠違 */ |
939 while(buf_orig < buf_end && | 939 while(buf_orig < buf_end && |
940 *buf_orig != '\n' && *buf_orig != '\r') buf_orig++; | 940 *buf_orig != '\n' && *buf_orig != '\r') buf_orig++; |
941 if (buf_orig < buf_end-1 && *buf_orig == '\r' && buf_orig[1] == '\n') buf_orig += 2; | 941 if (buf_orig < buf_end-1 && *buf_orig == '\r' && buf_orig[1] == '\n') buf_orig += 2; |
942 else if (*buf_orig == '\r' || *buf_orig == '\n') buf_orig++; | 942 else if (*buf_orig == '\r' || *buf_orig == '\n') buf_orig++; |
943 line_count++; | 943 line_count++; |
944 continue; | 944 continue; |
945 } | 945 } |
946 /* 初期化 */ | 946 /* */ |
947 token_deal = 1; | 947 token_deal = 1; |
948 tokens[0] = buf; | 948 tokens[0] = buf; |
949 buf_ptr = NULL; | 949 buf_ptr = NULL; |
950 int in_quote = 0; | 950 int in_quote = 0; |
951 | 951 |
952 while(buf_orig < buf_end && buf_ptr < 1023) { | 952 while(buf_orig < buf_end && buf_ptr < 1023) { |
953 if (in_quote) { | 953 if (in_quote) { |
954 /* "" の中 */ | 954 /* "" 筝 */ |
955 int c = *buf_orig; | 955 int c = *buf_orig; |
956 if (c == '\n' || c == '\r') { | 956 if (c == '\n' || c == '\r') { |
957 break; | 957 break; |
958 } else if (c == '\"') { | 958 } else if (c == '\"') { |
959 in_quote = 0; | 959 in_quote = 0; |
960 } else { | 960 } else { |
961 buf[buf_ptr++] = c; | 961 buf[buf_ptr++] = c; |
962 } | 962 } |
963 buf_orig++; | 963 buf_orig++; |
964 } else { /* quote されてない */ | 964 } else { /* quote */ |
965 /* 制御文字を読み飛ばす */ | 965 /* 九勝絖茯翠違 */ |
966 while(*buf_orig <= 0x20 && buf_orig < buf_end && | 966 while(*buf_orig <= 0x20 && buf_orig < buf_end && |
967 *buf_orig != '\n' && *buf_orig != '\r') buf_orig++; | 967 *buf_orig != '\n' && *buf_orig != '\r') buf_orig++; |
968 int c = *buf_orig; | 968 int c = *buf_orig; |
969 if (c == '\n' || c == '\r') break; | 969 if (c == '\n' || c == '\r') break; |
970 /* = なら次の token */ | 970 /* = 罨< token */ |
971 if (c == '=') { | 971 if (c == '=') { |
972 c = 0; | 972 c = 0; |
973 tokens[token_deal++] = buf+buf_ptr+1; | 973 tokens[token_deal++] = buf+buf_ptr+1; |
974 if (token_deal >= MAXTOKEN) break; | 974 if (token_deal >= MAXTOKEN) break; |
975 } else if (c == '\"') { | 975 } else if (c == '\"') { |
978 buf[buf_ptr++] = c; | 978 buf[buf_ptr++] = c; |
979 buf_orig++; | 979 buf_orig++; |
980 } | 980 } |
981 } | 981 } |
982 buf[buf_ptr] = '\0'; | 982 buf[buf_ptr] = '\0'; |
983 /* 末尾の \r\n を消去 */ | 983 /* 絨障 \r\n 羔サ */ |
984 if (buf_orig < buf_end-1 && buf_orig[0] == '\r' && buf_orig[1] == '\n') buf_orig += 2; | 984 if (buf_orig < buf_end-1 && buf_orig[0] == '\r' && buf_orig[1] == '\n') buf_orig += 2; |
985 else if (buf_orig < buf_end && (buf_orig[0] == '\r' || buf_orig[0] == '\n')) buf_orig++; | 985 else if (buf_orig < buf_end && (buf_orig[0] == '\r' || buf_orig[0] == '\n')) buf_orig++; |
986 /* 必要なら parse 内容を出力 */ | 986 /* 綽荀 parse 絎鴻阪 */ |
987 dprintf(("line %3d ",line_count)); | 987 dprintf(("line %3d ",line_count)); |
988 for (i=0; i<token_deal; i++) { | 988 for (i=0; i<token_deal; i++) { |
989 dprintf(("%d:\"%s\", ",i,tokens[i])); | 989 dprintf(("%d:\"%s\", ",i,tokens[i])); |
990 } | 990 } |
991 dprintf(("\n")); | 991 dprintf(("\n")); |
992 if (in_quote) { | 992 if (in_quote) { |
993 fprintf(stderr, "Warning : open quote is found while parsing gameexe.ini, line %d\n",line_count); | 993 fprintf(stderr, "Warning : open quote is found while parsing gameexe.ini, line %d\n",line_count); |
994 } | 994 } |
995 | 995 |
996 | 996 |
997 /* 得られた内容を parse */ | 997 /* 緇絎鴻 parse */ |
998 | 998 |
999 /* #NAME=<文字列> */ | 999 /* #NAME=<絖> */ |
1000 int type = SearchParam(tokens[0]); | 1000 int type = SearchParam(tokens[0]); |
1001 if (type == 1) { /* #NAME=<文字列> */ | 1001 if (type == 1) { /* #NAME=<絖> */ |
1002 if (token_deal != 2) { | 1002 if (token_deal != 2) { |
1003 dprintf(("Parse error, line %d, %s\n",line_count, tokens[0])); | 1003 dprintf(("Parse error, line %d, %s\n",line_count, tokens[0])); |
1004 goto parse_error; | 1004 goto parse_error; |
1005 } | 1005 } |
1006 SetOrigParaStr(tokens[0], tokens[1]); | 1006 SetOrigParaStr(tokens[0], tokens[1]); |
1007 goto parse_end; | 1007 goto parse_end; |
1008 } else if (type == 2) { /* #NAME=<数値列> */ | 1008 } else if (type == 2) { /* #NAME=<医ゅ> */ |
1009 if (token_deal != 2) { | 1009 if (token_deal != 2) { |
1010 dprintf(("Parse error, line %d, %s\n",line_count, tokens[0])); | 1010 dprintf(("Parse error, line %d, %s\n",line_count, tokens[0])); |
1011 goto parse_error; | 1011 goto parse_error; |
1012 } | 1012 } |
1013 int number_deal = SplitVar(tokens[1], numbers, MAXVARS); | 1013 int number_deal = SplitVar(tokens[1], numbers, MAXVARS); |
1014 SetOrigParamArray(tokens[0], number_deal, numbers); | 1014 SetOrigParamArray(tokens[0], number_deal, numbers); |
1015 goto parse_end; | 1015 goto parse_end; |
1016 } | 1016 } |
1017 /* 一般的な設定以外 : cdrom track など */ | 1017 /* 筝荐絎篁ュ : cdrom track */ |
1018 if (strncmp(tokens[0],"#NAME.", 6) == 0) { | 1018 if (strncmp(tokens[0],"#NAME.", 6) == 0) { |
1019 if (token_deal != 2) goto parse_error; | 1019 if (token_deal != 2) goto parse_error; |
1020 SetOrigParaStr(tokens[0], tokens[1]); | 1020 SetOrigParaStr(tokens[0], tokens[1]); |
1021 goto parse_end; | 1021 goto parse_end; |
1022 } else if (strncmp(tokens[0],"#DIRC.",6) == 0) { | 1022 } else if (strncmp(tokens[0],"#DIRC.",6) == 0) { |
1023 if (token_deal != 3) goto parse_error; | 1023 if (token_deal != 3) goto parse_error; |
1024 /* ファイル形式の指定 */ | 1024 /* <ゃ綵√絎 */ |
1025 FileSearcher::FILETYPE type; | 1025 FileSearcher::FILETYPE type; |
1026 char* name = tokens[0]+6; | 1026 char* name = tokens[0]+6; |
1027 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; | 1027 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; |
1028 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; | 1028 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; |
1029 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; | 1029 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; |
1032 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; | 1032 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; |
1033 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; | 1033 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; |
1034 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; | 1034 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; |
1035 else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE; | 1035 else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE; |
1036 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; | 1036 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; |
1037 else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */ | 1037 else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */ |
1038 if (tokens[2][0] == 'N') { /* directory */ | 1038 if (tokens[2][0] == 'N') { /* directory */ |
1039 file_searcher->SetFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); | 1039 file_searcher->SetFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); |
1040 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); | 1040 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); |
1041 } else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* アーカイブ */ | 1041 } else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* ≪若ゃ */ |
1042 file_searcher->SetFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); | 1042 file_searcher->SetFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); |
1043 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); | 1043 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); |
1044 } else goto parse_error; | 1044 } else goto parse_error; |
1045 goto parse_end; | 1045 goto parse_end; |
1046 } | 1046 } |
1047 if (strncmp(tokens[0],"#ADRC.",6) == 0) { | 1047 if (strncmp(tokens[0],"#ADRC.",6) == 0) { |
1048 if (token_deal != 3) goto parse_error; | 1048 if (token_deal != 3) goto parse_error; |
1049 /* ファイル形式の指定 */ | 1049 /* <ゃ綵√絎 */ |
1050 FileSearcher::FILETYPE type; | 1050 FileSearcher::FILETYPE type; |
1051 char* name = tokens[0]+6; | 1051 char* name = tokens[0]+6; |
1052 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; | 1052 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; |
1053 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; | 1053 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; |
1054 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; | 1054 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; |
1057 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; | 1057 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; |
1058 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; | 1058 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; |
1059 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; | 1059 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; |
1060 else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE; | 1060 else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE; |
1061 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; | 1061 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; |
1062 else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */ | 1062 else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */ |
1063 if (tokens[2][0] == 'N') { /* directory */ | 1063 if (tokens[2][0] == 'N') { /* directory */ |
1064 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); | 1064 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); |
1065 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); | 1065 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); |
1066 } else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* アーカイブ */ | 1066 } else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* ≪若ゃ */ |
1067 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); | 1067 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); |
1068 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); | 1068 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); |
1069 } else if (tokens[2][0] == 'R' && tokens[2][1] == ':') { /* それ散るアーカイブ */ | 1069 } else if (tokens[2][0] == 'R' && tokens[2][1] == ':') { /* c≪若ゃ */ |
1070 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); | 1070 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); |
1071 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); | 1071 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); |
1072 } else goto parse_error; | 1072 } else goto parse_error; |
1073 goto parse_end; | 1073 goto parse_end; |
1074 } | 1074 } |
1075 if (strncmp(tokens[0],"#FOLDNAME.",10) == 0) { | 1075 if (strncmp(tokens[0],"#FOLDNAME.",10) == 0) { |
1076 if (token_deal != 3) goto parse_error; | 1076 if (token_deal != 3) goto parse_error; |
1077 /* ファイル形式の指定 */ | 1077 /* <ゃ綵√絎 */ |
1078 FileSearcher::FILETYPE type; | 1078 FileSearcher::FILETYPE type; |
1079 char* name = tokens[0]+10; | 1079 char* name = tokens[0]+10; |
1080 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; | 1080 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; |
1081 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; | 1081 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; |
1082 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; | 1082 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; |
1085 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; | 1085 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; |
1086 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; | 1086 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; |
1087 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; | 1087 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; |
1088 else if (strcmp(name, "BGM") == 0) type = FileSearcher::BGM; | 1088 else if (strcmp(name, "BGM") == 0) type = FileSearcher::BGM; |
1089 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; | 1089 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; |
1090 else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */ | 1090 else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */ |
1091 if (tokens[2][0] == '0') { /* directory */ | 1091 if (tokens[2][0] == '0') { /* directory */ |
1092 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); | 1092 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); |
1093 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); | 1093 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); |
1094 } else if (tokens[2][0] == '1' && tokens[2][1] == ':') { /* アーカイブ */ | 1094 } else if (tokens[2][0] == '1' && tokens[2][1] == ':') { /* ≪若ゃ */ |
1095 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_SCN2k, tokens[2]+2); | 1095 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_SCN2k, tokens[2]+2); |
1096 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); | 1096 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); |
1097 } else goto parse_error; | 1097 } else goto parse_error; |
1098 goto parse_end; | 1098 goto parse_end; |
1099 } | 1099 } |
1104 goto parse_end; | 1104 goto parse_end; |
1105 } | 1105 } |
1106 if (strcmp(tokens[0], "#DSTRACK") == 0) { | 1106 if (strcmp(tokens[0], "#DSTRACK") == 0) { |
1107 /* #DSTRACK=00000000-99999000-00782556="filename" ="name" */ | 1107 /* #DSTRACK=00000000-99999000-00782556="filename" ="name" */ |
1108 /* #DSTRACK=00000000-99999000-00782556="name" */ | 1108 /* #DSTRACK=00000000-99999000-00782556="name" */ |
1109 /* 第二トークンの3つめのパラメータを得る(繰り返しの時の再生開始位置) */ | 1109 /* 膃篋若潟鐚ゃ<若帥緇鐚膵違菴紮篏臀鐚 */ |
1110 int start_pt = 0; | 1110 int start_pt = 0; |
1111 const char* tk1 = strchr(tokens[1], '-'); | 1111 const char* tk1 = strchr(tokens[1], '-'); |
1112 const char* tk2 = NULL; | 1112 const char* tk2 = NULL; |
1113 if (tk1 && *tk1) tk2 = strchr(tk1+1, '-'); | 1113 if (tk1 && *tk1) tk2 = strchr(tk1+1, '-'); |
1114 if (tk2 && *tk2) start_pt = atoi(tk2+1); | 1114 if (tk2 && *tk2) start_pt = atoi(tk2+1); |
1131 } | 1131 } |
1132 } | 1132 } |
1133 dprintf(("Set SE %d, name %s\n",atoi(tokens[0]+4), tokens[1])); | 1133 dprintf(("Set SE %d, name %s\n",atoi(tokens[0]+4), tokens[1])); |
1134 goto parse_end; | 1134 goto parse_end; |
1135 } | 1135 } |
1136 /* 設定項目が見つからなかった */ | 1136 /* 荐絎荀ゃc */ |
1137 dprintf(("Cannot find configuration name: %s\n",tokens[0])); | 1137 dprintf(("Cannot find configuration name: %s\n",tokens[0])); |
1138 parse_error: | 1138 parse_error: |
1139 parse_end: | 1139 parse_end: |
1140 line_count++; | 1140 line_count++; |
1141 } | 1141 } |
1142 delete info; | 1142 delete info; |
1143 /* デフォルトのオプションを指定する */ | 1143 /* 激с潟絎 */ |
1144 // set_game(GetParaStr("#REGNAME"), *this); | 1144 // set_game(GetParaStr("#REGNAME"), *this); |
1145 return true; | 1145 return true; |
1146 } | 1146 } |
1147 | 1147 |
1148 TrackName::TrackName(void) { | 1148 TrackName::TrackName(void) { |