#pragma once #include "frontends/common2/speed.h" #include "frontends/libretro/environment.h" #include #include class RetroFrame; class Game { public: Game(const std::shared_ptr & frame); ~Game(); bool loadGame(const std::string & path); bool loadSnapshot(const std::string & path); void executeOneFrame(); void processInputEvents(); void drawVideoBuffer(); static void keyboardCallback(bool down, unsigned keycode, uint32_t character, uint16_t key_modifiers); static void frameTimeCallback(retro_usec_t usec); static constexpr size_t FPS = 60; static unsigned ourInputDevices[MAX_PADS]; static retro_usec_t ourFrameTime; private: const std::shared_ptr myFrame; Speed mySpeed; // fixed speed std::vector myButtonStates; bool checkButtonPressed(unsigned id); void keyboardEmulation(); static void processKeyDown(unsigned keycode, uint32_t character, uint16_t key_modifiers); static void processKeyUp(unsigned keycode, uint32_t character, uint16_t key_modifiers); };