55 lines
2.1 KiB
C++
55 lines
2.1 KiB
C++
#include <KaizenGui.hpp>
|
|
#include <backend/Core.hpp>
|
|
#include <QMenuBar>
|
|
#include <QMenu>
|
|
#include <QMessageBox>
|
|
#include <resources/gamecontrollerdb.h>
|
|
|
|
KaizenGui::KaizenGui() noexcept {
|
|
SDL_InitSubSystem(SDL_INIT_GAMEPAD);
|
|
|
|
hide();
|
|
vulkanWidget = new RenderWidget();
|
|
|
|
setWindowTitle("Kaizen " KAIZEN_VERSION_STR);
|
|
setMinimumSize(640, 480);
|
|
setCentralWidget(vulkanWidget);
|
|
|
|
auto fileMenu = menuBar()->addMenu("File");
|
|
auto open = fileMenu->addAction("Open");
|
|
auto exit = fileMenu->addAction("Exit");
|
|
auto emulationMenu = menuBar()->addMenu("Emulation");
|
|
auto settingsMenu = emulationMenu->addAction("Settings");
|
|
settingsWindow = new SettingsWindow();
|
|
connect(settingsMenu, &QAction::triggered, settingsWindow, &SettingsWindow::show);
|
|
|
|
emulationMenu->addSeparator();
|
|
auto pause = emulationMenu->addAction("Pause");
|
|
auto reset = emulationMenu->addAction("Reset");
|
|
auto stop = emulationMenu->addAction("Stop");
|
|
auto helpMenu = menuBar()->addMenu("Help");
|
|
auto about = helpMenu->addAction("About");
|
|
connect(about, &QAction::triggered, this, [&] {
|
|
auto text = std::format("<p>Kaizen is a Nintendo 64 emulator that strives<br>"
|
|
"to offer a friendly user experience and compatibility.<br>"
|
|
"Kaizen is licensed under the BSD 3-clause license.<br>"
|
|
"Nintendo 64 is a registered trademark of Nintendo Co., Ltd.</p><hr>"
|
|
"Kaizen {}{}",
|
|
KAIZEN_USE_HASH ? "dev build " : "", KAIZEN_VERSION_STR);
|
|
|
|
QMessageBox::about(this, "About", text.c_str());
|
|
});
|
|
show();
|
|
}
|
|
|
|
KaizenGui::~KaizenGui() { SDL_Quit(); }
|
|
|
|
void KaizenGui::LoadROM(const std::string &path) noexcept {
|
|
n64::Core &core = n64::Core::GetInstance();
|
|
core.LoadROM(path);
|
|
const auto gameNameDB = n64::Core::GetMem().rom.gameNameDB;
|
|
setWindowTitle(("Kaizen " KAIZEN_VERSION_STR " - " + gameNameDB).c_str());
|
|
}
|
|
|
|
void KaizenGui::LoadTAS(const std::string &path) noexcept { n64::Core::GetInstance().LoadTAS(fs::path(path)); }
|