void CMempak::LoadMempak(int32_t Control) { stdstr MempakName; MempakName.Format("%s_Cont_%d", g_Settings->LoadStringVal(Game_GameName).c_str(), Control + 1); CPath MempakPath(g_Settings->LoadStringVal(Directory_NativeSave).c_str(), stdstr_f("%s.mpk", MempakName.c_str()).c_str()); if (g_Settings->LoadBool(Setting_UniqueSaveDir)) { MempakPath.AppendDirectory(g_Settings->LoadStringVal(Game_UniqueSaveDir).c_str()); } if (!MempakPath.DirectoryExists()) { MempakPath.DirectoryCreate(); } bool formatMempak = !MempakPath.Exists(); m_MempakHandle[Control].Open(MempakPath, CFileBase::modeReadWrite | CFileBase::modeNoTruncate | CFileBase::modeCreate); m_MempakHandle[Control].SeekToBegin(); if (formatMempak) { CMempak::Format(Control); m_MempakHandle[Control].Write(m_Mempaks[Control], 0x8000); } else { m_MempakHandle[Control].Read(m_Mempaks[Control], 0x8000); } }
void CMempak::LoadMempak(int32_t Control, bool Create) { stdstr MempakName; MempakName.Format("%s_Cont_%d", g_Settings->LoadStringVal(Game_GameName).c_str(), Control + 1); CPath MempakPath(g_Settings->LoadStringVal(Directory_NativeSave).c_str(), stdstr_f("%s.mpk", MempakName.c_str()).c_str()); if (g_Settings->LoadBool(Setting_UniqueSaveDir)) { MempakPath.AppendDirectory(g_Settings->LoadStringVal(Game_UniqueSaveDir).c_str()); } #ifdef _WIN32 MempakPath.NormalizePath(CPath(CPath::MODULE_DIRECTORY)); #endif if (!Create && !MempakPath.Exists()) { if (!m_Formatted[Control]) { CMempak::Format(Control); m_Formatted[Control] = true; } m_SaveExists[Control] = false; return; } if (!MempakPath.DirectoryExists()) { MempakPath.DirectoryCreate(); } bool formatMempak = !MempakPath.Exists(); m_MempakHandle[Control].Open(MempakPath, CFileBase::modeReadWrite | CFileBase::modeNoTruncate | CFileBase::modeCreate); m_MempakHandle[Control].SeekToBegin(); if (formatMempak) { if (!m_Formatted[Control]) { CMempak::Format(Control); m_Formatted[Control] = true; } m_MempakHandle[Control].Write(m_Mempaks[Control], 0x8000); } else { m_MempakHandle[Control].Read(m_Mempaks[Control], 0x8000); m_Formatted[Control] = true; } }