#pragma once #include #include #include #include #include #include #include class KaizenGui final { gui::NativeWindow window; public: explicit KaizenGui() noexcept; ~KaizenGui(); double fpsCounter = -1.0; gui::MenuBar menuBar; gui::MenuItem actionPause{"Pause", nullptr, false}, actionStop{"Stop", nullptr, false}, actionReset{"Reset", nullptr, false}; SettingsWindow settingsWindow; std::shared_ptr core; RenderWidget vulkanWidget; EmuThread emuThread; gui::PopupWindow about{"About Kaizen"}; gui::StatusBar statusBar{}; void run(); void LoadTAS(const std::string &path) const noexcept; void LoadROM(const std::string &path) noexcept; private: bool quit = false; std::function emuExitFunc; void RenderUI(); };