Removed unused asset functions, refactored.
This commit is contained in:
parent
14f6a481f5
commit
67f3e21779
349
mainwindow.cpp
349
mainwindow.cpp
@ -278,12 +278,12 @@ QByteArray MainWindow::DecompressZLIB(QByteArray compressedData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
OpenFastFile()
|
GetFastFilePath()
|
||||||
|
|
||||||
Opens a file dialog in the steam folder,
|
Opens a file dialog in the steam folder,
|
||||||
and opens the selected file.
|
and opens the selected file.
|
||||||
*/
|
*/
|
||||||
QFile* MainWindow::OpenFastFile() {
|
QString MainWindow::GetFastFilePath() {
|
||||||
// Reset dialog before opening new file
|
// Reset dialog before opening new file
|
||||||
Reset();
|
Reset();
|
||||||
|
|
||||||
@ -299,22 +299,16 @@ QFile* MainWindow::OpenFastFile() {
|
|||||||
const QString fastFileStem = fastFilePath.split('/').last();
|
const QString fastFileStem = fastFilePath.split('/').last();
|
||||||
setWindowTitle(QString("FastFile Wizard - %1").arg(fastFileStem));
|
setWindowTitle(QString("FastFile Wizard - %1").arg(fastFileStem));
|
||||||
|
|
||||||
// Check fastfile can be read
|
return fastFilePath;
|
||||||
QFile *fastFile = new QFile(fastFilePath);
|
|
||||||
if (!fastFile->open(QIODevice::ReadOnly)) {
|
|
||||||
QMessageBox::warning(this, "Warning!", QString("%1 could not be read!.").arg(fastFilePath));
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
return fastFile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
OpenZoneFile()
|
GetZoneFilePath()
|
||||||
|
|
||||||
Opens a file dialog in the steam folder,
|
Opens a file dialog in the steam folder,
|
||||||
and opens the selected file.
|
and opens the selected file.
|
||||||
*/
|
*/
|
||||||
QFile* MainWindow::OpenZoneFile() {
|
QString MainWindow::GetZoneFilePath() {
|
||||||
// Reset dialog before opening new file
|
// Reset dialog before opening new file
|
||||||
Reset();
|
Reset();
|
||||||
|
|
||||||
@ -330,13 +324,74 @@ QFile* MainWindow::OpenZoneFile() {
|
|||||||
const QString zoneFileStem = zoneFilePath.split('/').last();
|
const QString zoneFileStem = zoneFilePath.split('/').last();
|
||||||
setWindowTitle(QString("FastFile Wizard - %1").arg(zoneFileStem));
|
setWindowTitle(QString("FastFile Wizard - %1").arg(zoneFileStem));
|
||||||
|
|
||||||
// Check fastfile can be read
|
return zoneFilePath;
|
||||||
QFile *zoneFile = new QFile(zoneFilePath);
|
|
||||||
if (!zoneFile->open(QIODevice::ReadOnly)) {
|
|
||||||
QMessageBox::warning(this, "Warning!", QString("%1 could not be read!.").arg(zoneFilePath));
|
|
||||||
return nullptr;
|
|
||||||
}
|
}
|
||||||
return zoneFile;
|
|
||||||
|
QByteArray MainWindow::OpenFastFile(QString aFastFilePath)
|
||||||
|
{
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
// Check fastfile can be read
|
||||||
|
QFile *fastFile = new QFile(aFastFilePath);
|
||||||
|
qDebug() << aFastFilePath;
|
||||||
|
if (!fastFile->open(QIODevice::ReadOnly)) {
|
||||||
|
QMessageBox::warning(this, "Warning!", QString("FastFile '%1' could not be read!.").arg(fastFile->fileName()));
|
||||||
|
return QByteArray();
|
||||||
|
}
|
||||||
|
LogOpenedFile(fastFile->fileName());
|
||||||
|
ui->lineEdit_FastFile->setText(fastFile->fileName());
|
||||||
|
|
||||||
|
// Decompress fastfile and close
|
||||||
|
const QByteArray fastFileData = fastFile->readAll();
|
||||||
|
|
||||||
|
// Parse data from fast file header
|
||||||
|
ParseFFHeader(fastFileData.mid(0, 12));
|
||||||
|
|
||||||
|
fastFile->close();
|
||||||
|
|
||||||
|
// Decompress fastfile and close
|
||||||
|
const QByteArray decompressedData = DecompressZLIB(fastFileData.mid(12));
|
||||||
|
// ui->plainTextEdit_ZoneDump->setPlainText(decompressedData.toHex());
|
||||||
|
|
||||||
|
const QString zoneFilePath = aFastFilePath.replace(".ff", ".zone");
|
||||||
|
ui->lineEdit_ZoneFile->setText(zoneFilePath);
|
||||||
|
|
||||||
|
// Open zone file
|
||||||
|
OpenZoneFile(zoneFilePath);
|
||||||
|
|
||||||
|
// Clean up & return
|
||||||
|
delete fastFile;
|
||||||
|
return fastFileData;
|
||||||
|
}
|
||||||
|
|
||||||
|
QByteArray MainWindow::OpenZoneFile(QString aZoneFilePath)
|
||||||
|
{
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
// Check zone file is writeable
|
||||||
|
QFile *zoneFile = new QFile(aZoneFilePath);
|
||||||
|
if (!zoneFile->open(QIODevice::ReadOnly)) {
|
||||||
|
QMessageBox::warning(this, "Warning!", QString("ZoneFile '%1' could not be read!.").arg(zoneFile->fileName()));
|
||||||
|
return QByteArray();
|
||||||
|
}
|
||||||
|
LogOpenedFile(zoneFile->fileName());
|
||||||
|
ui->lineEdit_ZoneFile->setText(zoneFile->fileName());
|
||||||
|
|
||||||
|
// Parse & close zone file
|
||||||
|
QByteArray zoneFileData = zoneFile->readAll();
|
||||||
|
ParseZoneFile(zoneFileData);
|
||||||
|
zoneFile->close();
|
||||||
|
|
||||||
|
// Check if corresponding zone file exists
|
||||||
|
const QString fastFilePath = zoneFile->fileName().replace(".zone", ".ff");
|
||||||
|
if (QFile::exists(fastFilePath)) {
|
||||||
|
ui->lineEdit_FastFile->setText(fastFilePath);
|
||||||
|
LogOpenedFile(fastFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean up & return
|
||||||
|
delete zoneFile;
|
||||||
|
return zoneFileData;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::ParseFFCompany(QDataStream *afastFileStream) {
|
void MainWindow::ParseFFCompany(QDataStream *afastFileStream) {
|
||||||
@ -420,9 +475,9 @@ void MainWindow::ParseFFVersion(QDataStream *afastFileStream) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::ParseFFHeader(QFile *aFastFilePtr) {
|
void MainWindow::ParseFFHeader(QByteArray aFastFileData) {
|
||||||
// Open stream to fastfile
|
// Open stream to fastfile
|
||||||
QDataStream afastFileStream(aFastFilePtr);
|
QDataStream afastFileStream(aFastFileData);
|
||||||
afastFileStream.setByteOrder(QDataStream::LittleEndian);
|
afastFileStream.setByteOrder(QDataStream::LittleEndian);
|
||||||
|
|
||||||
ParseFFCompany(&afastFileStream);
|
ParseFFCompany(&afastFileStream);
|
||||||
@ -759,10 +814,6 @@ void MainWindow::ParseAsset_RawFile(QDataStream *aZoneFileStream) {
|
|||||||
// qDebug() << QString("%1: %2").arg(rawFilePath).arg(rawFileContents);
|
// qDebug() << QString("%1: %2").arg(rawFilePath).arg(rawFileContents);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::ParseAsset_PhysPreset(QDataStream *aZoneFileStream) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::ParseAsset_XModel(QDataStream *aZoneFileStream) {
|
void MainWindow::ParseAsset_XModel(QDataStream *aZoneFileStream) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -793,10 +844,6 @@ void MainWindow::ParseAsset_TechSet(QDataStream *aZoneFileStream) {
|
|||||||
//qDebug() << "Tech Set: " << techSetName;
|
//qDebug() << "Tech Set: " << techSetName;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::ParseAsset_Image(QDataStream *aZoneFileStream) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::ParseAsset_LoadedSound(QDataStream *aZoneFileStream) {
|
void MainWindow::ParseAsset_LoadedSound(QDataStream *aZoneFileStream) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -805,34 +852,14 @@ void MainWindow::ParseAsset_ColMapMP(QDataStream *aZoneFileStream) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::ParseAsset_GameMapSP(QDataStream *aZoneFileStream) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::ParseAsset_GameMapMP(QDataStream *aZoneFileStream) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::ParseAsset_LightDef(QDataStream *aZoneFileStream) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::ParseAsset_UIMap(QDataStream *aZoneFileStream) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::ParseAsset_SNDDriverGlobals(QDataStream *aZoneFileStream) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::ParseAsset_AIType(QDataStream *aZoneFileStream) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::ParseAsset_FX(QDataStream *aZoneFileStream) {
|
void MainWindow::ParseAsset_FX(QDataStream *aZoneFileStream) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::ParseAsset_Font(QDataStream *aZoneFileStream) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::ParseAsset_XAnim(QDataStream *aZoneFileStream) {
|
void MainWindow::ParseAsset_XAnim(QDataStream *aZoneFileStream) {
|
||||||
// Read in pointer to x_anim name
|
// Read in pointer to x_anim name
|
||||||
QByteArray namePtr(4, Qt::Uninitialized);
|
QByteArray namePtr(4, Qt::Uninitialized);
|
||||||
@ -1413,37 +1440,62 @@ void MainWindow::ParseAsset_StringTable(QDataStream *aZoneFileStream) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_pushButton_FastFile_clicked() {
|
void MainWindow::on_pushButton_FastFile_clicked() {
|
||||||
// Try to prompt user to open fastfile
|
// Open fast file
|
||||||
QFile *fastFile;
|
QString fastFilePath = GetFastFilePath();
|
||||||
if (!(fastFile = OpenFastFile())) {
|
OpenFastFile(fastFilePath);
|
||||||
QMessageBox::warning(this, "Warning!", QString("Failed to open FastFile!."));
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse data from fast file header
|
void MainWindow::on_pushButton_ZoneFile_clicked() {
|
||||||
ParseFFHeader(fastFile);
|
const QString zoneFilePath = GetZoneFilePath();
|
||||||
|
OpenZoneFile(zoneFilePath);
|
||||||
// Decompress fastfile and close
|
|
||||||
const QByteArray fastFileData = fastFile->readAll();
|
|
||||||
const QByteArray decompressedData = DecompressZLIB(fastFileData);
|
|
||||||
// ui->plainTextEdit_ZoneDump->setPlainText(decompressedData.toHex());
|
|
||||||
|
|
||||||
const QString zoneFilePath = fastFile->fileName().replace(".ff", ".zone");
|
|
||||||
fastFile->close();
|
|
||||||
|
|
||||||
// Check zone file is writeable
|
|
||||||
QFile *zoneFile = new QFile(zoneFilePath);
|
|
||||||
if (!zoneFile->open(QIODevice::ReadWrite)) {
|
|
||||||
qDebug() << QString("Zone file could not be written to: '%1'").arg(zoneFilePath);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
// Write zone data
|
|
||||||
zoneFile->write(decompressedData);
|
|
||||||
zoneFile->close();
|
|
||||||
|
|
||||||
|
void MainWindow::LogOpenedFile(QString aFileName)
|
||||||
|
{
|
||||||
|
mRecentFiles.enqueue(aFileName);
|
||||||
|
mRecentFiles.removeDuplicates();
|
||||||
|
|
||||||
|
RefreshRecentFileMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::RefreshRecentFileMenu()
|
||||||
|
{
|
||||||
|
foreach (QAction* action, mRecentFileActions) {
|
||||||
|
ui->menuRecent_Fast_Files->removeAction(action);
|
||||||
|
ui->menuRecent_Zone_Files->removeAction(action);
|
||||||
|
|
||||||
|
action->deleteLater();
|
||||||
|
}
|
||||||
|
mRecentFileActions.clear();
|
||||||
|
|
||||||
|
foreach (QString recentFileText, mRecentFiles) {
|
||||||
|
if (recentFileText.contains(".ff")) {
|
||||||
|
QAction *recentFastFileAction = new QAction(ui->menuRecent_Fast_Files);
|
||||||
|
recentFastFileAction->setText(recentFileText);
|
||||||
|
mRecentFileActions << recentFastFileAction;
|
||||||
|
ui->menuRecent_Fast_Files->addAction(recentFastFileAction);
|
||||||
|
|
||||||
|
connect(recentFastFileAction, &QAction::triggered, this, [&, this, recentFileText](bool checked = false) {
|
||||||
|
OpenFastFile(recentFileText);
|
||||||
|
});
|
||||||
|
} else if (recentFileText.contains(".zone")) {
|
||||||
|
QAction *recentZoneFileAction = new QAction(ui->menuRecent_Zone_Files);
|
||||||
|
recentZoneFileAction->setText(recentFileText);
|
||||||
|
mRecentFileActions << recentZoneFileAction;
|
||||||
|
ui->menuRecent_Zone_Files->addAction(recentZoneFileAction);
|
||||||
|
|
||||||
|
connect(recentZoneFileAction, &QAction::triggered, this, [&, this, recentFileText](bool checked = false) {
|
||||||
|
OpenZoneFile(recentFileText);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::ParseZoneFile(QByteArray aDecompressedData) {
|
||||||
// Open zone file as little endian stream
|
// Open zone file as little endian stream
|
||||||
QDataStream zoneFileStream(decompressedData);
|
QDataStream zoneFileStream(aDecompressedData);
|
||||||
zoneFileStream.setByteOrder(QDataStream::LittleEndian);
|
zoneFileStream.setByteOrder(QDataStream::LittleEndian);
|
||||||
|
zoneFileStream.setFloatingPointPrecision(QDataStream::SinglePrecision);
|
||||||
|
|
||||||
// Parse data from zone file header
|
// Parse data from zone file header
|
||||||
ParseZoneHeader(&zoneFileStream);
|
ParseZoneHeader(&zoneFileStream);
|
||||||
@ -1472,157 +1524,40 @@ void MainWindow::on_pushButton_FastFile_clicked() {
|
|||||||
const QString typeStr = Utils::AssetTypeToString(typeHex);
|
const QString typeStr = Utils::AssetTypeToString(typeHex);
|
||||||
|
|
||||||
// qDebug() << "Parsing Asset of Type: " << typeHex;
|
// qDebug() << "Parsing Asset of Type: " << typeHex;
|
||||||
if (typeStr == "LOCAL STRING") { // localized string asset
|
if (typeStr == "ANIMATION") { // aitype
|
||||||
ParseAsset_LocalString(&zoneFileStream);
|
ParseAsset_XAnim(&zoneFileStream);
|
||||||
} else if (typeStr == "RAW FILE") { // gsc
|
|
||||||
ParseAsset_RawFile(&zoneFileStream);
|
|
||||||
} else if (typeStr == "PHYS PRESET") { // physpreset
|
|
||||||
ParseAsset_PhysPreset(&zoneFileStream);
|
|
||||||
} else if (typeStr == "MODEL") { // xmodel
|
} else if (typeStr == "MODEL") { // xmodel
|
||||||
ParseAsset_XModel(&zoneFileStream);
|
ParseAsset_XModel(&zoneFileStream);
|
||||||
} else if (typeStr == "MATERIAL") { // material
|
} else if (typeStr == "MATERIAL") { // material
|
||||||
ParseAsset_Material(&zoneFileStream);
|
ParseAsset_Material(&zoneFileStream);
|
||||||
} else if (typeStr == "SHADER") { // pixelshader
|
|
||||||
ParseAsset_PixelShader(&zoneFileStream);
|
|
||||||
} else if (typeStr == "TECH SET") { // techset include
|
} else if (typeStr == "TECH SET") { // techset include
|
||||||
ParseAsset_TechSet(&zoneFileStream);
|
ParseAsset_TechSet(&zoneFileStream);
|
||||||
} else if (typeStr == "IMAGE") { // image
|
|
||||||
ParseAsset_Image(&zoneFileStream);
|
|
||||||
} else if (typeStr == "SOUND") { // loaded_sound
|
} else if (typeStr == "SOUND") { // loaded_sound
|
||||||
ParseAsset_LoadedSound(&zoneFileStream);
|
ParseAsset_LoadedSound(&zoneFileStream);
|
||||||
} else if (typeStr == "COLLISION MAP") { // col_map_mp
|
} else if (typeStr == "COLLISION MAP") { // col_map_mp
|
||||||
ParseAsset_ColMapMP(&zoneFileStream);
|
ParseAsset_ColMapMP(&zoneFileStream);
|
||||||
} else if (typeStr == "MP MAP") { // game_map_sp
|
} else if (typeStr == "SHADER") { // pixelshader
|
||||||
ParseAsset_GameMapSP(&zoneFileStream);
|
ParseAsset_PixelShader(&zoneFileStream);
|
||||||
} else if (typeStr == "SP MAP") { // game_map_mp
|
|
||||||
ParseAsset_GameMapMP(&zoneFileStream);
|
|
||||||
} else if (typeStr == "LIGHT DEF") { // lightdef
|
|
||||||
ParseAsset_LightDef(&zoneFileStream);
|
|
||||||
} else if (typeStr == "UI MAP") { // ui_map
|
|
||||||
ParseAsset_UIMap(&zoneFileStream);
|
|
||||||
} else if (typeStr == "SND DRIVER GLOBALS") { // snddriverglobals
|
|
||||||
ParseAsset_SNDDriverGlobals(&zoneFileStream);
|
|
||||||
} else if (typeStr == "AI TYPE") { // aitype
|
|
||||||
ParseAsset_AIType(&zoneFileStream);
|
|
||||||
} else if (typeStr == "EFFECT") { // aitype
|
|
||||||
ParseAsset_FX(&zoneFileStream);
|
|
||||||
} else if (typeStr == "ANIMATION") { // aitype
|
|
||||||
ParseAsset_XAnim(&zoneFileStream);
|
|
||||||
} else if (typeStr == "STRING TABLE") { // string_table
|
|
||||||
ParseAsset_StringTable(&zoneFileStream);
|
|
||||||
} else if (typeStr == "MENU") { // string_table
|
|
||||||
ParseAsset_MenuFile(&zoneFileStream);
|
|
||||||
} else if (typeStr == "WEAPON") { // string_table
|
|
||||||
ParseAsset_Weapon(&zoneFileStream);
|
|
||||||
} else if (typeStr == "D3DBSP DUMP") { // string_table
|
} else if (typeStr == "D3DBSP DUMP") { // string_table
|
||||||
ParseAsset_D3DBSP(&zoneFileStream);
|
ParseAsset_D3DBSP(&zoneFileStream);
|
||||||
} else if (typeStr != "UNKNOWN") {
|
} else if (typeStr == "FONT") { // font
|
||||||
qDebug() << "Found bad asset type!" << typeStr;
|
ParseAsset_Font(&zoneFileStream);
|
||||||
}
|
} else if (typeStr == "MENU") { // string_table
|
||||||
}
|
ParseAsset_MenuFile(&zoneFileStream);
|
||||||
|
} else if (typeStr == "LOCAL STRING") { // localized string asset
|
||||||
// Close zone file
|
|
||||||
zoneFile->close();
|
|
||||||
|
|
||||||
// Clean up
|
|
||||||
delete zoneFile;
|
|
||||||
delete fastFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_pushButton_FastFile_2_clicked() {
|
|
||||||
// Check zone file is writeable
|
|
||||||
QFile *zoneFile;
|
|
||||||
if (!(zoneFile = OpenZoneFile())) {
|
|
||||||
QMessageBox::warning(this, "Warning!", QString("Failed to open FastFile!."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const QByteArray decompressedData = zoneFile->readAll();
|
|
||||||
|
|
||||||
// Open zone file as little endian stream
|
|
||||||
QDataStream zoneFileStream(decompressedData);
|
|
||||||
zoneFileStream.setByteOrder(QDataStream::LittleEndian);
|
|
||||||
|
|
||||||
// Parse data from zone file header
|
|
||||||
ParseZoneHeader(&zoneFileStream);
|
|
||||||
ParseZoneIndex(&zoneFileStream);
|
|
||||||
|
|
||||||
// Track current and consecutive assets
|
|
||||||
int assetIndex = 0;
|
|
||||||
|
|
||||||
// Iterate asset types found in index
|
|
||||||
for (auto [assetType, assetCount] : mTypeMap.asKeyValueRange()) {
|
|
||||||
// Get asset description from type
|
|
||||||
QString assetStr = Utils::AssetTypeToString(assetType);
|
|
||||||
|
|
||||||
// Insert row and populate
|
|
||||||
ui->tableWidget_Index->insertRow(assetIndex);
|
|
||||||
ui->tableWidget_Index->setItem(assetIndex, 0, new QTableWidgetItem(assetType));
|
|
||||||
ui->tableWidget_Index->setItem(assetIndex, 1, new QTableWidgetItem(assetStr));
|
|
||||||
ui->tableWidget_Index->setItem(assetIndex, 2, new QTableWidgetItem(QString::number(assetCount)));
|
|
||||||
|
|
||||||
// Update count
|
|
||||||
assetIndex++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < mTypeOrder.size(); i++) {
|
|
||||||
const QString typeHex = mTypeOrder[i];
|
|
||||||
const QString typeStr = Utils::AssetTypeToString(typeHex);
|
|
||||||
|
|
||||||
// qDebug() << "Parsing Asset of Type: " << typeHex;
|
|
||||||
if (typeStr == "LOCAL STRING") { // localized string asset
|
|
||||||
ParseAsset_LocalString(&zoneFileStream);
|
ParseAsset_LocalString(&zoneFileStream);
|
||||||
|
} else if (typeStr == "WEAPON") { // string_table
|
||||||
|
ParseAsset_Weapon(&zoneFileStream);
|
||||||
|
} else if (typeStr == "EFFECT") { // aitype
|
||||||
|
ParseAsset_FX(&zoneFileStream);
|
||||||
} else if (typeStr == "RAW FILE") { // gsc
|
} else if (typeStr == "RAW FILE") { // gsc
|
||||||
ParseAsset_RawFile(&zoneFileStream);
|
ParseAsset_RawFile(&zoneFileStream);
|
||||||
} else if (typeStr == "PHYS PRESET") { // physpreset
|
|
||||||
ParseAsset_PhysPreset(&zoneFileStream);
|
|
||||||
} else if (typeStr == "MODEL") { // xmodel
|
|
||||||
ParseAsset_XModel(&zoneFileStream);
|
|
||||||
} else if (typeStr == "MATERIAL") { // material
|
|
||||||
ParseAsset_Material(&zoneFileStream);
|
|
||||||
} else if (typeStr == "SHADER") { // pixelshader
|
|
||||||
ParseAsset_PixelShader(&zoneFileStream);
|
|
||||||
} else if (typeStr == "TECH SET") { // techset include
|
|
||||||
ParseAsset_TechSet(&zoneFileStream);
|
|
||||||
} else if (typeStr == "IMAGE") { // image
|
|
||||||
ParseAsset_Image(&zoneFileStream);
|
|
||||||
} else if (typeStr == "SOUND") { // loaded_sound
|
|
||||||
ParseAsset_LoadedSound(&zoneFileStream);
|
|
||||||
} else if (typeStr == "COLLISION MAP") { // col_map_mp
|
|
||||||
ParseAsset_ColMapMP(&zoneFileStream);
|
|
||||||
} else if (typeStr == "MP MAP") { // game_map_sp
|
|
||||||
ParseAsset_GameMapSP(&zoneFileStream);
|
|
||||||
} else if (typeStr == "SP MAP") { // game_map_mp
|
|
||||||
ParseAsset_GameMapMP(&zoneFileStream);
|
|
||||||
} else if (typeStr == "LIGHT DEF") { // lightdef
|
|
||||||
ParseAsset_LightDef(&zoneFileStream);
|
|
||||||
} else if (typeStr == "UI MAP") { // ui_map
|
|
||||||
ParseAsset_UIMap(&zoneFileStream);
|
|
||||||
} else if (typeStr == "SND DRIVER GLOBALS") { // snddriverglobals
|
|
||||||
ParseAsset_SNDDriverGlobals(&zoneFileStream);
|
|
||||||
} else if (typeStr == "AI TYPE") { // aitype
|
|
||||||
ParseAsset_AIType(&zoneFileStream);
|
|
||||||
} else if (typeStr == "EFFECT") { // aitype
|
|
||||||
ParseAsset_FX(&zoneFileStream);
|
|
||||||
} else if (typeStr == "ANIMATION") { // aitype
|
|
||||||
ParseAsset_XAnim(&zoneFileStream);
|
|
||||||
} else if (typeStr == "STRING TABLE") { // string_table
|
} else if (typeStr == "STRING TABLE") { // string_table
|
||||||
ParseAsset_StringTable(&zoneFileStream);
|
ParseAsset_StringTable(&zoneFileStream);
|
||||||
} else if (typeStr == "MENU") { // string_table
|
} else {
|
||||||
ParseAsset_MenuFile(&zoneFileStream);
|
|
||||||
} else if (typeStr == "WEAPON") { // string_table
|
|
||||||
ParseAsset_Weapon(&zoneFileStream);
|
|
||||||
} else if (typeStr == "D3DBSP DUMP") { // string_table
|
|
||||||
ParseAsset_D3DBSP(&zoneFileStream);
|
|
||||||
} else if (typeStr != "UNKNOWN") {
|
|
||||||
qDebug() << "Found bad asset type!" << typeStr;
|
qDebug() << "Found bad asset type!" << typeStr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close zone file
|
|
||||||
zoneFile->close();
|
|
||||||
|
|
||||||
// Clean up
|
|
||||||
delete zoneFile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int MainWindow::LoadFile_D3DBSP(const QString aFilePath) {
|
int MainWindow::LoadFile_D3DBSP(const QString aFilePath) {
|
||||||
|
|||||||
30
mainwindow.h
30
mainwindow.h
@ -19,7 +19,7 @@
|
|||||||
#include <Qt3DRender/QCamera>
|
#include <Qt3DRender/QCamera>
|
||||||
#include <Qt3DRender/QCameraLens>
|
#include <Qt3DRender/QCameraLens>
|
||||||
#include <Qt3DCore/QTransform>
|
#include <Qt3DCore/QTransform>
|
||||||
#include <Qt3DCore/QAspectEngine>
|
#include <Qt3DCore/QAspectEngine>>
|
||||||
|
|
||||||
#include <Qt3DInput/QInputAspect>
|
#include <Qt3DInput/QInputAspect>
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ public:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_pushButton_FastFile_clicked();
|
void on_pushButton_FastFile_clicked();
|
||||||
void on_pushButton_FastFile_2_clicked();
|
void on_pushButton_ZoneFile_clicked();
|
||||||
|
|
||||||
void LogOpenedFile(QString aFileName);
|
void LogOpenedFile(QString aFileName);
|
||||||
void RefreshRecentFileMenu();
|
void RefreshRecentFileMenu();
|
||||||
@ -102,6 +102,7 @@ private slots:
|
|||||||
void ParseFFMagic(QDataStream *afastFileStream);
|
void ParseFFMagic(QDataStream *afastFileStream);
|
||||||
void ParseFFVersion(QDataStream *afastFileStream);
|
void ParseFFVersion(QDataStream *afastFileStream);
|
||||||
|
|
||||||
|
void ParseZoneFile(QByteArray aDecompressedData);
|
||||||
void ParseZoneHeader(QDataStream *aZoneFileStream);
|
void ParseZoneHeader(QDataStream *aZoneFileStream);
|
||||||
void ParseZoneSize(QDataStream *aZoneFileStream);
|
void ParseZoneSize(QDataStream *aZoneFileStream);
|
||||||
|
|
||||||
@ -113,28 +114,21 @@ private slots:
|
|||||||
void ParseZoneTags(QDataStream *aZoneFileStream);
|
void ParseZoneTags(QDataStream *aZoneFileStream);
|
||||||
void ParseZoneIndex(QDataStream *aZoneFileStream);
|
void ParseZoneIndex(QDataStream *aZoneFileStream);
|
||||||
|
|
||||||
void ParseAsset_LocalString(QDataStream *aZoneFileStream);
|
void ParseAsset_XAnim(QDataStream *aZoneFileStream);
|
||||||
void ParseAsset_RawFile(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_PhysPreset(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_XModel(QDataStream *aZoneFileStream);
|
void ParseAsset_XModel(QDataStream *aZoneFileStream);
|
||||||
void ParseAsset_Material(QDataStream *aZoneFileStream);
|
void ParseAsset_Material(QDataStream *aZoneFileStream);
|
||||||
void ParseAsset_PixelShader(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_TechSet(QDataStream *aZoneFileStream);
|
void ParseAsset_TechSet(QDataStream *aZoneFileStream);
|
||||||
void ParseAsset_Image(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_LoadedSound(QDataStream *aZoneFileStream);
|
void ParseAsset_LoadedSound(QDataStream *aZoneFileStream);
|
||||||
void ParseAsset_ColMapMP(QDataStream *aZoneFileStream);
|
void ParseAsset_ColMapMP(QDataStream *aZoneFileStream);
|
||||||
void ParseAsset_GameMapSP(QDataStream *aZoneFileStream);
|
void ParseAsset_PixelShader(QDataStream *aZoneFileStream);
|
||||||
void ParseAsset_GameMapMP(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_LightDef(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_UIMap(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_SNDDriverGlobals(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_AIType(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_FX(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_XAnim(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_StringTable(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_MenuFile(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_Weapon(QDataStream *aZoneFileStream);
|
|
||||||
void ParseAsset_D3DBSP(QDataStream *aZoneFileStream);
|
void ParseAsset_D3DBSP(QDataStream *aZoneFileStream);
|
||||||
|
void ParseAsset_Font(QDataStream *aZoneFileStream);
|
||||||
|
void ParseAsset_MenuFile(QDataStream *aZoneFileStream);
|
||||||
|
void ParseAsset_LocalString(QDataStream *aZoneFileStream);
|
||||||
|
void ParseAsset_Weapon(QDataStream *aZoneFileStream);
|
||||||
|
void ParseAsset_FX(QDataStream *aZoneFileStream);
|
||||||
|
void ParseAsset_RawFile(QDataStream *aZoneFileStream);
|
||||||
|
void ParseAsset_StringTable(QDataStream *aZoneFileStream);
|
||||||
|
|
||||||
int LoadFile_D3DBSP(const QString aFilePath);
|
int LoadFile_D3DBSP(const QString aFilePath);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user