LS7-Emulator/src/events.c
2024-12-05 11:44:43 +01:00

65 lines
1.3 KiB
C

#include <stdint.h>
#include <SFML/System.h>
#include <SFML/Graphics.h>
#include <SFML/Window.h>
extern float displayScale;
extern void resetSystem();
extern void irq6502();
extern void nmi6502();
extern void updateRenderStates();
extern void scanKeyboard();
static sfKeyCode currentKey = sfKeyUnknown;
void pollEvents(sfRenderWindow *window){
sfEvent event;
while (sfRenderWindow_pollEvent(window, &event)) {
switch (event.type){
case sfEvtClosed:
sfRenderWindow_close(window);
break;
case sfEvtResized:
sfRenderWindow_setView(window, sfView_createFromRect((sfFloatRect){0, 0, event.size.width, event.size.height}));
break;
case sfEvtKeyPressed:
switch (event.key.code){
case sfKeyEscape:
sfRenderWindow_close(window);
break;
case sfKeyF2:
if (displayScale > 1) displayScale--;
updateRenderStates();
break;
case sfKeyF3:
displayScale++;
updateRenderStates();
break;
case sfKeyF5:
resetSystem();
break;
case sfKeyF12:
irq6502();
break;
case sfKeyF11:
nmi6502();
break;
default:
currentKey = event.key.code;
break;
}
break;
case sfEvtKeyReleased:
currentKey = sfKeyUnknown;
break;
default: break;
}
}
}