MCPcopy Create free account
hub / github.com/assaultcube/AC / checkinput

Function checkinput

source/src/main.cpp:846–1024  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

844EVENTDEBUG(VAR(debugevents, 0, 0, 2));
845
846void checkinput()
847{
848 SDL_Event event;
849 Uint32 lasttype = 0, lastbut = 0;
850 int tdx=0,tdy=0;
851 int focused = 0;
852 while(events.length() || SDL_PollEvent(&event))
853 {
854 if(events.length()) event = events.remove(0);
855
856 EVENTDEBUG(int thres = 1; defformatstring(eb)("EVENT %d", event.type));
857
858 if (focused && event.type != SDL_WINDOWEVENT) { if (grabinput != (focused > 0)) inputgrab(grabinput = focused > 0, shouldgrab); focused = 0; }
859
860 switch(event.type)
861 {
862 case SDL_QUIT:
863 quit();
864 break;
865
866 case SDL_KEYDOWN:
867 if(bootstrapentropy > 0 && (--bootstrapentropy & 2)) mapscreenshot(NULL, false, -1, 1000.0f / (1000 + rnd(400)), 0, 0);
868 case SDL_KEYUP:
869 EVENTDEBUG(thres = 2; concatstring(eb, event.type == SDL_KEYUP ? "(SDL_KEYUP)" : "(SDL_KEYDOWN)"));
870 entropy_add_byte(event.key.keysym.sym ^ totalmillis);
871 EVENTDEBUG(concatformatstring(eb, " sym %d (%Xh), scancode %d (%Xh), state %d, repeat %d", event.key.keysym.sym, event.key.keysym.sym, event.key.keysym.scancode, event.key.keysym.scancode, event.key.state, event.key.repeat));
872 if(event.key.keysym.sym == SDLK_SCANCODE_MASK) event.key.keysym.sym |= event.key.keysym.scancode; // workaround SDL 2.0.5 bug which returns sym == 40000000h for all dead keys
873 if(!event.key.repeat || keyrepeatmask) keypress(event.key.keysym.sym, event.key.keysym.scancode, event.key.state==SDL_PRESSED, (SDL_Keymod)event.key.keysym.mod);
874 break;
875
876 case SDL_TEXTINPUT:
877 EVENTDEBUG(thres = 2; concatformatstring(eb, "(SDL_TEXTINPUT) %s %d %d", escapestring(event.text.text), textinputmask, int(event.text.timestamp - textinputtime)));
878 if(textinputmask && int(event.text.timestamp - textinputtime) >= 5) // mute textinput for a few milliseconds, to avoid receiving the "t" that switched on the console
879 {
880 processtextinput(event.text.text);
881 }
882 break;
883
884 case SDL_WINDOWEVENT:
885 {
886 EVENTDEBUG(concatstring(eb, "(SDL_WINDOWEVENT) "));
887 switch(event.window.event)
888 {
889 case SDL_WINDOWEVENT_SHOWN: // window has been shown
890 EVENTDEBUG(concatstring(eb, " SDL_WINDOWEVENT_SHOWN"));
891 break;
892
893 case SDL_WINDOWEVENT_HIDDEN: // window has been hidden
894 EVENTDEBUG(concatstring(eb, " SDL_WINDOWEVENT_HIDDEN"));
895 break;
896
897 case SDL_WINDOWEVENT_EXPOSED: // window has been exposed and should be redrawn
898 EVENTDEBUG(concatstring(eb, " SDL_WINDOWEVENT_EXPOSED"));
899 break;
900
901 case SDL_WINDOWEVENT_MOVED: // window has been moved to data1, data2
902 EVENTDEBUG(concatformatstring(eb, " SDL_WINDOWEVENT_MOVED x %d, y %d", event.window.data1, event.window.data2));
903 if(!(SDL_GetWindowFlags(screen) & SDL_WINDOW_FULLSCREEN)) centerwindow = false;

Callers 1

main.cppFile · 0.85

Calls 15

inputgrabFunction · 0.85
quitFunction · 0.85
mapscreenshotFunction · 0.85
concatstringFunction · 0.85
entropy_add_byteFunction · 0.85
concatformatstringFunction · 0.85
keypressFunction · 0.85
escapestringFunction · 0.85
processtextinputFunction · 0.85
updatescreensizeFunction · 0.85
skipmousemotionFunction · 0.85
checkmousemotionFunction · 0.85

Tested by

no test coverage detected