DEADSOFTWARE

window: touch: some fixes for headless
[d2df-sdl.git] / src / game / g_window.pas
index 50fccd40a095fc55d7e64c5f7b73d80b2c3c94b5..3adb2b616da1f09af1dfb5c3c7f0b0b09e1689fe 100644 (file)
@@ -2,8 +2,7 @@
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * the Free Software Foundation, version 3 of the License ONLY.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -61,11 +60,11 @@ 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, xprofiler,
-  g_touch;
+  g_touch, g_gui;
 
 
 const
-  ProgressUpdateMSecs = 1;//100;
+  ProgressUpdateMSecs = 35; //1;//100;
 
 var
   h_Wnd: PSDL_Window = nil;
@@ -513,9 +512,13 @@ begin
           if g_dbg_input then
             e_LogWritefln('Input Debug: keysym, press=%s, scancode=%s', [down, key]);
           e_KeyUpDown(key, down);
-          g_Console_ProcessBind(key, down)
+          g_Console_ProcessBind(key, down);
+        end
+        else if gConsoleShow or gChatShow or (g_ActiveWindow <> nil) then
+        begin
+          // key repeat in menus and shit
+          KeyPress(key);
         end;
-        if down then KeyPress(key);
       end;
 
     SDL_JOYBUTTONDOWN, SDL_JOYBUTTONUP:
@@ -527,7 +530,6 @@ begin
           e_LogWritefln('Input Debug: jbutton, joy=%s, button=%s, keycode=%s, press=%s', [ev.jbutton.which, ev.jbutton.button, key, down]);
         e_KeyUpDown(key, down);
         g_Console_ProcessBind(key, down);
-        if down then KeyPress(key)
       end
       else
       begin
@@ -556,7 +558,6 @@ begin
           end;
           e_KeyUpDown(minuskey, True);
           g_Console_ProcessBind(minuskey, True);
-          KeyPress(minuskey);
         end
         else if ev.jaxis.value > JoystickZeroAxes[ev.jaxis.which, ev.jaxis.axis] + e_JoystickDeadzones[ev.jaxis.which] then
         begin
@@ -567,7 +568,6 @@ begin
           end;
           e_KeyUpDown(key, True);
           g_Console_ProcessBind(key, True);
-          KeyPress(key);
         end
         else
         begin
@@ -606,7 +606,6 @@ begin
             key := e_JoyHatToKey(ev.jhat.which, ev.jhat.hat, i);
             e_KeyUpDown(key, down);
             g_Console_ProcessBind(key, down);
-            if down then KeyPress(key)
           end
         end;
         JoystickHatState[ev.jhat.which, ev.jhat.hat] := hat
@@ -783,14 +782,17 @@ begin
 end;
 
 
+{$IFNDEF HEADLESS}
 var
   prevLoadingUpdateTime: UInt64 = 0;
+{$ENDIF}
 
 procedure ProcessLoading (forceUpdate: Boolean=false);
 var
   ev: TSDL_Event;
-  ID: LongWord;
+{$IFNDEF HEADLESS}
   stt: UInt64;
+{$ENDIF}
 begin
   FillChar(ev, sizeof(ev), 0);
   wLoadingProgress := true;
@@ -808,38 +810,27 @@ begin
     exit;
   end;
 
+{$IFNDEF HEADLESS}
   if not wMinimized then
   begin
-    if forceUpdate then
-    begin
-      prevLoadingUpdateTime := getTimeMilli();
-    end
-    else
+    if not forceUpdate then
     begin
       stt := getTimeMilli();
-      if (stt < prevLoadingUpdateTime) or (stt-prevLoadingUpdateTime >= ProgressUpdateMSecs) then
-      begin
-        prevLoadingUpdateTime := stt;
-        forceUpdate := true;
-      end;
+      forceUpdate := (stt < prevLoadingUpdateTime) or (stt-prevLoadingUpdateTime >= ProgressUpdateMSecs);
     end;
 
     if forceUpdate then
     begin
-      if g_Texture_Get('INTER', ID) then
-      begin
-        e_DrawSize(ID, 0, 0, 0, false, false, gScreenWidth, gScreenHeight);
-        e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
-      end
-      else
-      begin
-        e_Clear(GL_COLOR_BUFFER_BIT, 0, 0, 0);
-      end;
+      DrawMenuBackground('INTER');
+      e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
 
       DrawLoadingStat();
+      g_Console_Draw(True);
       SwapBuffers();
+      prevLoadingUpdateTime := getTimeMilli();
     end;
   end;
+{$ENDIF}
 
   e_SoundUpdate();
 
@@ -908,6 +899,8 @@ begin
     else if (NetMode = NET_CLIENT) then g_Net_Client_Update();
   end;
 
+  if NetMode = NET_SERVER then g_Net_Flush();
+
   g_Map_ProfilersEnd();
   g_Mons_ProfilersEnd();
 
@@ -974,7 +967,7 @@ begin
   {$IFDEF USE_GLES1}
     SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1);
     SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
-    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);    
+    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
   {$ELSE}
     SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
     SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
@@ -1182,8 +1175,10 @@ begin
   // Êîìàíäíàÿ ñòðîêà
   if (ParamCount > 0) then g_Game_Process_Params();
 
+{$IFNDEF HEADLESS}
   // Çàïðîñ ÿçûêà
   if (not gGameOn) and gAskLanguage then g_Menu_AskLanguage();
+{$ENDIF}
 
   e_WriteLog('Entering the main loop', TMsgType.Notify);