Initializes game settings dialog

This commit is contained in:
Putta Khunchalee 2022-09-18 16:31:53 +07:00
parent 3b33d8afa2
commit 3a84b21573
9 changed files with 65 additions and 24 deletions

View File

@ -114,11 +114,6 @@ int main(int argc, char* argv[])
args.Add(str);
}
run_script(args.At(1), args);
} else
{
printf("%s\n", get_build_string().C_Str());
printf("fc_script <lua_script> args...\n\n");
PrintHelp();
}
return 0;

View File

@ -15,8 +15,6 @@ class ScriptVar;
namespace Kyty::Config {
KYTY_SUBSYSTEM_DEFINE(Config);
enum class ShaderOptimizationType
{
None,

View File

@ -31,18 +31,7 @@ struct Config
String pipeline_dump_folder = U"_Pipelines";
};
static Config* g_config = nullptr;
KYTY_SUBSYSTEM_INIT(Config)
{
EXIT_IF(g_config != nullptr);
g_config = new Config;
}
KYTY_SUBSYSTEM_UNEXPECTED_SHUTDOWN(Config) {}
KYTY_SUBSYSTEM_DESTROY(Config) {}
static Config* g_config = nullptr; // new Config;
template <class T>
void LoadInt(T& dst, const Scripts::ScriptVar& cfg, const String& key)

View File

@ -88,10 +88,10 @@ static void Init(const Scripts::ScriptVar& cfg)
auto* slist = Core::SubsystemsList::Instance();
// Lookup definition by searching for KYTY_SUBSYSTEM_DEFINE
auto* audio = Libs::Audio::AudioSubsystem::Instance();
auto* config = Config::ConfigSubsystem::Instance();
auto* controller = Libs::Controller::ControllerSubsystem::Instance();
auto* core = Core::CoreSubsystem::Instance();
auto* file_system = Libs::LibKernel::FileSystem::FileSystemSubsystem::Instance();
auto* graphics = Libs::Graphics::GraphicsSubsystem::Instance();
auto* log = Log::LogSubsystem::Instance();
@ -99,12 +99,8 @@ static void Init(const Scripts::ScriptVar& cfg)
auto* network = Libs::Network::NetworkSubsystem::Instance();
auto* profiler = Profiler::ProfilerSubsystem::Instance();
auto* pthread = Libs::LibKernel::PthreadSubsystem::Instance();
auto* scripts = Scripts::ScriptsSubsystem::Instance();
auto* timer = Loader::Timer::TimerSubsystem::Instance();
slist->Add(config, {core, scripts});
slist->InitAll(true);
Config::Load(cfg);
slist->Add(audio, {core, log, pthread, memory});

View File

@ -27,6 +27,7 @@ endif()
# Setup application target.
add_executable(obliteration WIN32
game_models.cpp
game_settings_dialog.cpp
initialize_dialog.cpp
main.cpp
main_window.cpp

View File

@ -0,0 +1,11 @@
#include "game_settings_dialog.hpp"
GameSettingsDialog::GameSettingsDialog(Game *game, QWidget *parent) :
QDialog(parent),
m_game(game)
{
}
GameSettingsDialog::~GameSettingsDialog()
{
}

View File

@ -0,0 +1,14 @@
#pragma once
#include <QDialog>
class Game;
class GameSettingsDialog final : public QDialog {
public:
GameSettingsDialog(Game *game, QWidget *parent = nullptr);
~GameSettingsDialog();
private:
Game *m_game;
};

View File

@ -1,12 +1,14 @@
#include "main_window.hpp"
#include "emulator.hpp"
#include "game_models.hpp"
#include "game_settings_dialog.hpp"
#include "settings.hpp"
#include <QAction>
#include <QCloseEvent>
#include <QGuiApplication>
#include <QListView>
#include <QMenu>
#include <QMenuBar>
#include <QMessageBox>
#include <QSettings>
@ -26,9 +28,12 @@ MainWindow::MainWindow(GameListModel *games)
// Setup game list.
m_games = new QListView(this);
m_games->setViewMode(QListView::IconMode);
m_games->setContextMenuPolicy(Qt::CustomContextMenu);
m_games->setModel(games);
connect(m_games, &QAbstractItemView::doubleClicked, this, &MainWindow::startGame);
connect(m_games, &QWidget::customContextMenuRequested, this, &MainWindow::requestGamesContextMenu);
setCentralWidget(m_games);
// Setup status bar.
@ -78,6 +83,37 @@ void MainWindow::startGame(const QModelIndex &index)
start_game(reinterpret_cast<const std::uint16_t *>(dir.constData()), dir.size());
}
void MainWindow::requestGamesContextMenu(const QPoint &pos)
{
// Get item index.
auto index = m_games->indexAt(pos);
if (!index.isValid()) {
return;
}
auto model = reinterpret_cast<GameListModel *>(m_games->model());
auto game = model->get(index.row());
// Setup menu.
QMenu menu(this);
QAction settings("&Settings", this);
menu.addAction(&settings);
// Show menu.
auto selected = menu.exec(m_games->viewport()->mapToGlobal(pos));
if (!selected) {
return;
}
if (selected == &settings) {
GameSettingsDialog dialog(game, this);
dialog.exec();
}
}
void MainWindow::restoreGeometry()
{
QSettings settings;

View File

@ -15,6 +15,7 @@ protected:
private slots:
void startGame(const QModelIndex &index);
void requestGamesContextMenu(const QPoint &pos);
private:
void restoreGeometry();