diff --git a/CMakeLists.txt b/CMakeLists.txt index f713065..5c8af83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,6 +84,8 @@ set(TESTAPP_SRC_FILES ) set(CUTTOWN_SRC_FILES + CuttownTest/gameData.cpp + CuttownTest/gameData.h CuttownTest/Main.cpp CuttownTest/mainWindow.cpp CuttownTest/mainWindow.h diff --git a/CuttownTest/Main.cpp b/CuttownTest/Main.cpp index 1a479f3..aa618b6 100644 --- a/CuttownTest/Main.cpp +++ b/CuttownTest/Main.cpp @@ -1,43 +1,45 @@ #pragma once -#include "SDL.h" -#include -#include "windows.h" -#include "LmpRepository.h" -#include "GobFile.h" -#include "VifDecoder.h" -#include "TexDecoder.h" -#include "AnimDecoder.h" -#include "Model.h" -#include "Texture.h" -#include "AnimData.h" -#include "WorldReader.h" -#include "World.h" +#include +#include #include "mainWindow.h" - -LmpRepository* lmpRepository; +#include "gameData.h" int main(int argc, char **argv) { QApplication app(argc, argv); + + QCoreApplication::setApplicationName("World Viewer"); + QCoreApplication::setApplicationVersion("1.0"); + + QCommandLineParser parser; + parser.setApplicationDescription("World Viewer"); + parser.addHelpOption(); + parser.addVersionOption(); + + QCommandLineOption rootDirectoryOption(QStringList() << "r" << "root-directory", + "The root directory of the game.", + "directory"); + parser.addOption(rootDirectoryOption); + + QCommandLineOption worldNameOption(QStringList() << "w" << "world", + "The name of the world to open.", + "worldname"); + parser.addOption(worldNameOption); + + parser.process(app); + + QString rootDir = parser.value(rootDirectoryOption); + QString worldName = parser.value(worldNameOption); + //Q_INIT_RESOURCE(dockwidgets); - MainWindow mainWin; + GameData gameData; + gameData.read(rootDir, worldName); + MainWindow mainWin(gameData); mainWin.show(); return app.exec(); - /* - string dataPath = "D:\\emu\\bgda\\BG\\DATA\\"; - if (argc == 2){ - dataPath = argv[1]; - } - lmpRepository = new LmpRepositoryImpl(dataPath, GameType::DARK_ALLIANCE); - - GobFile cuttownGob = GobFile(dataPath + "CUTTOWN.GOB", GameType::DARK_ALLIANCE); - World* world = WorldReader().readWorld(&cuttownGob, "cuttown"); - - return 0; - */ } diff --git a/CuttownTest/gameData.cpp b/CuttownTest/gameData.cpp new file mode 100644 index 0000000..dd1748a --- /dev/null +++ b/CuttownTest/gameData.cpp @@ -0,0 +1,34 @@ +#include "gameData.h" + +#include + +#include "LmpRepository.h" +#include "GobFile.h" +#include "VifDecoder.h" +#include "TexDecoder.h" +#include "AnimDecoder.h" +#include "Model.h" +#include "Texture.h" +#include "AnimData.h" +#include "WorldReader.h" +#include "World.h" + +void GameData::read(QString rootDir, QString worldName) +{ + findGame(rootDir); + /* + LmpRepository* lmpRepository = new LmpRepositoryImpl(dataPath, GameType::DARK_ALLIANCE); + + GobFile cuttownGob = GobFile(dataPath + "CUTTOWN.GOB", GameType::DARK_ALLIANCE); + World* world = WorldReader().readWorld(&cuttownGob, "cuttown"); + */ +} + +void GameData::findGame(QString rootDir) +{ + QDir rootDirectory(rootDir); + if (rootDirectory.exists()) { + auto entries = rootDirectory.entryList(QStringList() << "SL*.*"); + + } +} diff --git a/CuttownTest/gameData.h b/CuttownTest/gameData.h new file mode 100644 index 0000000..939be36 --- /dev/null +++ b/CuttownTest/gameData.h @@ -0,0 +1,12 @@ +#pragma once + +#include + +class GameData +{ +public: + void read(QString rootDir, QString worldName); + +private: + void findGame(QString rootDir); +}; diff --git a/CuttownTest/mainWindow.cpp b/CuttownTest/mainWindow.cpp index 607830a..7f42461 100644 --- a/CuttownTest/mainWindow.cpp +++ b/CuttownTest/mainWindow.cpp @@ -2,8 +2,8 @@ #include #include "mainWindow.h" -MainWindow::MainWindow() - : textEdit(new QTextEdit) +MainWindow::MainWindow(GameData& gameDataIn) + : textEdit(new QTextEdit), gameData(gameDataIn) { setCentralWidget(textEdit); diff --git a/CuttownTest/mainWindow.h b/CuttownTest/mainWindow.h index b4bd569..263a32d 100644 --- a/CuttownTest/mainWindow.h +++ b/CuttownTest/mainWindow.h @@ -4,6 +4,8 @@ #include +#include "gameData.h" + QT_BEGIN_NAMESPACE class QAction; class QListWidget; @@ -17,7 +19,7 @@ class MainWindow : public QMainWindow Q_OBJECT public: - MainWindow(); + MainWindow(GameData& gameData); private slots: void about(); @@ -31,5 +33,7 @@ private: QListWidget* listWidget; QMenu* viewMenu; + + GameData& gameData; };