65 lines
1.3 KiB
C
65 lines
1.3 KiB
C
#include "sdl.h"
|
|
#include "interface.h"
|
|
#include "input.h"
|
|
|
|
int Input(APP *app, char *run, char flag) {
|
|
SDL_Event event;
|
|
|
|
while (SDL_PollEvent(&event)) {
|
|
switch (event.type) {
|
|
case SDL_KEYDOWN:
|
|
if (event.key.keysym.sym == SDLK_q) {
|
|
*run = 0;
|
|
return EXIT;
|
|
}
|
|
|
|
else if (event.key.keysym.sym == SDLK_k)
|
|
return SAVE;
|
|
|
|
else if (flag == IN_MENU) {
|
|
if (event.key.keysym.sym == SDLK_s)
|
|
return SETTINGS;
|
|
|
|
else if (event.key.keysym.sym == SDLK_c)
|
|
return CONTINUE;
|
|
|
|
else if (event.key.keysym.sym == SDLK_n)
|
|
return NEW_GAME;
|
|
}
|
|
|
|
else if (flag == IN_SETTINGS || flag == IN_GAME) {
|
|
if (event.key.keysym.sym == SDLK_DOWN)
|
|
return KEY_DOWN;
|
|
|
|
else if (event.key.keysym.sym == SDLK_UP)
|
|
return KEY_UP;
|
|
|
|
else if (event.key.keysym.sym == SDLK_RIGHT)
|
|
return KEY_RIGHT;
|
|
|
|
else if (event.key.keysym.sym == SDLK_LEFT)
|
|
return KEY_LEFT;
|
|
}
|
|
|
|
break;
|
|
|
|
case SDL_QUIT:
|
|
if (flag == IN_MENU)
|
|
*run = 0;
|
|
break;
|
|
|
|
case SDL_WINDOWEVENT:
|
|
if (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
|
SDL_GetWindowSize(app->window, &app->scr_width, &app->scr_height);
|
|
SDL_UpdateWindowSurface(app->window);
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
return INPUT_NORMAL;
|
|
}
|