DEADSOFTWARE

system: add option -dDISABLE_SYSTEM
authorDeaDDooMER <deaddoomer@deadsoftware.ru>
Sat, 29 Jan 2022 18:44:13 +0000 (21:44 +0300)
committerDeaDDooMER <deaddoomer@deadsoftware.ru>
Sat, 29 Jan 2022 18:44:13 +0000 (21:44 +0300)
src/game/Doom2DF.lpr
src/game/g_game.pas
src/game/g_netmaster.pas
src/game/g_window.pas
src/game/opengl/r_game.pas
src/game/opengl/r_render.pas
src/game/opengl/r_window.pas
src/shared/a_modes.inc

index e7999c553863f7840e31b71ff6b812be1d4ca624..5a06f52c4e40bc39f5e4624cac70e2ab1ce6c27d 100644 (file)
@@ -148,17 +148,18 @@ uses
   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',
+
+  {$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}
-{$ENDIF}
 
 {$IFDEF ENABLE_RENDER}
   {$I ../shared/vampimg.inc}
@@ -263,10 +264,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();
@@ -315,10 +316,12 @@ begin
       gLerpFactor := 1.0
     else
       gLerpFactor := nmin(1.0, (Time - Time_Old) / 28.0);
-{$IFDEF ENABLE_RENDER}
-    r_Render_Draw;
-    sys_Repaint;
-{$ENDIF}
+    {$IFDEF ENABLE_RENDER}
+      r_Render_Draw;
+    {$ENDIF}
+    {$IFDEF ENABLE_SYSTEM}
+      sys_Repaint;
+    {$ENDIF}
     Frame := Time
   end
   else
@@ -967,7 +970,7 @@ end;
     InitPrep;
     e_Input_Initialize;
     e_InitSoundSystem(NoSound);
-    {$IFNDEF HEADLESS}
+    {$IFDEF ENABLE_SYSTEM}
       sys_Init;
       sys_CharPress := @CharPress; (* install hook *)
       sys_ScreenResize := @ScreenResize; (* install hook *)
@@ -1022,6 +1025,8 @@ end;
     (* g_Touch_Finalize; *)
     {$IFDEF ENABLE_RENDER}
       r_Render_Finalize;
+    {$ENDIF}
+    {$IFDEF ENABLE_SYSTEM}
       sys_Final;
     {$ENDIF}
     g_Console_Finalize;
index 69c12409394213a367cff2e2da5ad6d95ce50769..de56a17540e941d289947a4dc780f82bb5555211 100644 (file)
@@ -463,7 +463,7 @@ uses
   {$IFDEF ENABLE_RENDER}
     r_render,
   {$ENDIF}
-  {$IFNDEF HEADLESS}
+  {$IFDEF ENABLE_SYSTEM}
     g_system,
   {$ENDIF}
   e_res, g_window,
@@ -2554,7 +2554,7 @@ begin
 
   gExit := EXIT_QUIT;
 
-  {$IFNDEF HEADLESS}
+  {$IFDEF ENABLE_SYSTEM}
     sys_RequestQuit;
   {$ENDIF}
 end;
index e708c13227bfd843e38f60a4fb4a243c9e4946b4..120fcde446ff5d355e780370d129311e9723e9fb 100644 (file)
@@ -182,7 +182,7 @@ uses
   {$IFDEF ENABLE_RENDER}
     r_render,
   {$ENDIF}
-  {$IFNDEF HEADLESS}
+  {$IFDEF ENABLE_SYSTEM}
     g_system,
   {$ENDIF}
   e_input, e_log, g_net, g_console,
@@ -1751,10 +1751,10 @@ begin
   if gConsoleShow or gChatShow then
     Exit;
 
-  {$IFDEF HEADLESS}
-    qm := True;
-  {$ELSE}
+  {$IFDEF ENABLE_SYSTEM}
     qm := sys_HandleInput(); // this updates kbd
+  {$ELSE}
+    qm := True;
   {$ENDIF}
 
   if qm or e_KeyPressed(IK_ESCAPE) or e_KeyPressed(VK_ESCAPE) or
@@ -1792,7 +1792,7 @@ begin
       {$IFDEF ENABLE_RENDER}
         r_Render_Draw;
       {$ENDIF}
-      {$IFNDEF HEALESS}
+      {$IFDEF ENABLE_SYSTEM}
         sys_Repaint;
       {$ENDIF}
 
index 027f409b8a75938152c4c57ddc02820903ba4831..a6edeae8069d4c26e73b7784db2c47d5d73dbae5 100644 (file)
@@ -25,7 +25,7 @@ implementation
     {$IFDEF ENABLE_RENDER}
       r_render,
     {$ENDIF}
-    {$IFNDEF HEADLESS}
+    {$IFDEF ENABLE_SYSTEM}
       g_system,
     {$ENDIF}
     e_sound, g_net
@@ -34,10 +34,10 @@ implementation
   procedure ProcessLoading (forceUpdate: Boolean = False);
     var update: Boolean;
   begin
-    {$IFDEF HEADLESS}
-      update := True;
-    {$ELSE}
+    {$IFDEF ENABLE_SYSTEM}
       update := sys_HandleInput() = False;
+    {$ELSE}
+      update := True;
     {$ENDIF}
     if update then
     begin
index 286ce250b12e292e780e7e85a2b62872f07c1411..314c7e7ac21d663d3dc4ba4546f71f03143b52ed 100644 (file)
@@ -50,9 +50,11 @@ implementation
     {$IFDEF ENABLE_CORPSES}
       g_corpses,
     {$ENDIF}
+    {$IFDEF ENABLE_SYSTEM}
+      g_system,
+    {$ENDIF}
     SysUtils, Classes, Math,
     g_base, g_basic, r_graphics,
-    g_system,
     MAPDEF, xprofiler, utils, wadreader, CONFIG,
     e_input, e_sound,
     g_language, g_console, g_triggers, g_player, g_options, g_monsters, g_map, g_panel,
@@ -575,7 +577,9 @@ var
 begin
   e_TextureFontGetSize(gStdFont, ww2, hh2);
 
-  sys_HandleInput;
+  {$IFDEF ENABLE_SYSTEM}
+    sys_HandleInput;
+  {$ENDIF}
 
   if g_Console_Action(ACTION_SCORES) then
   begin
index 253ff7de93177bb0bab72d0665fe21a4e951ba23..2a4c3e7247226170373c12d4ce38ea07ca61444e 100644 (file)
@@ -61,8 +61,11 @@ implementation
     {$IFDEF ENABLE_GFX}
       r_gfx,
     {$ENDIF}
+    {$IFDEF ENABLE_SYSTEM}
+      g_system,
+    {$ENDIF}
     SysUtils, Classes, Math,
-    e_log, g_system, utils,
+    e_log, utils,
     g_game, g_options, g_console,
     r_window, r_graphics, r_console, r_playermodel, r_textures, r_animations,
     r_weapons, r_items, r_monsters, r_map, r_player, r_game
@@ -237,8 +240,10 @@ implementation
 
   procedure r_Render_Initialize;
   begin
-    if sys_SetDisplayMode(gRC_Width, gRC_Height, gBPP, gRC_FullScreen, gRC_Maximized) = False then
-      raise Exception.Create('Failed to set videomode on startup.');
+    {$IFDEF ENABLE_SYSTEM}
+      if sys_SetDisplayMode(gRC_Width, gRC_Height, gBPP, gRC_FullScreen, gRC_Maximized) = False then
+        raise Exception.Create('Failed to set videomode on startup.');
+    {$ENDIF}
     LoadGL;
     r_Window_Initialize;
     r_Console_Init;
@@ -301,11 +306,13 @@ implementation
 
   procedure r_Render_Apply;
   begin
-    if sys_SetDisplayMode(Max(1, gRC_Width), Max(1, gRC_Height), Max(1, gBPP), gRC_FullScreen, gRC_Maximized) then
-      e_LogWriteln('resolution changed')
-    else
-      e_LogWriteln('resolution not changed');
-    sys_EnableVSync(gVSync)
+    {$IFDEF ENABLE_SYSTEM}
+      if sys_SetDisplayMode(Max(1, gRC_Width), Max(1, gRC_Height), Max(1, gBPP), gRC_FullScreen, gRC_Maximized) then
+        e_LogWriteln('resolution changed')
+      else
+        e_LogWriteln('resolution not changed');
+      sys_EnableVSync(gVSync)
+    {$ENDIF}
   end;
 
   function r_Render_WriteScreenShot (filename: String): Boolean;
index 9b7100f4ea05ff642754341043a7cf188f0d8a8d..3e4075fe0d615bbdb1ccae719632740f48cc4060 100644 (file)
@@ -23,9 +23,12 @@ implementation
 
   uses
     {$INCLUDE ../nogl/noGLuses.inc}
+    {$IFDEF ENABLE_SYSTEM}
+      g_system,
+    {$ENDIF}
     SysUtils, Classes,
     e_log, utils,
-    r_graphics, r_game, r_console, g_system,
+    r_graphics, r_game, r_console,
     g_options, g_game, g_console,
     xprofiler
   ;
@@ -61,7 +64,9 @@ implementation
         e_SetViewPort(0, 0, gWinSizeX, gWinSizeY);
         e_BlitFramebuffer(gWinSizeX, gWinSizeY);
 
-        sys_Repaint;
+        {$IFDEF ENABLE_SYSTEM}
+          sys_Repaint;
+        {$ENDIF}
         prevLoadingUpdateTime := getTimeMilli();
       end;
     end;
index d018fa0ddcc1f35ba5b88ab36e9fde8028a4c8de..13ee251ab42e57a9271428f782b23fba338e33f4 100644 (file)
     {$UNDEF ENABLE_RENDER}
     {$DEFINE DISABLE_RENDER}
   {$ENDIF}
+  {$IFDEF ENABLE_SYSTEM}
+    {$WARNING System in headless mode has no sense. Disabled.}
+    {$UNDEF ENABLE_SYSTEM}
+    {$DEFINE DISABLE_SYSTEM}
+  {$ENDIF}
 {$ENDIF}
 
 {$IF DEFINED(ENABLE_MENU) AND DEFINED(DISABLE_MENU)}
   {$ENDIF}
 {$ENDIF}
 
+{$IF DEFINED(ENABLE_SYSTEM) AND DEFINED(DISABLE_SYSTEM)}
+  {$ERROR Select ENABLE_SYSTEM or DISABLE_SYSTEM}
+{$ELSEIF NOT DEFINED(ENABLE_SYSTEM) AND NOT DEFINED(DISABLE_SYSTEM)}
+  // default ENABLE/DISABLE system driver
+  {$IFDEF HEADLESS}
+    {$DEFINE DISABLE_SYSTEM}
+  {$ELSE}
+    {$DEFINE ENABLE_SYSTEM}
+  {$ENDIF}
+{$ENDIF}
+
 {$IF DEFINED(USE_SYSSTUB)}
   {$IF DEFINED(USE_SDL) OR DEFINED(USE_SDL2)}
     {$ERROR Only one system driver must be selected!}
     {$ERROR Holmes supported only with desktop OpenGL}
   {$ENDIF}
 {$ENDIF}
+
+{$IFDEF ENABLE_MENU}
+  {$IFDEF DISABLE_RENDER}
+    {$FATAL Render driver required for current menu implementation}
+  {$ENDIF}
+{$ENDIF}
+
+{$IFDEF ENABLE_TOUCH}
+  {$IFDEF DISABLE_SYSTEM}
+    {$FATAL System driver required for current touch implementation}
+  {$ENDIF}
+{$ENDIF}