DEADSOFTWARE

Merge branch 'master' of ssh://repo.or.cz/d2df-sdl
[d2df-sdl.git] / src / game / g_window.pas
index 8a23d00c53283fdd5bc98233fcf1a5630e6de042..258b489b1f8f35f335061f207515c48406bab2b0 100644 (file)
@@ -37,6 +37,9 @@ function g_Window_SetSize (w, h: Word; fullscreen: Boolean): Boolean;
 
 procedure ProcessLoading (forceUpdate: Boolean=false);
 
+// returns `true` if quit event was received
+function g_ProcessMessages (): Boolean;
+
 
 var
   gwin_dump_extensions: Boolean = false;
@@ -54,7 +57,7 @@ uses
   g_console, e_input, g_options, g_game,
   g_basic, g_textures, e_sound, g_sound, g_menu, ENet, g_net,
   g_map, g_gfx, g_monsters, g_holmes, xprofiler,
-  sdlcarcass, gh_ui;
+  sdlcarcass, fui_ctls;
 
 
 const
@@ -407,7 +410,7 @@ begin
         key := ev.key.keysym.scancode;
         down := (ev.type_ = SDL_KEYDOWN);
         {$IF not DEFINED(HEADLESS)}
-        if evSDLCB(ev) then
+        if fuiOnSDLEvent(ev) then
         begin
           // event eaten, but...
           if not down then e_KeyUpDown(key, false);
@@ -420,7 +423,7 @@ begin
 
     {$IF not DEFINED(HEADLESS)}
     SDL_MOUSEBUTTONDOWN, SDL_MOUSEBUTTONUP, SDL_MOUSEWHEEL, SDL_MOUSEMOTION:
-      evSDLCB(ev);
+      fuiOnSDLEvent(ev);
     {$ENDIF}
 
     SDL_TEXTINPUT:
@@ -428,7 +431,7 @@ begin
         Utf8ToUnicode(@uc, PChar(ev.text.text), 1);
         keychr := Word(uc);
         if (keychr > 127) then keychr := Word(wchar2win(WideChar(keychr)));
-        CharPress(AnsiChar(keychr));
+        if (keychr > 0) and (keychr <= 255) then CharPress(AnsiChar(keychr));
       end;
 
     // other key presses and joysticks are handled in e_input
@@ -543,8 +546,10 @@ begin
 
   while (SDL_PollEvent(@ev) > 0) do
   begin
+    EventHandler(ev);
     if (ev.type_ = SDL_QUITEV) then break;
   end;
+  e_PollJoysticks();
 
   if (ev.type_ = SDL_QUITEV) or (gExit = EXIT_QUIT) then
   begin
@@ -599,19 +604,26 @@ begin
 end;
 
 
-function ProcessMessage (): Boolean;
+function g_ProcessMessages (): Boolean;
 var
-  i, t: Integer;
   ev: TSDL_Event;
 begin
   result := false;
   FillChar(ev, SizeOf(ev), 0);
-
   while (SDL_PollEvent(@ev) > 0) do
   begin
     result := EventHandler(ev);
     if (ev.type_ = SDL_QUITEV) then exit;
   end;
+  e_PollJoysticks();
+end;
+
+
+function ProcessMessage (): Boolean;
+var
+  i, t: Integer;
+begin
+  result := g_ProcessMessages();
 
   Time := GetTimer();
   Time_Delta := Time-Time_Old;
@@ -791,7 +803,7 @@ begin
     begin
       if (idx <= ParamCount) then
       begin
-        if not conParseFloat(gh_ui_scale, ParamStr(idx)) then gh_ui_scale := 1.0;
+        if not conParseFloat(fuiRenderScale, ParamStr(idx)) then fuiRenderScale := 1.0;
         Inc(idx);
       end;
     end;
@@ -838,12 +850,12 @@ begin
 
   if not glHasExtension('GL_ARB_texture_non_power_of_two') then
   begin
-    e_WriteLog('Driver DID''T advertised NPOT textures support', TMsgType.Warning);
+    e_WriteLog('NPOT textures: NO', TMsgType.Warning);
     glLegacyNPOT := true;
   end
   else
   begin
-    e_WriteLog('Driver advertised NPOT textures support', TMsgType.Notify);
+    e_WriteLog('NPOT textures: YES', TMsgType.Notify);
     glLegacyNPOT := false;
   end;
   gwin_dump_extensions := false;