Пример #1
0
//---------------------------------------------------------------------
void AllScenarioData::loadData()
{
    puts("シナリオデータをロードします");
    char str[1024];
    std::string s;
    std::stringstream ss;
    int num;
    int fp = FileRead_open("scenario/scenario_1.dat");
    // ファイル読み込み失敗
    if (fp == 0) {
        puts("シナリオデータの読み込みに失敗しました");
        return;
    }
    // ファイル読み込み処理
    while (FileRead_gets(str, 256, fp) != -1) {
        ss.clear();
        ss.str(str);
        ss >> s;
        //---- 番号
        if (s == "#NUM") {
            ss >> s;
            num = atoi(s.c_str());
            scenario_data[num]->setNum(num);
        }
        //---- 名前
        else if (s == "#NAME") {
Пример #2
0
//---------------------------------------------------------------------
void SaveData::load()
{
    char str[1024];
    std::string s;
    std::stringstream ss;
    int num;

    int fp = FileRead_open("savedata/savedata.dat");
    if (fp == 0) {
        puts("Fail loading savedata file");
        return;
    }
    while (FileRead_gets(str, 256, fp) != -1) {
        ss.clear();
        ss.str(str);
        //---- 
        ss >> s;
        num = atoi(s.c_str());
        is_data[num] = 1;
        //---- 
        ss >> s;
        scenario_pos[num] = atoi(s.c_str());
        //---- 
        ss >> s;
        save_day[num] = s;
        ss >> s;
        save_time[num] = s;
    }
    FileRead_close(fp);
    puts("Success loading savedata file");
}
Пример #3
0
/*ストーリーロード*/
void TextClass::LoadStory(){
	//真の変数
	int							FileHandle;			//ファイルハンドル
	char						TmpBuf[128];		//テキスト取得用一時変数
	char						FileName[64];		//ファイル名格納
	std::string					TmpText;			//テキスト取得後操作用一時オブジェクト 
	std::vector<std::string>	SplitTextArray;		//分割された文字を格納する配列

	//カウンタ
	int	Count = 0;									//カウンタ
	int	Scene = 0;									//シーンカウンタ

	//行数管理
	int SerifNo = -1;								//セリフのナンバーを格納(最初は必ず加算されるので、初期値は負の数にしておく)

	//定数
	const int LoadTextLen = 128;					//読み込むテキストの文字数
	const int NAME		  = 0;						//分割された文字列を格納する配列に関するもの
	const int TEXT		  = 1;						//分割された文字列を格納する配列に関するもの


	//SceneMax(定数)までロード
	while( Scene <= SceneMax ){ 

		//ファイル名を取得
		sprintf(FileName,"./resource/story/zankyo scene%d.txt",Scene);
		
		//ファイルオープン
		FileHandle = FileRead_open(FileName);

		//ファイル終端までループ
		while( FileRead_eof(FileHandle) == 0 ){
			//ファイルから一行取得
			FileRead_gets(TmpBuf,LoadTextLen,FileHandle);
			
			//一文字目が '\0' なら空行と判断しスキップ
			if( TmpBuf[0] == '\0'  ) continue;

			//char型配列のTmpBufをStringオブジェクトのTmpTextに変換
			TmpText = TmpBuf;
				
			//TmpTextの一文字目が'\0'ならば空行と判断しスキップ
			if( TmpText[0] == NULL ) continue;

			//全角・半角スペースを除去
			CutSpace(TmpText);

			//TmpTextの一文字目が'\0'ならば空行と判断しスキップ
			if( TmpText[0] == '\0' ) continue;

			//TmpTextをNameとTextに分割
			SplitTextArray = StringSplit(TmpText,':');

			//分割された文字列をNameとTextに代入
			Name[Scene][Count] = SplitTextArray[NAME];
			Text[Scene][Count] = SplitTextArray[TEXT];

			//Nameが"コメント"ならコメントと判断しスキップ
			if( Name[Scene][Count] == "コメント" ) continue;

			//一時処理、Nameが"背景"ならとりまスキップ
			//if( Name[Scene][Count] == "背景" ) continue;

			//Textが'\0'なら前のテキストの続きと判断し、Nameに続きと代入し、TextにName(一行全て入ってる)の内容をコピー & 行数加算
			//それ以外ならば次のテキストと判断し、SerifNoを加算し、行数加算
			if( Text[Scene][Count] == "\0" ){
				Text[Scene][Count] = Name[Scene][Count];
				Name[Scene][Count] = "続き";
				LineNo[Scene][SerifNo]++;
			}else{
				SerifNo++;
				LineNo[Scene][SerifNo]++;
			}

			//最大行数加算
			LineMax[Scene]++;

			//カウントを進める
			Count++;
		}

		//シーンカウントを進める
		Scene++;

		//カウント初期化
		Count=0;
		SerifNo=-1;

	}
	
}