//--------------------------------------------------------------------- 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") {
//--------------------------------------------------------------------- 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"); }
/*ストーリーロード*/ 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; } }