Switch all to fastfile factory.

This commit is contained in:
= 2025-06-04 22:33:02 -04:00
parent 298d5e9848
commit 0576fb5bd4
3 changed files with 33 additions and 50 deletions

View File

@ -44,6 +44,10 @@ QString FastFile::GetStem() const {
return mStem; return mStem;
} }
QString FastFile::GetBaseStem() const {
return mStem.split('.').first();
}
FF_FILETYPE FastFile::GetType() const { FF_FILETYPE FastFile::GetType() const {
return mType; return mType;
} }
@ -257,50 +261,13 @@ std::shared_ptr<FastFile> FastFile::Open(const QString &aFilePath) {
LogManager::instance().addEntry("Contents read in"); LogManager::instance().addEntry("Contents read in");
LogManager::instance().addEntry(QString("- Size: %1 B").arg(data.size())); LogManager::instance().addEntry(QString("- Size: %1 B").arg(data.size()));
LogManager::instance().addEntry("File closed");
file->close(); file->close();
LogManager::instance().addEntry("File closed");
// Create a QDataStream on the input data. const QString fastFileStem = aFilePath.section("/", -1, -1);
QDataStream fastFileStream(data);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
quint32 companyInt;
FF_COMPANY company = pParseFFCompany(&fastFileStream, companyInt);
qDebug() << "Company: " << company;
FF_FILETYPE fileType;
FF_SIGNAGE signage;
QString magic;
quint32 version;
QString platform;
QString game;
if ((company == COMPANY_NONE) && (companyInt == 0)) {
company = COMPANY_INFINITY_WARD;
game = "COD2";
platform = "360";
} else {
fileType = pParseFFFileType(&fastFileStream);
signage = pParseFFSignage(&fastFileStream);
magic = pParseFFMagic(&fastFileStream);
version = pParseFFVersion(&fastFileStream);
platform = pCalculateFFPlatform(version);
game = pCalculateFFGame(version);
LogManager::instance().addEntry(QString("Type: %1").arg(fileType));
LogManager::instance().addEntry(QString("Signage: %1").arg(signage));
LogManager::instance().addEntry(QString("Magic: %1").arg(magic));
LogManager::instance().addEntry(QString("Version: %1").arg(version));
}
LogManager::instance().addEntry(QString("Company: %1").arg(company));
LogManager::instance().addEntry(QString("Game: %1").arg(game));
LogManager::instance().addEntry(QString("Platform: %1").arg(platform));
const QString fastFileStem = aFilePath.section("/", -1, -1).section('.', 0, 0);
LogManager::instance().addEntry(QString("Stem: %1").arg(fastFileStem)); LogManager::instance().addEntry(QString("Stem: %1").arg(fastFileStem));
std::shared_ptr<FastFile> fastFile = FastFileFactory::Create(data); std::shared_ptr<FastFile> fastFile = FastFileFactory::Create(data);
fastFile->SetCompany(company);
fastFile->SetStem(fastFileStem); fastFile->SetStem(fastFileStem);
return fastFile; return fastFile;

View File

@ -25,6 +25,7 @@ public:
virtual QByteArray GetBinaryData() = 0; virtual QByteArray GetBinaryData() = 0;
virtual QString GetStem() const; virtual QString GetStem() const;
virtual QString GetBaseStem() const;
virtual FF_FILETYPE GetType() const; virtual FF_FILETYPE GetType() const;
virtual FF_COMPANY GetCompany() const; virtual FF_COMPANY GetCompany() const;
virtual FF_SIGNAGE GetSignage() const; virtual FF_SIGNAGE GetSignage() const;

View File

@ -35,7 +35,9 @@
#include "PC/fastfile_cod11_pc.h" #include "PC/fastfile_cod11_pc.h"
#include "PC/fastfile_cod12_pc.h" #include "PC/fastfile_cod12_pc.h"
#include "Wii//fastfile_cod7_wii.h" #include "Wii/fastfile_cod4_wii.h"
#include "Wii/fastfile_cod7_wii.h"
#include "Wii/fastfile_cod8_wii.h"
#include "WiiU/fastfile_cod9_wiiu.h" #include "WiiU/fastfile_cod9_wiiu.h"
#include "WiiU/fastfile_cod10_wiiu.h" #include "WiiU/fastfile_cod10_wiiu.h"
@ -153,8 +155,12 @@ public:
resultFF = std::make_shared<FastFile_COD12_PS3>(newPath); resultFF = std::make_shared<FastFile_COD12_PS3>(newPath);
} }
} else if (platform == PLATFORM_WII) { } else if (platform == PLATFORM_WII) {
if (game == GAME_COD7) { if (game == GAME_COD4) {
resultFF = std::make_shared<FastFile_COD4_Wii>(newPath);
} else if (game == GAME_COD7) {
resultFF = std::make_shared<FastFile_COD7_Wii>(newPath); resultFF = std::make_shared<FastFile_COD7_Wii>(newPath);
} else if (game == GAME_COD8) {
resultFF = std::make_shared<FastFile_COD8_Wii>(newPath);
} }
} else if (platform == PLATFORM_WIIU) { } else if (platform == PLATFORM_WIIU) {
if (game == GAME_COD9) { if (game == GAME_COD9) {
@ -233,8 +239,12 @@ public:
resultFF = std::make_shared<FastFile_COD12_PS3>(aData); resultFF = std::make_shared<FastFile_COD12_PS3>(aData);
} }
} else if (platform == PLATFORM_WII) { } else if (platform == PLATFORM_WII) {
if (game == GAME_COD7) { if (game == GAME_COD4) {
resultFF = std::make_shared<FastFile_COD4_Wii>(aData);
} else if (game == GAME_COD7) {
resultFF = std::make_shared<FastFile_COD7_Wii>(aData); resultFF = std::make_shared<FastFile_COD7_Wii>(aData);
} else if (game == GAME_COD8) {
resultFF = std::make_shared<FastFile_COD8_Wii>(aData);
} }
} else if (platform == PLATFORM_WIIU) { } else if (platform == PLATFORM_WIIU) {
if (game == GAME_COD9) { if (game == GAME_COD9) {
@ -269,9 +279,10 @@ private:
if (sections[0] == "0000") { if (sections[0] == "0000") {
return PLATFORM_360; return PLATFORM_360;
} else if (sections[4] == "0000") { } else if (sections[4] == "0000") {
if (sections[5] == "0001" && sections[6] == "78DA") { if (sections[5] == "0001" && sections[6] == "78DA") {
return PLATFORM_360; return PLATFORM_360;
} else if (sections[5] == "0001" && sections[6] == "4957") {
return PLATFORM_360;
} else if (sections[5] == "0183" && sections[6] == "7801") { } else if (sections[5] == "0183" && sections[6] == "7801") {
return PLATFORM_360; return PLATFORM_360;
} else if (sections[6] == "0101" && sections[7] == "CA3E") { } else if (sections[6] == "0101" && sections[7] == "CA3E") {
@ -288,12 +299,16 @@ private:
return PLATFORM_360; return PLATFORM_360;
} else if (sections[2] == "3030" && sections[3] == "3030") { } else if (sections[2] == "3030" && sections[3] == "3030") {
return PLATFORM_360; return PLATFORM_360;
} else if (sections[5] == "01A2" && sections[6] == "7801") {
return PLATFORM_WII;
} else if (sections[5] == "01DD" && sections[6] == "7801") {
return PLATFORM_WII;
} else if (sections[5] == "006B") {
return PLATFORM_WII;
} }
} else if (sections[5] == "0000") { } else if (sections[5] == "0000") {
return PLATFORM_PC; return PLATFORM_PC;
} else if (sections[5] == "01DD" && sections[6] == "7801") { }else if (sections[5] == "0094" || sections[6] == "0100") {
return PLATFORM_WII;
} else if (sections[5] == "0094" || sections[6] == "0100") {
return PLATFORM_WIIU; return PLATFORM_WIIU;
} }
return PLATFORM_PS3; return PLATFORM_PS3;
@ -303,15 +318,15 @@ private:
const QStringList sections = pGetDataSections(aData); const QStringList sections = pGetDataSections(aData);
if (sections[0] == "0000") { if (sections[0] == "0000") {
return GAME_COD2; return GAME_COD2;
} else if (sections[4] == "0500" || sections[5] == "0001") { } else if (sections[4] == "0500" || sections[5] == "01A2" || sections[5] == "0001") {
return GAME_COD4; return GAME_COD4;
} else if (sections[4] == "8301" || sections[5] == "0183") { } else if (sections[4] == "8301" || sections[5] == "0183") {
return GAME_COD5; return GAME_COD5;
} else if (sections[4] == "1401" || sections[5] == "010D") { } else if (sections[4] == "1401" || sections[5] == "010D") {
return GAME_COD6; return GAME_COD6;
} else if (sections[4] == "D901" || sections[5] == "01D9") { } else if (sections[4] == "D901" || sections[5] == "01DD" || sections[5] == "01D9") {
return GAME_COD7; return GAME_COD7;
} else if (sections[4] == "0100" || sections[5] == "0070") { } else if (sections[4] == "0100" || sections[5] == "006B" || sections[5] == "0070") {
return GAME_COD8; return GAME_COD8;
} else if (sections[4] == "9300" || sections[5] == "0092" } else if (sections[4] == "9300" || sections[5] == "0092"
|| sections[5] == "0094") { || sections[5] == "0094") {