Files
kaizen/src/frontend/App.cpp
2022-09-20 23:02:05 +02:00

53 lines
1.6 KiB
C++

#include <App.hpp>
#include <parallel-rdp/ParallelRDPWrapper.hpp>
#include <nfd.hpp>
void App::Run() {
// Main loop
const u8* state = SDL_GetKeyboardState(nullptr);
SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
while (!core.done) {
core.UpdateController(state);
core.Run(window, window.volumeL, window.volumeR);
SDL_Event event;
while (SDL_PollEvent(&event)) {
ImGui_ImplSDL2_ProcessEvent(&event);
switch(event.type) {
case SDL_QUIT: core.done = true; break;
case SDL_WINDOWEVENT:
core.done = window.gotClosed(event);
break;
case SDL_CONTROLLERDEVICEADDED: {
const int index = event.cdevice.which;
core.gamepad = SDL_GameControllerOpen(index);
core.gamepadConnected = true;
} break;
case SDL_CONTROLLERDEVICEREMOVED:
SDL_GameControllerClose(core.gamepad);
core.gamepadConnected = false;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym) {
case SDLK_o: {
nfdchar_t* outpath;
const nfdu8filteritem_t filter {"Nintendo 64 roms", "n64,z64,v64,N64,Z64,V64"};
nfdresult_t result = NFD_OpenDialog(&outpath, &filter, 1, nullptr);
if(result == NFD_OKAY) {
LoadROM(outpath);
NFD_FreePath(outpath);
}
} break;
} break;
case SDL_DROPFILE: {
char* droppedDir = event.drop.file;
if(droppedDir) {
LoadROM(droppedDir);
}
free(droppedDir);
} break;
}
}
}
}