// Game_FileHeaderクラスのポインタを渡すと、 // その内容に指定したインデックスのファイルのファイルヘッダを読み込む。 bool GetGameFileHeader(Game_FileHeader* pHeader, BYTE index){ TCHAR fileName[SIZE_SAVEFILENAME]; // ファイル名を取得する if(!GetSaveGameFileName(fileName, SIZE_SAVEFILENAME, index)){ return false; } // ファイルが存在するかどうか判定する if(!GetGameFileIsExist(index)){ return false; } // MyFilesクラス MyFiles file; // ファイルを開く if(!file.LoadFilesFromDat(fileName)){ return false; } // 復号化 file.EncodeFileXOR( SAVEFILE_INDEX_FILEHEADER, _T(SAVEFILE_CODE_FILEHEADER), (WORD)strlen(_T(SAVEFILE_CODE_FILEHEADER))); // ポインタの取得 LPVOID pData = file.GetFilePointerByIndex(SAVEFILE_INDEX_FILEHEADER); // ファイルサイズが正しいかどうかの確認 DWORD fileSize = file.GetFileSize(SAVEFILE_INDEX_FILEHEADER); // データの読み込み if(!pHeader->LoadFromBytes(pData, fileSize)){ return false; } return true; }
bool Scene_Title::Initialize(bool fSkipFrame){ Scene_Base::Initialize(fSkipFrame); // セーブファイルがあれば続きからに移動する bool canContinue = false; for(int n=0; n<MAX_SAVEFILE; n++){ if(GetGameFileIsExist(n+1)){ canContinue = true; } } if(canContinue){ s_main.index = TITLE_MENU_CONTINUE; }else{ s_main.index = TITLE_MENU_NEWGAME; s_main.isActive[TITLE_MENU_CONTINUE] = false; } // 選択肢の一部を無効化 s_main.isActive[TITLE_MENU_STOCKDOLLS] = false; s_main.isActive[TITLE_MENU_RECORDS] = false; // クリアしていないチャプターを無効化 return true; }
// ゲームデータを読み込む bool LoadGame(BYTE index){ // 現在の時間情報を更新する r_aliceInfo.GetCntTime(true); // ファイル名の取得 TCHAR fileName[SIZE_SAVEFILENAME]; // ファイルのポインタを受け取る LPVOID pData = NULL; // ファイルサイズ DWORD fileSize; // ファイル名を取得する if(!GetSaveGameFileName(fileName, SIZE_SAVEFILENAME, index)){ return false; } // ファイルが存在するかどうか判定する if(!GetGameFileIsExist(index)){ return false; } // MyFilesクラス MyFiles file; // ファイルを開く if(!file.LoadFilesFromDat(fileName)){ return false; } // ヘッダファイルは読み込む必要がない // アリスの情報ファイルを読み込む // 復号化 file.EncodeFileXOR( SAVEFILE_INDEX_ALICEINFO, _T(SAVEFILE_CODE_ALICEINFO), (WORD)strlen(_T(SAVEFILE_CODE_ALICEINFO))); // ポインタの取得 pData = file.GetFilePointerByIndex(SAVEFILE_INDEX_ALICEINFO); // ファイルサイズが正しいかどうかの確認 fileSize = file.GetFileSize(SAVEFILE_INDEX_ALICEINFO); if(!r_aliceInfo.LoadFromBytes(pData, fileSize)){ return false; } // 人形リストの読み込み // 復号化 file.EncodeFileXOR( SAVEFILE_INDEX_CHOOSEMAP, _T(SAVEFILE_CODE_CHOOSEMAP), (WORD)strlen(_T(SAVEFILE_CODE_CHOOSEMAP))); // ポインタの取得 pData = file.GetFilePointerByIndex(SAVEFILE_INDEX_CHOOSEMAP); // ファイルサイズが正しいかどうかの確認 fileSize = file.GetFileSize(SAVEFILE_INDEX_CHOOSEMAP); if(!r_chooseMap.LoadFromBytes(pData, fileSize)){ return false; } return true; }