fuck this shit
This commit is contained in:
+56
-51
@@ -11,43 +11,71 @@
|
||||
#include <Options.hpp>
|
||||
#include <Scheduler.hpp>
|
||||
|
||||
void KaizenGui::populateRomsList(const std::string &romsPath) {
|
||||
centralWidget->setCurrentWidget(romPathNotSet);
|
||||
if (!romsPath.empty()) {
|
||||
int i = 0;
|
||||
centralWidget->setCurrentWidget(romsList);
|
||||
|
||||
for (const auto &file : fs::recursive_directory_iterator{romsPath}) {
|
||||
if (!file.is_regular_file())
|
||||
continue;
|
||||
|
||||
auto filename = file.path().lexically_normal().string();
|
||||
|
||||
bool isPlain = std::ranges::any_of(std::array{".n64", ".z64", ".v64"},
|
||||
[&](const std::string &ext) { return file.path().extension() == ext; });
|
||||
|
||||
bool isArchive =
|
||||
std::ranges::any_of(std::array{".zip", ".7z", ".rar", ".tar"},
|
||||
[&](const std::string &ext) { return file.path().extension() == ext; });
|
||||
|
||||
if (!isArchive && !isPlain)
|
||||
continue;
|
||||
|
||||
auto rom = n64::Mem::LoadROM(isArchive, filename);
|
||||
auto regions = n64::GameDB::match(rom);
|
||||
|
||||
romsListPaths.push_back(filename);
|
||||
romsList->insertRow(i);
|
||||
romsList->setItem(i, 0, new QTableWidgetItem(core.mem->rom.gameNameDB.c_str()));
|
||||
romsList->setItem(i, 1, new QTableWidgetItem(regions.c_str()));
|
||||
romsList->setItem(i, 2, new QTableWidgetItem("Never"));
|
||||
romsList->setItem(i, 3, new QTableWidgetItem("0h 0m 0s"));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
currentHomeWidget = centralWidget->currentWidget();
|
||||
}
|
||||
|
||||
KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::UserScope) {
|
||||
SDL_InitSubSystem(SDL_INIT_GAMEPAD);
|
||||
|
||||
hide();
|
||||
|
||||
auto romsNotFoundLabel = new QLabel(R"(Kaizen could not find any ROMs. Set the path in "Settings -> General")");
|
||||
|
||||
romsList->verticalHeader()->hide();
|
||||
romsList->setSizePolicy({QSizePolicy::Maximum, QSizePolicy::Maximum});
|
||||
romsList->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
romsList->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
romsList->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||
romsList->setSortingEnabled(true);
|
||||
romsList->setColumnCount(3);
|
||||
romsList->setColumnCount(4);
|
||||
romsList->setHorizontalHeaderItem(0, romName);
|
||||
romsList->setHorizontalHeaderItem(1, romLastPlayed);
|
||||
romsList->setHorizontalHeaderItem(2, romTimePlayed);
|
||||
romsList->setHorizontalHeaderItem(1, romRegions);
|
||||
romsList->setHorizontalHeaderItem(2, romLastPlayed);
|
||||
romsList->setHorizontalHeaderItem(3, romTimePlayed);
|
||||
|
||||
auto romsPath = Options::GetRomsPath();
|
||||
if (!romsPath.empty()) {
|
||||
int i = 0;
|
||||
centralWidget->addWidget(romsList);
|
||||
for (const auto &file : fs::recursive_directory_iterator{romsPath}) {
|
||||
if (file.is_regular_file() &&
|
||||
std::ranges::any_of(std::array{".n64", ".z64", ".v64"},
|
||||
[&](const std::string &ext) { return file.path().extension() == ext; })) {
|
||||
romsList->insertRow(i);
|
||||
romsList->setItem(i, 0, new QTableWidgetItem(file.path().stem().string().c_str()));
|
||||
romsList->setItem(i, 1, new QTableWidgetItem("Never"));
|
||||
romsList->setItem(i, 2, new QTableWidgetItem("0h 0m 0s"));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
centralWidget->addWidget(romsNotFoundLabel);
|
||||
}
|
||||
vulkanWidget = new RenderWidget();
|
||||
vulkanWidget->hide();
|
||||
|
||||
centralWidget->addWidget(vulkanWidget);
|
||||
centralWidget->addWidget(romsList);
|
||||
centralWidget->addWidget(romPathNotSet);
|
||||
|
||||
populateRomsList(Options::GetRomsPath());
|
||||
|
||||
connect(romsList, &QTableWidget::cellDoubleClicked, this, [&](int row, int) {
|
||||
auto fileToLoad = fs::path(romsPath) / romsList->item(row, 0)->text().toStdString();
|
||||
auto fileToLoad = fs::path(Options::GetRomsPath()) / romsListPaths[row];
|
||||
std::println("{}", fileToLoad.string());
|
||||
LoadROM(fileToLoad.string());
|
||||
});
|
||||
@@ -57,11 +85,6 @@ KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::User
|
||||
restoreGeometry(settings.value("geometry").toByteArray());
|
||||
restoreState(settings.value("windowState").toByteArray());
|
||||
|
||||
vulkanWidget = new RenderWidget();
|
||||
vulkanWidget->hide();
|
||||
|
||||
centralWidget->addWidget(vulkanWidget);
|
||||
|
||||
cpuTypeLabel = new QLabel("Interpreter");
|
||||
if (Options::GetCpuType() == n64::CachedInterpreter)
|
||||
cpuTypeLabel->setText("Cached Interpreter");
|
||||
@@ -108,7 +131,7 @@ KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::User
|
||||
auto open = fileMenu->addAction("Open");
|
||||
open->setShortcut(QKeyCombination(Qt::CTRL, Qt::Key_O));
|
||||
connect(open, &QAction::triggered, this, [&] {
|
||||
auto originPath = romsPath.empty() ? QDir::currentPath() : romsPath.c_str();
|
||||
auto originPath = Options::GetRomsPath().empty() ? QDir::currentPath() : Options::GetRomsPath().c_str();
|
||||
auto fileToLoad =
|
||||
QFileDialog::getOpenFileName(this, "Select a Nintendo 64 ROM", originPath, "N64 ROM (*.z64 *.n64 *.v64)")
|
||||
.toStdString();
|
||||
@@ -123,26 +146,8 @@ KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::User
|
||||
auto settingsMenu = emulationMenu->addAction("Settings");
|
||||
settingsWindow = new SettingsWindow();
|
||||
connect(settingsMenu, &QAction::triggered, settingsWindow, &SettingsWindow::show);
|
||||
connect(settingsWindow->general, &GeneralSettings::romFolderSelected, this, [&] {
|
||||
romsPath = Options::GetRomsPath();
|
||||
if (!romsPath.empty()) {
|
||||
int i = 0;
|
||||
centralWidget->addWidget(romsList);
|
||||
for (const auto &file : fs::recursive_directory_iterator{romsPath}) {
|
||||
if (file.is_regular_file() &&
|
||||
std::ranges::any_of(std::array{".n64", ".z64", ".v64"},
|
||||
[&](const std::string &ext) { return file.path().extension() == ext; })) {
|
||||
romsList->insertRow(i);
|
||||
romsList->setItem(i, 0, new QTableWidgetItem(file.path().stem().string().c_str()));
|
||||
romsList->setItem(i, 1, new QTableWidgetItem("Never"));
|
||||
romsList->setItem(i, 2, new QTableWidgetItem("0h 0m 0s"));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
centralWidget->addWidget(romsNotFoundLabel);
|
||||
}
|
||||
});
|
||||
connect(settingsWindow->general, &GeneralSettings::romFolderSelected, this,
|
||||
[&] { populateRomsList(Options::GetRomsPath()); });
|
||||
|
||||
connect(settingsWindow->cpu, &CPUSettings::cpuTypeChanged, this, [&] {
|
||||
core.cpuType = Options::GetCpuType();
|
||||
@@ -185,7 +190,7 @@ KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::User
|
||||
emulationMenu->addAction(stop);
|
||||
connect(stop, &QAction::triggered, this, [&] {
|
||||
Scheduler::GetInstance().EnqueueRelative(0, STOP);
|
||||
centralWidget->setCurrentWidget(romsList);
|
||||
centralWidget->setCurrentWidget(currentHomeWidget);
|
||||
});
|
||||
|
||||
auto helpMenu = menuBar()->addMenu("Help");
|
||||
|
||||
Reference in New Issue
Block a user