Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdint.h>
- #include <string.h>
- #include <stdbool.h>
- #include "noir.c"
- #include "SDL.h"
- typedef struct Window {
- SDL_Window *sdl_window;
- } Window;
- Window *create_window(const char *title, int2 size, int2 pos) {
- int x = pos.x;
- int y = pos.y;
- if (x == 0 && y == 0) {
- x = SDL_WINDOWPOS_CENTERED;
- y = SDL_WINDOWPOS_CENTERED;
- }
- Window *window = calloc(1, sizeof(Window));
- window->sdl_window = SDL_CreateWindow(title, x, y, size.x, size.y, 0);
- return window;
- }
- void destroy_window(Window *window) {
- SDL_DestroyWindow(window->sdl_window);
- }
- int noir_to_sdl_key[256] = {
- [KEY_RETURN] = SDL_SCANCODE_RETURN,
- };
- void update(void) {
- SDL_PumpEvents();
- const uint8_t *sdl_keys = SDL_GetKeyboardState(NULL);
- for (int key = 0; key < NUM_KEYS; key++) {
- int sdl_key = noir_to_sdl_key[key];
- if (!sdl_key) {
- continue;
- }
- bool down = sdl_keys[sdl_key];
- bool was_down = keys[key].down;
- keys[key].down = down;
- keys[key].pressed = down && !was_down;
- keys[key].released = !down && was_down;
- }
- }
- bool init(void) {
- if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
- return false;
- }
- return true;
- }
Add Comment
Please, Sign In to add comment