DEADSOFTWARE

render: separate game logic and drawing
[d2df-sdl.git] / src / game / g_window.pas
index 5d1c59476562a51e5857173ed10021712e2580f1..410864799c6440bd610e696d849692222fc38202 100644 (file)
@@ -41,7 +41,7 @@ uses
 {$INCLUDE ../nogl/noGLuses.inc}
   SysUtils, Classes, MAPDEF, Math,
   e_graphics, e_log, e_texture, g_main,
-  g_console, e_input, g_options, g_game,
+  g_console, r_console, e_input, g_options, g_game, r_game,
   g_basic, g_textures, e_sound, g_sound, g_menu, ENet, g_net,
   g_map, g_gfx, g_monsters, xprofiler,
   g_touch, g_gui, g_system, g_netmaster;
@@ -88,11 +88,18 @@ begin
 
     if forceUpdate then
     begin
+      e_SetRendertarget(True);
+      e_SetViewPort(0, 0, gScreenWidth, gScreenHeight);
+
       DrawMenuBackground('INTER');
       e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
-
       DrawLoadingStat();
-      g_Console_Draw(True);
+      r_Console_Draw(True);
+
+      e_SetRendertarget(False);
+      e_SetViewPort(0, 0, gWinSizeX, gWinSizeY);
+      e_BlitFramebuffer(gWinSizeX, gWinSizeY);
+
       sys_Repaint;
       prevLoadingUpdateTime := getTimeMilli();
     end;
@@ -138,15 +145,9 @@ begin
   begin
     flag := true;
     for i := 1 to t do
-    begin
-           if (NetMode = NET_SERVER) then g_Net_Host_Update()
-      else if (NetMode = NET_CLIENT) then g_Net_Client_Update();
       Update();
-    end;
   end;
 
-  if NetMode = NET_SERVER then g_Net_Flush();
-
   g_Map_ProfilersEnd();
   g_Mons_ProfilersEnd();
 
@@ -174,7 +175,7 @@ begin
   begin
     if (not wMinimized) then
     begin
-      if gPause or not gLerpActors then
+      if gPause or (not gLerpActors) or (gState = STATE_FOLD) then
         gLerpFactor := 1.0
       else
         gLerpFactor := nmin(1.0, (Time - Time_Old) / 28.0);