DEADSOFTWARE

gl: fix flickering
[d2df-sdl.git] / src / game / Doom2DF.lpr
index 32bff3807a4516af3e4489f1b3aee23109c2e42b..1e358b9224d6d6a94f33242dc3fca5cbd417fccb 100644 (file)
@@ -129,6 +129,12 @@ uses
   {$IFDEF ENABLE_GIBS}
     g_gibs in 'g_gibs.pas',
   {$ENDIF}
+  {$IFDEF ENABLE_SHELLS}
+    g_shells in 'g_shells.pas',
+  {$ENDIF}
+  {$IFDEF ENABLE_CORPSES}
+    g_corpses in 'g_corpses.pas',
+  {$ENDIF}
   g_items in 'g_items.pas',
   g_map in 'g_map.pas',
   g_monsters in 'g_monsters.pas',
@@ -138,49 +144,71 @@ uses
   g_playermodel in 'g_playermodel.pas',
   g_saveload in 'g_saveload.pas',
   g_sound in 'g_sound.pas',
-  g_textures in 'g_textures.pas',
+  g_animations in 'g_animations.pas',
   g_triggers in 'g_triggers.pas',
   g_weapons in 'g_weapons.pas',
   g_window in 'g_window.pas',
-{$IFNDEF HEADLESS}
-  {$IFDEF USE_SYSSTUB}
-    g_system in 'stub/g_system.pas',
-  {$ENDIF}
-  {$IFDEF USE_SDL}
-    g_system in 'sdl/g_system.pas',
-  {$ENDIF}
-  {$IFDEF USE_SDL2}
-    g_system in 'sdl2/g_system.pas',
-  {$ENDIF}
-{$ENDIF}
 
-{$IFNDEF HEADLESS}
-  {$I ../shared/vampimg.inc}
-  r_animations in 'opengl/r_animations.pas',
-  r_console in 'opengl/r_console.pas',
-  r_game in 'opengl/r_game.pas',
-  {$IFDEF ENABLE_GFX}
-    r_gfx in 'opengl/r_gfx.pas',
-  {$ENDIF}
-  r_graphics in 'opengl/r_graphics.pas',
-  r_items in 'opengl/r_items.pas',
-  r_map in 'opengl/r_map.pas',
-  r_monsters in 'opengl/r_monsters.pas',
-  r_netmaster in 'opengl/r_netmaster.pas',
-  r_player in 'opengl/r_player.pas',
-  r_playermodel in 'opengl/r_playermodel.pas',
-  r_render in 'opengl/r_render.pas',
-  r_texture in 'opengl/r_texture.pas',
-  r_textures in 'opengl/r_textures.pas',
-  r_weapons in 'opengl/r_weapons.pas',
-  r_window in 'opengl/r_window.pas',
-  {$IFDEF ENABLE_TOUCH}
-    r_touch in 'opengl/r_touch.pas',
+  {$IFDEF ENABLE_SYSTEM}
+    {$IFDEF USE_SYSSTUB}
+      g_system in 'stub/g_system.pas',
+    {$ENDIF}
+    {$IFDEF USE_SDL}
+      g_system in 'sdl/g_system.pas',
+    {$ENDIF}
+    {$IFDEF USE_SDL2}
+      g_system in 'sdl2/g_system.pas',
+    {$ENDIF}
   {$ENDIF}
+
   {$IFDEF ENABLE_MENU}
     g_gui in 'g_gui.pas',
     g_menu in 'g_menu.pas',
   {$ENDIF}
+
+{$IFDEF ENABLE_RENDER}
+  {$IF DEFINED(USE_OPENGL) OR DEFINED(USE_GLES1) OR DEFINED(USE_GLSTUB)}
+    {$I ../shared/vampimg.inc}
+    r_animations in 'opengl/r_animations.pas',
+    r_console in 'opengl/r_console.pas',
+    r_game in 'opengl/r_game.pas',
+    {$IFDEF ENABLE_GFX}
+      r_gfx in 'opengl/r_gfx.pas',
+    {$ENDIF}
+    r_graphics in 'opengl/r_graphics.pas',
+    r_items in 'opengl/r_items.pas',
+    r_map in 'opengl/r_map.pas',
+    r_monsters in 'opengl/r_monsters.pas',
+    r_netmaster in 'opengl/r_netmaster.pas',
+    r_player in 'opengl/r_player.pas',
+    r_playermodel in 'opengl/r_playermodel.pas',
+    r_render in 'opengl/r_render.pas',
+    r_texture in 'opengl/r_texture.pas',
+    r_textures in 'opengl/r_textures.pas',
+    r_weapons in 'opengl/r_weapons.pas',
+    r_window in 'opengl/r_window.pas',
+    {$IFDEF ENABLE_TOUCH}
+      r_touch in 'opengl/r_touch.pas',
+    {$ENDIF}
+    {$IFDEF ENABLE_MENU}
+      r_gui in 'opengl/r_gui.pas',
+    {$ENDIF}
+  {$ELSEIF DEFINED(USE_STUBRENDER)}
+    r_render in 'renders/stub/r_render.pas',
+  {$ELSEIF DEFINED(USE_NEWGL)}
+    {$I ../shared/vampimg.inc}
+    r_render in 'renders/opengl/r_render.pas',
+    r_atlas in 'renders/opengl/r_atlas.pas',
+    r_textures in 'renders/opengl/r_textures.pas',
+    r_draw in 'renders/opengl/r_draw.pas',
+    r_map in 'renders/opengl/r_map.pas',
+    r_fonts in 'renders/opengl/r_fonts.pas',
+    r_common in 'renders/opengl/r_common.pas',
+    r_console in 'renders/opengl/r_console.pas',
+    r_gui in 'renders/opengl/r_gui.pas',
+  {$ELSE}
+    {$FATAL render driver not selected}
+  {$ENDIF}
 {$ENDIF}
 
 {$IFDEF USE_FMOD}
@@ -245,7 +273,7 @@ begin
        if (NetMode = NET_SERVER) then g_Net_Host_Update()
   else if (NetMode = NET_CLIENT) then g_Net_Client_Update();
   // think
-{$IFNDEF HEADLESS}
+{$IFDEF ENABLE_RENDER}
   r_Render_Update;
 {$ENDIF}
   g_Game_Update();
@@ -260,10 +288,10 @@ var
   Time, Time_Delta: Int64;
   Frame: Int64;
 begin
-  {$IFDEF HEADLESS}
-    Result := False;
-  {$ELSE}
+  {$IFDEF ENABLE_SYSTEM}
     Result := sys_HandleInput();
+  {$ELSE}
+    Result := False;
   {$ENDIF}
 
   Time := GetTickCount64();
@@ -312,10 +340,9 @@ begin
       gLerpFactor := 1.0
     else
       gLerpFactor := nmin(1.0, (Time - Time_Old) / 28.0);
-{$IFNDEF HEADLESS}
-    r_Render_Draw;
-    sys_Repaint;
-{$ENDIF}
+    {$IFDEF ENABLE_RENDER}
+      r_Render_Draw;
+    {$ENDIF}
     Frame := Time
   end
   else
@@ -381,7 +408,6 @@ begin
       begin
         itmp := 0;
         val(ParamStr(idx), itmp, valres);
-        {$IFNDEF HEADLESS}
         if (valres = 0) and (not g_holmes_imfunctional) then
         begin
           case itmp of
@@ -390,11 +416,6 @@ begin
             16: uiContext.font := 'win16';
           end;
         end;
-        {$ELSE}
-        // fuck off, fpc!
-        itmp := itmp;
-        valres := valres;
-        {$ENDIF}
         Inc(idx);
       end;
     end;
@@ -971,7 +992,7 @@ end;
 
   procedure ScreenResize (w, h: Integer);
   begin
-    {$IFNDEF HEADLESS}
+    {$IFDEF ENABLE_RENDER}
       r_Render_Resize(w, h);
       {$IFDEF ENABLE_HOLMES}
         fuiScrWdt := w;
@@ -998,7 +1019,7 @@ end;
     InitPrep;
     e_Input_Initialize;
     InitSound;
-    {$IFNDEF HEADLESS}
+    {$IFDEF ENABLE_SYSTEM}
       sys_Init;
       sys_CharPress := @CharPress; (* install hook *)
       sys_ScreenResize := @ScreenResize; (* install hook *)
@@ -1008,7 +1029,7 @@ end;
     g_Console_Initialize;
     // TODO move load configs here
     g_Language_Set(gLanguage);
-    {$IFNDEF HEADLESS}
+    {$IFDEF ENABLE_RENDER}
       r_Render_Initialize;
     {$ENDIF}
     DebugOptions;
@@ -1017,16 +1038,15 @@ end;
     {$IFDEF ENABLE_HOLMES}
       InitHolmes;
     {$ENDIF}
-    {$IFDEF HEADLESS}
-      g_PlayerModel_LoadFake('doomer', 'doomer.wad');
-    {$ELSE}
+    {$IFDEF ENABLE_RENDER}
       g_PlayerModel_LoadAll;
       r_Render_Load;
+    {$ELSE}
+      g_PlayerModel_LoadFake('doomer', 'doomer.wad');
     {$ENDIF}
     g_Game_Init;
     {$IFDEF ENABLE_MENU}
       g_Menu_Init;
-      g_GUI_Init;
     {$ENDIF}
     g_Game_Process_Params;
     // TODO reload GAME textures
@@ -1042,7 +1062,7 @@ end;
       g_GUI_Destroy;
       g_Menu_Free;
     {$ENDIF}
-    {$IFNDEF HEADLESS}
+    {$IFDEF ENABLE_RENDER}
       r_Render_Free;
     {$ENDIF}
     {$IFDEF ENABLE_HOLMES}
@@ -1051,8 +1071,10 @@ end;
     g_Net_Slist_ShutdownAll;
     g_Net_DeinitLowLevel;
     (* g_Touch_Finalize; *)
-    {$IFNDEF HEADLESS}
+    {$IFDEF ENABLE_RENDER}
       r_Render_Finalize;
+    {$ENDIF}
+    {$IFDEF ENABLE_SYSTEM}
       sys_Final;
     {$ENDIF}
     g_Console_Finalize;