view system/system_config.h @ 66:d112357a0ec1

Fix a bug with savegames introduced with changeset c7bcc0ec2267. Warning: savegames created since c7bcc0ec2267 are probably corrupted, you may have to start the game over. If you chose not to do so, you should replace all occurrences of 'TextWindow' by 'TextImplWindow', and 'Text Window' by 'TextImpl Window' in your save files.
author Thibaut Girka <thib@sitedethib.com>
date Sat, 11 Dec 2010 18:36:20 +0100
parents 4416cfac86ae
children
line wrap: on
line source

/*  system_config.h
 *      gameexe.ini ファイルの読み込み
 */

/*
 *
 *  Copyright (C) 2000-   Kazunori Ueno(JAGARL) <jagarl@creator.club.ne.jp>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
*/

#ifndef __SYSTEM_CONFIG_H__
#define __SYSTEM_CONFIG_H__

#include <string>

/* CD Track 名 <-> Track 番号の変換を行う */
class TrackName {
	private:
		char** track;
		int* track_num;
		char** track_wave;
		int* track_start;
		int deal;
		void Expand(void);
		char** se_track;
		int se_deal;
		void ExpandSE(int num);

	public:
		TrackName(void);
		~TrackName(void);
		void AddCDROM(char* name, int track);
		void AddWave(char* name, char* wave, int start_pt);
		void AddSE(int num, char* se);
		int CDTrack(char* name);
		int TrackStart(char* name);
		const char* WaveTrack(char* name);
		const char* SETrack(int num);
};
/* gameexe.ini で設定されるパラメータ */
/* まず初めに、設定項目を SetOrigPara* でセットする
** ただし、設定名は255文字以下である必要がある。
**
** SetPara* で設定項目は変更できる
** また、GetPara* で設定項目を得られる。
*/

class AyuSysConfig {
	public:
		static AyuSysConfig* GetInstance(void);
		static void Quit(void);

		bool LoadInitFile(void);
		/* パラメータを検索する */
		/* str なら 1, int なら 2, 見つからないなら 0 */
		int SearchParam(const char* name) const;
		/* パラメータを得る */
		const char* GetParaStr(const char* name) const; /* str */
		int GetParam(const char* name, int deal, ...) const; /* int, error -> return -1, no error -> return 0 */
		int GetOriginalParam(const char* name, int deal, ...) const; /* int, error -> return -1, no error -> return 0 */
		int GetParaInt(const char* name) const {
			int n;
			if (GetParam(name,1,&n)) return 0;
			return n;
		}
		const int* GetParamArray(const char* name, int& deal) const;
		/* パラメータを変更する */
		void SetParaStr(const char* name, const char* var); /* str */
		void SetParam(const char* name, int deal, ...); /* int */

		/* オリジナルの設定関係
		** SetOriginal : 全ての設定を初めの状態に戻す
		** DiffOriginal : 初めの状態と現在の状態の変更分を得る
		** PatchOriginal: DiffOriginal で得た文字列を引数に
		**   渡す。DiffOriginal 呼び出し時の状態に戻す
		*/
		void SetOriginal(void);
		void DiffOriginal(std::string&);
		const char* PatchOriginal(const char*);
		/* config の内容を表示する */
		void Dump(FILE* f) const;

	private:
		/* 元設定を行う */
		/* AyuSys からのみ可能 */
		void SetOrigParaStr(const char* name, const char* var); /* str */
		void SetOrigParam(const char* name, int para_deal, ...); /* int */
		void SetOrigParamArray(const char* name, int deal, int* array); /* 上とおなじ */
		AyuSysConfig(void);
		~AyuSysConfig();

	public:
		TrackName track_name;

	private:
		int change_flag;
		int dirty_flag;
		class AyuSysConfigString* str_config;
		class AyuSysConfigIntlist* int_config;
		static AyuSysConfig* _singleton;
};

#endif