2006-07-18 12:08:40 +00:00
|
|
|
#include "SaveImporter.h"
|
2011-12-22 05:59:15 +00:00
|
|
|
#include "StdStreamUtils.h"
|
2012-10-09 01:25:44 +00:00
|
|
|
#include "PsuSaveImporter.h"
|
|
|
|
#include "XpsSaveImporter.h"
|
|
|
|
#include "MaxSaveImporter.h"
|
2023-12-18 13:45:55 -05:00
|
|
|
#include "McDumpSaveImporter.h"
|
2006-07-18 12:08:40 +00:00
|
|
|
|
2019-10-16 20:51:11 -04:00
|
|
|
void CSaveImporter::ImportSave(Framework::CStream& input, const fs::path& outputPath, const OverwritePromptHandlerType& overwritePromptHandler)
|
2006-07-21 18:21:51 +00:00
|
|
|
{
|
2012-10-09 01:25:44 +00:00
|
|
|
std::shared_ptr<CSaveImporterBase> importer;
|
2006-07-21 18:21:51 +00:00
|
|
|
|
2012-10-09 01:25:44 +00:00
|
|
|
uint32 signature = input.Read32();
|
2011-12-22 05:59:15 +00:00
|
|
|
input.Seek(0, Framework::STREAM_SEEK_SET);
|
2006-07-18 12:08:40 +00:00
|
|
|
|
2012-10-09 01:25:44 +00:00
|
|
|
if(signature == 0x00008427)
|
2011-12-22 05:59:15 +00:00
|
|
|
{
|
2012-10-09 01:25:44 +00:00
|
|
|
importer = std::make_shared<CPsuSaveImporter>();
|
2011-12-22 05:59:15 +00:00
|
|
|
}
|
2012-10-09 01:25:44 +00:00
|
|
|
else if(signature == 0x0000000D)
|
2006-07-18 12:08:40 +00:00
|
|
|
{
|
2012-10-09 01:25:44 +00:00
|
|
|
importer = std::make_shared<CXpsSaveImporter>();
|
2006-07-18 12:08:40 +00:00
|
|
|
}
|
2012-10-09 01:25:44 +00:00
|
|
|
else if(signature == 0x50327350)
|
2006-07-18 12:08:40 +00:00
|
|
|
{
|
2012-10-09 01:25:44 +00:00
|
|
|
importer = std::make_shared<CMaxSaveImporter>();
|
2006-07-18 12:08:40 +00:00
|
|
|
}
|
2023-12-18 13:45:55 -05:00
|
|
|
else if(signature == 0x796E6F53)
|
|
|
|
{
|
|
|
|
importer = std::make_shared<CMcDumpSaveImporter>();
|
|
|
|
}
|
2012-10-09 01:25:44 +00:00
|
|
|
else
|
2006-07-18 12:08:40 +00:00
|
|
|
{
|
2012-10-09 01:25:44 +00:00
|
|
|
throw std::runtime_error("Unknown input file format.");
|
2006-07-18 12:08:40 +00:00
|
|
|
}
|
|
|
|
|
2012-10-09 01:25:44 +00:00
|
|
|
importer->SetOverwritePromptHandler(overwritePromptHandler);
|
|
|
|
importer->Import(input, outputPath);
|
2006-07-18 12:08:40 +00:00
|
|
|
}
|