2022-03-16 00:31:24 -04:00
|
|
|
#include "mainwindow.h"
|
|
|
|
|
2022-04-11 10:22:41 -04:00
|
|
|
#include <QHBoxLayout>
|
2022-03-16 00:31:24 -04:00
|
|
|
#include <QTableWidget>
|
|
|
|
#include <fmt/core.h>
|
2022-04-11 10:22:41 -04:00
|
|
|
#include <QListWidget>
|
2022-03-16 00:31:24 -04:00
|
|
|
|
|
|
|
#include "gamedata.h"
|
|
|
|
#include "exhparser.h"
|
|
|
|
#include "exdparser.h"
|
2022-04-11 21:54:30 -04:00
|
|
|
#include "mdlparser.h"
|
2022-03-16 00:31:24 -04:00
|
|
|
|
|
|
|
MainWindow::MainWindow(GameData& data) : data(data) {
|
|
|
|
setWindowTitle("Novus");
|
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
auto dummyWidget = new QWidget();
|
2022-03-16 00:31:24 -04:00
|
|
|
setCentralWidget(dummyWidget);
|
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
auto layout = new QHBoxLayout();
|
2022-03-16 00:31:24 -04:00
|
|
|
dummyWidget->setLayout(layout);
|
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
auto listWidget = new QListWidget();
|
2022-04-11 10:22:41 -04:00
|
|
|
for(auto name : data.getAllSheetNames()) {
|
|
|
|
listWidget->addItem(name.c_str());
|
2022-03-16 00:31:24 -04:00
|
|
|
}
|
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
auto* pageTabWidget = new QTabWidget();
|
|
|
|
|
2022-04-11 21:54:30 -04:00
|
|
|
data.extractFile("chara/equipment/e0000/model/c0201e0000_top.mdl", "top.mdl");
|
|
|
|
parseMDL("top.mdl");
|
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
connect(listWidget, &QListWidget::itemClicked, this, [&data, pageTabWidget](QListWidgetItem* item) {
|
|
|
|
pageTabWidget->clear();
|
2022-03-16 00:31:24 -04:00
|
|
|
|
2022-04-11 10:22:41 -04:00
|
|
|
auto name = item->text().toStdString();
|
|
|
|
auto nameLowercase = item->text().toLower().toStdString();
|
2022-03-16 00:31:24 -04:00
|
|
|
|
2022-04-11 10:22:41 -04:00
|
|
|
auto exh = *data.readExcelSheet(name);
|
2022-04-11 12:09:23 -04:00
|
|
|
for (auto column: exh.columnDefinitions) {
|
2022-04-11 10:22:41 -04:00
|
|
|
fmt::print("type = {}, offset = {}\n", column.type, column.offset);
|
|
|
|
}
|
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
for (auto page : exh.pages) {
|
|
|
|
QTableWidget* tableWidget = new QTableWidget();
|
2022-04-11 10:22:41 -04:00
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
tableWidget->setColumnCount(exh.columnDefinitions.size());
|
|
|
|
tableWidget->setRowCount(exh.header.rowCount);
|
|
|
|
fmt::print("page, row count = {}, start id = {}\n", page.rowCount, page.startId);
|
2022-04-11 10:37:36 -04:00
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
std::string path;
|
|
|
|
if (exh.language[0] == Language::None) {
|
|
|
|
path = getEXDFilename(exh, nameLowercase, "", page);
|
|
|
|
} else {
|
|
|
|
path = getEXDFilename(exh, nameLowercase, getLanguageCode(Language::English), page);
|
|
|
|
}
|
2022-04-11 10:37:36 -04:00
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
data.extractFile("exd/" + path, path);
|
|
|
|
auto exd = readEXD(exh, path, page);
|
|
|
|
for (int i = 0; i < exd.rows.size(); i++) {
|
|
|
|
for (int j = 0; j < exd.rows[i].data.size(); j++) {
|
|
|
|
auto newItem = new QTableWidgetItem(exd.rows[i].data[j].data.c_str());
|
2022-04-11 10:22:41 -04:00
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
tableWidget->setItem(i, j, newItem);
|
2022-04-11 11:58:06 -04:00
|
|
|
|
2022-04-11 12:09:23 -04:00
|
|
|
QTableWidgetItem* headerItem = new QTableWidgetItem();
|
|
|
|
headerItem->setText(exd.rows[i].data[j].type.c_str());
|
|
|
|
tableWidget->setHorizontalHeaderItem(j, headerItem);
|
2022-04-11 10:22:41 -04:00
|
|
|
}
|
2022-03-16 00:31:24 -04:00
|
|
|
}
|
2022-04-11 12:09:23 -04:00
|
|
|
|
|
|
|
pageTabWidget->addTab(tableWidget, QString("Page %1").arg(page.startId));
|
2022-03-16 00:31:24 -04:00
|
|
|
}
|
2022-04-11 10:22:41 -04:00
|
|
|
});
|
2022-03-16 00:31:24 -04:00
|
|
|
|
|
|
|
layout->addWidget(listWidget);
|
2022-04-11 12:09:23 -04:00
|
|
|
layout->addWidget(pageTabWidget);
|
2022-03-16 00:31:24 -04:00
|
|
|
}
|