From 102ccd96aecb10f5a8b4e08c329e3c1af5cec3de Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 9 Apr 2023 15:28:32 -0400 Subject: [PATCH] Use the new EXD part in exdviewer and remove it's libxiv dependency --- exdviewer/CMakeLists.txt | 2 +- exdviewer/include/mainwindow.h | 6 ++-- exdviewer/src/main.cpp | 6 ++-- exdviewer/src/mainwindow.cpp | 61 ++++++++-------------------------- 4 files changed, 19 insertions(+), 56 deletions(-) diff --git a/exdviewer/CMakeLists.txt b/exdviewer/CMakeLists.txt index 99f0c30..8cb848b 100644 --- a/exdviewer/CMakeLists.txt +++ b/exdviewer/CMakeLists.txt @@ -4,7 +4,7 @@ add_executable(exdviewer target_include_directories(exdviewer PUBLIC include) -target_link_libraries(exdviewer PUBLIC libxiv ${LIBRARIES} Qt5::Core Qt5::Widgets) +target_link_libraries(exdviewer PUBLIC physis z ${LIBRARIES} Qt5::Core Qt5::Widgets exdpart) install(TARGETS exdviewer DESTINATION "${INSTALL_BIN_PATH}") diff --git a/exdviewer/include/mainwindow.h b/exdviewer/include/mainwindow.h index 59c6816..703539c 100644 --- a/exdviewer/include/mainwindow.h +++ b/exdviewer/include/mainwindow.h @@ -2,12 +2,12 @@ #include -class GameData; +struct GameData; class MainWindow : public QMainWindow { public: - MainWindow(GameData& data); + MainWindow(GameData* data); private: - GameData& data; + GameData* data = nullptr; }; \ No newline at end of file diff --git a/exdviewer/src/main.cpp b/exdviewer/src/main.cpp index 63e494d..ee450a6 100644 --- a/exdviewer/src/main.cpp +++ b/exdviewer/src/main.cpp @@ -1,14 +1,12 @@ #include +#include #include "mainwindow.h" -#include "gamedata.h" int main(int argc, char* argv[]) { QApplication app(argc, argv); - GameData data(argv[1]); - - MainWindow w(data); + MainWindow w(physis_gamedata_initialize(argv[1])); w.show(); return app.exec(); diff --git a/exdviewer/src/mainwindow.cpp b/exdviewer/src/mainwindow.cpp index 11ea8b2..baf1390 100644 --- a/exdviewer/src/mainwindow.cpp +++ b/exdviewer/src/mainwindow.cpp @@ -4,13 +4,11 @@ #include #include #include +#include -#include "gamedata.h" -#include "exhparser.h" -#include "exdparser.h" -#include "mdlparser.h" +#include "exdpart.h" -MainWindow::MainWindow(GameData& data) : data(data) { +MainWindow::MainWindow(GameData* data) : data(data) { setWindowTitle("exdviewer"); auto dummyWidget = new QWidget(); @@ -20,56 +18,23 @@ MainWindow::MainWindow(GameData& data) : data(data) { dummyWidget->setLayout(layout); auto listWidget = new QListWidget(); - for(auto name : data.getAllSheetNames()) { - listWidget->addItem(name.c_str()); + + auto names = physis_gamedata_get_all_sheet_names(data); + for (int i = 0; i < names.name_count; i++) { + listWidget->addItem(names.names[i]); } listWidget->setMaximumWidth(200); + listWidget->sortItems(); + layout->addWidget(listWidget); - auto* pageTabWidget = new QTabWidget(); - - connect(listWidget, &QListWidget::itemClicked, this, [&data, pageTabWidget](QListWidgetItem* item) { - pageTabWidget->clear(); + auto exdPart = new EXDPart(data); + layout->addWidget(exdPart); + connect(listWidget, &QListWidget::itemClicked, this, [exdPart](QListWidgetItem* item) { auto name = item->text().toStdString(); auto nameLowercase = item->text().toLower().toStdString(); - auto exh = *data.readExcelSheet(name); - for (auto column: exh.columnDefinitions) { - fmt::print("type = {}, offset = {}\n", column.type, column.offset); - } - - for (auto page : exh.pages) { - QTableWidget* tableWidget = new QTableWidget(); - - tableWidget->setColumnCount(exh.columnDefinitions.size()); - tableWidget->setRowCount(exh.header.rowCount); - fmt::print("page, row count = {}, start id = {}\n", page.rowCount, page.startId); - - std::string path; - if (exh.language[0] == Language::None) { - path = getEXDFilename(exh, nameLowercase, "", page); - } else { - path = getEXDFilename(exh, nameLowercase, getLanguageCode(Language::English), page); - } - - auto exd = readEXD(exh, *data.extractFile("exd/" + 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()); - - tableWidget->setItem(i, j, newItem); - - QTableWidgetItem* headerItem = new QTableWidgetItem(); - headerItem->setText(exd.rows[i].data[j].type.c_str()); - tableWidget->setHorizontalHeaderItem(j, headerItem); - } - } - - pageTabWidget->addTab(tableWidget, QString("Page %1").arg(page.startId)); - } + exdPart->loadSheet(name.c_str()); }); - - layout->addWidget(listWidget); - layout->addWidget(pageTabWidget); } \ No newline at end of file