58 lines
1.8 KiB
C++
58 lines
1.8 KiB
C++
#include "core/input/global_inputs.hpp"
|
|
|
|
#include <cstdio>
|
|
#include <string>
|
|
|
|
#include "core/jail/jinput.hpp"
|
|
#include "core/rendering/overlay.hpp"
|
|
#include "core/rendering/screen.hpp"
|
|
#include "game/options.hpp"
|
|
|
|
namespace GlobalInputs {
|
|
|
|
static bool dec_zoom_was_pressed = false;
|
|
static bool inc_zoom_was_pressed = false;
|
|
static bool fullscreen_was_pressed = false;
|
|
|
|
auto handle() -> bool {
|
|
bool consumed = false;
|
|
|
|
// Decrement zoom
|
|
bool dec_zoom = JI_KeyPressed(Options::keys_gui.dec_zoom);
|
|
if (dec_zoom && !dec_zoom_was_pressed) {
|
|
Screen::get()->decZoom();
|
|
char msg[32];
|
|
snprintf(msg, sizeof(msg), "ZOOM %dx", Screen::get()->getZoom());
|
|
Overlay::showNotification(msg);
|
|
consumed = true;
|
|
}
|
|
if (dec_zoom) consumed = true; // Mentres estiga polsada, consumir-la
|
|
dec_zoom_was_pressed = dec_zoom;
|
|
|
|
// Increment zoom
|
|
bool inc_zoom = JI_KeyPressed(Options::keys_gui.inc_zoom);
|
|
if (inc_zoom && !inc_zoom_was_pressed) {
|
|
Screen::get()->incZoom();
|
|
char msg[32];
|
|
snprintf(msg, sizeof(msg), "ZOOM %dx", Screen::get()->getZoom());
|
|
Overlay::showNotification(msg);
|
|
consumed = true;
|
|
}
|
|
if (inc_zoom) consumed = true;
|
|
inc_zoom_was_pressed = inc_zoom;
|
|
|
|
// Toggle fullscreen
|
|
bool fullscreen = JI_KeyPressed(Options::keys_gui.fullscreen);
|
|
if (fullscreen && !fullscreen_was_pressed) {
|
|
Screen::get()->toggleFullscreen();
|
|
Overlay::showNotification(Screen::get()->isFullscreen() ? "FULLSCREEN" : "WINDOWED");
|
|
consumed = true;
|
|
}
|
|
if (fullscreen) consumed = true;
|
|
fullscreen_was_pressed = fullscreen;
|
|
|
|
return consumed;
|
|
}
|
|
|
|
} // namespace GlobalInputs
|