diff --git a/CMakeLists.txt b/CMakeLists.txt index 23e3806..3a94eec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,4 +30,5 @@ else() set(LIBRARIES fmt::fmt ${LIBRARIES}) endif() -add_subdirectory(exdviewer) \ No newline at end of file +add_subdirectory(exdviewer) +add_subdirectory(mdlviewer) \ No newline at end of file diff --git a/exdviewer/src/mainwindow.cpp b/exdviewer/src/mainwindow.cpp index 657b1fa..8ba504f 100644 --- a/exdviewer/src/mainwindow.cpp +++ b/exdviewer/src/mainwindow.cpp @@ -11,7 +11,7 @@ #include "mdlparser.h" MainWindow::MainWindow(GameData& data) : data(data) { - setWindowTitle("Novus"); + setWindowTitle("exdviewer"); auto dummyWidget = new QWidget(); setCentralWidget(dummyWidget); @@ -26,9 +26,6 @@ MainWindow::MainWindow(GameData& data) : data(data) { auto* pageTabWidget = new QTabWidget(); - data.extractFile("chara/equipment/e0000/model/c0201e0000_top.mdl", "top.mdl"); - parseMDL("top.mdl"); - connect(listWidget, &QListWidget::itemClicked, this, [&data, pageTabWidget](QListWidgetItem* item) { pageTabWidget->clear(); diff --git a/libxiv b/libxiv index fbe386c..f883585 160000 --- a/libxiv +++ b/libxiv @@ -1 +1 @@ -Subproject commit fbe386c958e5caa716aac13c82e05af0c4abcbe7 +Subproject commit f8835854a3656f6212d647e7c7ce7c0c50c698b7 diff --git a/mdlviewer/CMakeLists.txt b/mdlviewer/CMakeLists.txt new file mode 100644 index 0000000..d122f95 --- /dev/null +++ b/mdlviewer/CMakeLists.txt @@ -0,0 +1,24 @@ +add_executable(mdlviewer + src/main.cpp + src/mainwindow.cpp) +target_include_directories(mdlviewer + PUBLIC + include) +target_link_libraries(mdlviewer PUBLIC libxiv ${LIBRARIES} Qt5::Core Qt5::Widgets) + +install(TARGETS mdlviewer + DESTINATION "${INSTALL_BIN_PATH}") + +if(WIN32) + get_target_property(QMAKE_EXE Qt5::qmake IMPORTED_LOCATION) + get_filename_component(QT_BIN_DIR "${QMAKE_EXE}" DIRECTORY) + + find_program(WINDEPLOYQT_ENV_SETUP qtenv2.bat HINTS "${QT_BIN_DIR}") + find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${QT_BIN_DIR}") + + # Run windeployqt immediately after build + add_custom_command(TARGET mdlviewer + POST_BUILD + COMMAND "${WINDEPLOYQT_ENV_SETUP}" && "${WINDEPLOYQT_EXECUTABLE}" \"$\" + ) +endif() diff --git a/mdlviewer/include/mainwindow.h b/mdlviewer/include/mainwindow.h new file mode 100644 index 0000000..59c6816 --- /dev/null +++ b/mdlviewer/include/mainwindow.h @@ -0,0 +1,13 @@ +#pragma once + +#include + +class GameData; + +class MainWindow : public QMainWindow { +public: + MainWindow(GameData& data); + +private: + GameData& data; +}; \ No newline at end of file diff --git a/mdlviewer/src/main.cpp b/mdlviewer/src/main.cpp new file mode 100644 index 0000000..63e494d --- /dev/null +++ b/mdlviewer/src/main.cpp @@ -0,0 +1,15 @@ +#include + +#include "mainwindow.h" +#include "gamedata.h" + +int main(int argc, char* argv[]) { + QApplication app(argc, argv); + + GameData data(argv[1]); + + MainWindow w(data); + w.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/mdlviewer/src/mainwindow.cpp b/mdlviewer/src/mainwindow.cpp new file mode 100644 index 0000000..54dff01 --- /dev/null +++ b/mdlviewer/src/mainwindow.cpp @@ -0,0 +1,21 @@ +#include "mainwindow.h" + +#include +#include +#include +#include + +#include "gamedata.h" +#include "exhparser.h" +#include "exdparser.h" +#include "mdlparser.h" + +MainWindow::MainWindow(GameData& data) : data(data) { + setWindowTitle("mdlviewer"); + + auto dummyWidget = new QWidget(); + setCentralWidget(dummyWidget); + + auto layout = new QHBoxLayout(); + dummyWidget->setLayout(layout); +} \ No newline at end of file