mirror of
https://github.com/obhq/obliteration.git
synced 2025-02-18 18:39:08 +00:00
Initializes game settings dialog
This commit is contained in:
parent
3b33d8afa2
commit
3a84b21573
@ -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;
|
||||
|
@ -15,8 +15,6 @@ class ScriptVar;
|
||||
|
||||
namespace Kyty::Config {
|
||||
|
||||
KYTY_SUBSYSTEM_DEFINE(Config);
|
||||
|
||||
enum class ShaderOptimizationType
|
||||
{
|
||||
None,
|
||||
|
@ -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)
|
||||
|
@ -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});
|
||||
|
@ -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
|
||||
|
11
src/game_settings_dialog.cpp
Normal file
11
src/game_settings_dialog.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
#include "game_settings_dialog.hpp"
|
||||
|
||||
GameSettingsDialog::GameSettingsDialog(Game *game, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
m_game(game)
|
||||
{
|
||||
}
|
||||
|
||||
GameSettingsDialog::~GameSettingsDialog()
|
||||
{
|
||||
}
|
14
src/game_settings_dialog.hpp
Normal file
14
src/game_settings_dialog.hpp
Normal 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;
|
||||
};
|
@ -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;
|
||||
|
@ -15,6 +15,7 @@ protected:
|
||||
|
||||
private slots:
|
||||
void startGame(const QModelIndex &index);
|
||||
void requestGamesContextMenu(const QPoint &pos);
|
||||
|
||||
private:
|
||||
void restoreGeometry();
|
||||
|
Loading…
x
Reference in New Issue
Block a user