move done variable into window class
This commit is contained in:
@@ -21,7 +21,6 @@ struct Core {
|
|||||||
bool pause = true;
|
bool pause = true;
|
||||||
int cycles = 0;
|
int cycles = 0;
|
||||||
bool romLoaded = false;
|
bool romLoaded = false;
|
||||||
bool done = false;
|
|
||||||
std::string rom;
|
std::string rom;
|
||||||
Interpreter* cpu = nullptr;
|
Interpreter* cpu = nullptr;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ void App::Run() {
|
|||||||
SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
|
SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
|
||||||
n64::SI& si = core.cpu->mem.mmio.si;
|
n64::SI& si = core.cpu->mem.mmio.si;
|
||||||
|
|
||||||
while (!core.done) {
|
while (!window.done) {
|
||||||
if(core.romLoaded) {
|
if(core.romLoaded) {
|
||||||
if(!core.pause) {
|
if(!core.pause) {
|
||||||
core.Run(window.settings.GetVolumeL(), window.settings.GetVolumeR());
|
core.Run(window.settings.GetVolumeL(), window.settings.GetVolumeR());
|
||||||
@@ -26,10 +26,10 @@ void App::Run() {
|
|||||||
ImGui_ImplSDL2_ProcessEvent(&event);
|
ImGui_ImplSDL2_ProcessEvent(&event);
|
||||||
switch(event.type) {
|
switch(event.type) {
|
||||||
case SDL_QUIT:
|
case SDL_QUIT:
|
||||||
core.done = true;
|
window.done = true;
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT:
|
case SDL_WINDOWEVENT:
|
||||||
core.done = window.gotClosed(event);
|
window.onClose(event);
|
||||||
break;
|
break;
|
||||||
case SDL_CONTROLLERDEVICEADDED: {
|
case SDL_CONTROLLERDEVICEADDED: {
|
||||||
const int index = event.cdevice.which;
|
const int index = event.cdevice.which;
|
||||||
@@ -46,24 +46,25 @@ void App::Run() {
|
|||||||
si.pif.gamepadConnected = false;
|
si.pif.gamepadConnected = false;
|
||||||
break;
|
break;
|
||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
switch(event.key.keysym.sym) {
|
switch (event.key.keysym.sym) {
|
||||||
case SDLK_o: {
|
case SDLK_o: {
|
||||||
nfdchar_t* outpath;
|
nfdchar_t *outpath;
|
||||||
const nfdu8filteritem_t filter {"Nintendo 64 roms/archives", "n64,z64,v64,N64,Z64,V64,zip,tar,rar,7z"};
|
const nfdu8filteritem_t filter{"Nintendo 64 roms/archives", "n64,z64,v64,N64,Z64,V64,zip,tar,rar,7z"};
|
||||||
nfdresult_t result = NFD_OpenDialog(&outpath, &filter, 1, nullptr);
|
nfdresult_t result = NFD_OpenDialog(&outpath, &filter, 1, nullptr);
|
||||||
if(result == NFD_OKAY) {
|
if (result == NFD_OKAY) {
|
||||||
LoadROM(outpath);
|
LoadROM(outpath);
|
||||||
NFD_FreePath(outpath);
|
NFD_FreePath(outpath);
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
} break;
|
}
|
||||||
case SDL_DROPFILE: {
|
break;
|
||||||
char* droppedDir = event.drop.file;
|
case SDL_DROPFILE: {
|
||||||
if(droppedDir) {
|
char *droppedDir = event.drop.file;
|
||||||
LoadROM(droppedDir);
|
if (droppedDir) {
|
||||||
free(droppedDir);
|
LoadROM(droppedDir);
|
||||||
}
|
free(droppedDir);
|
||||||
} break;
|
}
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ Window::Window(n64::Core& core) : settings() {
|
|||||||
NFD::Init();
|
NFD::Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] bool Window::gotClosed(SDL_Event event) {
|
void Window::onClose(SDL_Event event) {
|
||||||
return event.window.event == SDL_WINDOWEVENT_CLOSE
|
done = event.window.event == SDL_WINDOWEVENT_CLOSE
|
||||||
&& event.window.windowID == SDL_GetWindowID(window);
|
&& event.window.windowID == SDL_GetWindowID(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ void Window::RenderMainMenuBar(n64::Core &core) {
|
|||||||
core.cpu->mem.DumpDMEM();
|
core.cpu->mem.DumpDMEM();
|
||||||
}
|
}
|
||||||
if (ImGui::MenuItem("Exit")) {
|
if (ImGui::MenuItem("Exit")) {
|
||||||
core.done = true;
|
done = true;
|
||||||
}
|
}
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,11 @@ struct Window {
|
|||||||
~Window();
|
~Window();
|
||||||
ImDrawData* Present(n64::Core& core);
|
ImDrawData* Present(n64::Core& core);
|
||||||
|
|
||||||
[[nodiscard]] bool gotClosed(SDL_Event event);
|
void onClose(SDL_Event event);
|
||||||
ImFont *uiFont{};
|
ImFont *uiFont{};
|
||||||
Settings settings;
|
Settings settings;
|
||||||
void LoadROM(n64::Core& core, const std::string& path);
|
void LoadROM(n64::Core& core, const std::string& path);
|
||||||
|
bool done = false;
|
||||||
private:
|
private:
|
||||||
bool showSettings = false;
|
bool showSettings = false;
|
||||||
SDL_Window* window{};
|
SDL_Window* window{};
|
||||||
|
|||||||
Reference in New Issue
Block a user