X-Git-Url: http://deadsoftware.ru/gitweb?p=flatwaifu.git;a=blobdiff_plain;f=src%2Fsdl%2Fmain.c;h=36b32798913dd64aa89f179ecec0dee2a9c80a8e;hp=b3627fc2f92ef66cb54a83e39e228d16380aaac9;hb=7b2f2285593458477b8185e62099d61975faf7d4;hpb=02ddae7ddbb58bee18512188f02b0dcca292b4e5 diff --git a/src/sdl/main.c b/src/sdl/main.c index b3627fc..36b3279 100644 --- a/src/sdl/main.c +++ b/src/sdl/main.c @@ -29,6 +29,7 @@ #include #include // srand exit #include // strcasecmp +#include #include #include "system.h" #include "input.h" @@ -54,6 +55,7 @@ static Uint32 ticks; static int quit = 0; static SDL_Surface *surf = NULL; static int mode = MODE_NONE; +static int text_input; /* --- error.h --- */ @@ -232,6 +234,14 @@ void Y_repaint (void) { SDL_Flip(surf); } +void Y_enable_text_input (void) { + text_input = 1; +} + +void Y_disable_text_input (void) { + text_input = 0; +} + /* --- main --- */ static int sdl_to_key (int code) { @@ -344,8 +354,8 @@ static int sdl_to_key (int code) { } } -static void poll_events (void (*h)(int key, int down)) { - int key; +static void poll_events (void) { + int key, sym, down; SDL_Event ev; while (SDL_PollEvent(&ev)) { switch (ev.type) { @@ -357,10 +367,14 @@ static void poll_events (void (*h)(int key, int down)) { break; case SDL_KEYDOWN: case SDL_KEYUP: - key = sdl_to_key(ev.key.keysym.sym); - I_press(key, ev.type == SDL_KEYDOWN); - if (h != NULL) { - (*h)(key, ev.type == SDL_KEYDOWN); + sym = ev.key.keysym.sym; + down = ev.type == SDL_KEYDOWN; + key = sdl_to_key(sym); + I_press(key, down); + GM_key(key, down); + if (down && text_input && sym >= 0x20 && sym <= 0x7e) { + // TODO fix this + GM_input(sym); } break; } @@ -368,7 +382,7 @@ static void poll_events (void (*h)(int key, int down)) { } static void step (void) { - poll_events(&G_keyf); + poll_events(); S_updatemusic(); Uint32 t = SDL_GetTicks(); if (t - ticks > DELAY) { @@ -385,7 +399,7 @@ int main (int argc, char *argv[]) { logo("main: failed to init SDL: %s\n", SDL_GetError()); return 1; } - SDL_WM_SetCaption("Doom 2D v1.351", "Doom 2D"); + SDL_WM_SetCaption("Doom 2D (SDL)", "Doom 2D"); // Player 1 defaults pl1.ku = KEY_KP_8; pl1.kd = KEY_KP_5;