mirror of
https://github.com/redstrate/Novus.git
synced 2025-04-22 03:57:45 +00:00
Add a settings file to store the game directory
This commit is contained in:
parent
66bc968331
commit
127b57b820
11 changed files with 80 additions and 16 deletions
|
@ -12,6 +12,7 @@ set(CMAKE_CXX_STANDARD 20)
|
|||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(QT_MIN_VERSION 5.15)
|
||||
set(KF_MIN_VERSION 5.100)
|
||||
|
||||
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
|
||||
list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
|
||||
|
@ -35,6 +36,7 @@ ecm_setup_version(${PROJECT_VERSION}
|
|||
)
|
||||
|
||||
find_package(Qt5 ${QT_MIN_VERSION} COMPONENTS Core Widgets Concurrent CONFIG REQUIRED)
|
||||
find_package(KF5 ${KF_MIN_VERSION} REQUIRED COMPONENTS Config)
|
||||
find_package(Vulkan REQUIRED)
|
||||
find_package(glm REQUIRED)
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ target_link_libraries(armoury PUBLIC
|
|||
Qt5::Core
|
||||
Qt5::Widgets
|
||||
Qt5::Concurrent
|
||||
renderer
|
||||
magic_enum
|
||||
physis z
|
||||
mdlpart
|
||||
|
|
|
@ -5,13 +5,16 @@
|
|||
#include <physis.hpp>
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "settings.h"
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
QApplication app(argc, argv);
|
||||
|
||||
physis_initialize_logging();
|
||||
|
||||
MainWindow w(physis_gamedata_initialize(argv[1]));
|
||||
const QString gameDir{getGameDirectory()};
|
||||
const std::string gameDirStd{gameDir.toStdString()};
|
||||
MainWindow w(physis_gamedata_initialize(gameDirStd.c_str()));
|
||||
w.show();
|
||||
|
||||
return QApplication::exec();
|
||||
|
|
|
@ -5,13 +5,15 @@ add_library(NovusCommon STATIC)
|
|||
target_sources(NovusCommon PRIVATE
|
||||
include/aboutwindow.h
|
||||
include/filecache.h
|
||||
include/settings.h
|
||||
src/aboutwindow.cpp
|
||||
src/filecache.cpp)
|
||||
src/filecache.cpp
|
||||
src/settings.cpp)
|
||||
target_include_directories(NovusCommon PUBLIC
|
||||
include
|
||||
PRIVATE
|
||||
${CMAKE_BINARY_DIR})
|
||||
target_link_libraries(NovusCommon PUBLIC Qt5::Core Qt5::Widgets physis)
|
||||
target_link_libraries(NovusCommon PUBLIC Qt5::Core Qt5::Widgets KF5::ConfigCore physis)
|
||||
|
||||
# meant for including the license text
|
||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../LICENSES/GPL-3.0-or-later.txt LICENSE_TXT)
|
||||
|
|
5
common/include/settings.h
Normal file
5
common/include/settings.h
Normal file
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include <QString>
|
||||
|
||||
QString getGameDirectory();
|
21
common/src/settings.cpp
Normal file
21
common/src/settings.cpp
Normal file
|
@ -0,0 +1,21 @@
|
|||
#include "settings.h"
|
||||
|
||||
#include <KConfig>
|
||||
#include <KConfigGroup>
|
||||
#include <QCoreApplication>
|
||||
#include <QMessageBox>
|
||||
|
||||
QString getGameDirectory() {
|
||||
KConfig config("novusrc");
|
||||
KConfigGroup game = config.group("Game");
|
||||
|
||||
if (game.hasKey("GameDir")) {
|
||||
return game.readEntry("GameDir");
|
||||
} else {
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("The game directory has not been set. Please open the Novus SDK launcher and set it.");
|
||||
msgBox.exec();
|
||||
QCoreApplication::quit();
|
||||
return {};
|
||||
}
|
||||
}
|
|
@ -2,5 +2,5 @@
|
|||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
add_library(mdlpart STATIC mdlpart.cpp)
|
||||
target_link_libraries(mdlpart PUBLIC physis z ${LIBRARIES} Qt5::Core Qt5::Widgets renderer NovusCommon tinygltf)
|
||||
target_link_libraries(mdlpart PUBLIC physis z Qt5::Core Qt5::Widgets renderer NovusCommon tinygltf)
|
||||
target_include_directories(mdlpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
|
@ -7,7 +7,7 @@ if(USE_STANDALONE_WINDOW)
|
|||
set(EXTRA_LIBRARIES SDL2::SDL2)
|
||||
endif()
|
||||
|
||||
add_library(renderer src/renderer.cpp ${EXTRA_SRC})
|
||||
add_library(renderer STATIC src/renderer.cpp ${EXTRA_SRC})
|
||||
target_include_directories(renderer PUBLIC include)
|
||||
target_link_libraries(renderer PUBLIC Qt5::Core Vulkan::Vulkan physis z glm::glm ${EXTRA_LIBRARIES})
|
||||
target_compile_definitions(renderer PUBLIC GLM_FORCE_RADIANS GLM_FORCE_DEPTH_ZERO_TO_ONE)
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
# SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
find_package(Qt5 COMPONENTS Widgets REQUIRED)
|
||||
|
||||
add_executable(sdklauncher
|
||||
src/main.cpp
|
||||
src/mainwindow.cpp)
|
||||
target_link_libraries(sdklauncher PUBLIC Qt5::Widgets)
|
||||
target_link_libraries(sdklauncher PUBLIC Qt5::Widgets KF5::ConfigCore physis)
|
||||
target_include_directories(sdklauncher PUBLIC include)
|
||||
|
|
|
@ -1,13 +1,45 @@
|
|||
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#include <KConfig>
|
||||
#include <KConfigGroup>
|
||||
#include <QApplication>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <physis.hpp>
|
||||
|
||||
#include "mainwindow.h"
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
QApplication app(argc, argv);
|
||||
|
||||
KConfig config("novusrc");
|
||||
KConfigGroup game = config.group("Game");
|
||||
|
||||
if (!game.hasKey("GameDir")) {
|
||||
while (true) {
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("The game directory has not been set, please select it now. Select the 'game' folder.");
|
||||
msgBox.exec();
|
||||
|
||||
const QString dir = QFileDialog::getExistingDirectory(
|
||||
nullptr,
|
||||
"Open Game Directory",
|
||||
QStandardPaths::standardLocations(QStandardPaths::StandardLocation::HomeLocation).last(),
|
||||
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||
|
||||
const std::string dirStd = dir.toStdString();
|
||||
|
||||
if (!physis_gamedata_initialize(dirStd.c_str()))
|
||||
continue;
|
||||
|
||||
game.writeEntry("GameDir", dir);
|
||||
config.sync();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
MainWindow window;
|
||||
window.show();
|
||||
|
||||
|
|
|
@ -3,12 +3,14 @@
|
|||
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <KConfig>
|
||||
#include <KConfigGroup>
|
||||
#include <QComboBox>
|
||||
#include <QDebug>
|
||||
#include <QFormLayout>
|
||||
#include <QListWidget>
|
||||
#include <QProcess>
|
||||
#include <QVBoxLayout>
|
||||
#include <QFormLayout>
|
||||
#include <QComboBox>
|
||||
#include <QDebug>
|
||||
|
||||
static QMap<QString, QString> applications = {
|
||||
{"Armoury", "armoury"},
|
||||
|
@ -48,10 +50,13 @@ MainWindow::MainWindow() {
|
|||
|
||||
auto formLayout = new QFormLayout();
|
||||
|
||||
KConfig config("novusrc");
|
||||
KConfigGroup game = config.group("Game");
|
||||
|
||||
auto gameCombo = new QComboBox();
|
||||
formLayout->addRow("Current Game", gameCombo);
|
||||
formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
|
||||
gameCombo->addItem("Placeholder");
|
||||
gameCombo->addItem(game.readEntry("GameDir"));
|
||||
|
||||
auto mainLayout = new QVBoxLayout();
|
||||
mainLayout->addWidget(centralFrame);
|
||||
|
|
Loading…
Add table
Reference in a new issue