DEADSOFTWARE

gl: implement screenshots
[d2df-sdl.git] / src / game / g_options.pas
index 3f53262185953dc4fc8a1a306df54d3ef49cdd62..2f05f7c7b22a51dd382c664384fcd4c4cab078d6 100644 (file)
@@ -38,6 +38,9 @@ var
   glLegacyNPOT: Boolean;
   glRenderToFBO: Boolean = True;
   gTextureFilter: Boolean;
+  gLerpActors: Boolean = True;
+  gFrameTime: Integer = 5;
+  gMaxFPS: Integer = 200;
   gNoSound: Boolean;
   gSoundLevel: Integer;
   gMusicLevel: Integer;
@@ -46,7 +49,6 @@ var
   gAdvCorpses: Boolean;
   gAdvBlood: Boolean;
   gAdvGibs: Boolean;
-  gGibsCount: Integer;
   gBloodCount: Integer;
   gFlash: Integer;
   gDrawBackGround: Boolean;
@@ -59,14 +61,13 @@ var
   gsSDLSampleRate: Integer;
   gsSDLBufferSize: Integer;
   gDefaultMegawadStart: AnsiString;
-  gBerserkAutoswitch: Boolean;
   glNPOTOverride: Boolean = false;
 
   (* Latched game settings *)
   gsMap: String;
   gsGameMode: String;
   gsTimeLimit: Word;
-  gsGoalLimit: Word;
+  gsScoreLimit: Word;
   gsMaxLives: Byte;
   gsPlayers: Byte;
   gsGameFlags: LongWord;
@@ -74,16 +75,69 @@ var
   gsItemRespawnTime: Word = 60;
   gsWarmupTime: Word = 30;
 
+{$IFDEF HEADLESS}
+  e_NoGraphics: Boolean = True;
+{$ELSE}
+  e_NoGraphics: Boolean = False;
+{$ENDIF}
+  g_dbg_scale: Single = 1.0;
+  r_pixel_scale: Single = 1.0;
+
+  gwin_has_stencil: Boolean = false;
+  gwin_k8_enable_light_experiments: Boolean = false;
+  g_dbg_aimline_on: Boolean = false;
+  g_dbg_input: Boolean = False;
+
+  var (* touch *)
+    g_touch_enabled: Boolean = False;
+    g_touch_size: Single = 1.0;
+    g_touch_offset: Single = 50.0;
+    g_touch_fire: Boolean = True;
+    g_touch_alt: Boolean = False;
+
+  {--- Read-only dirs ---}
+  GameWAD: string;
+  DataDirs: SSArray;
+  ModelDirs: SSArray;
+  MegawadDirs: SSArray;
+  MapDirs: SSArray;
+  WadDirs: SSArray;
+  AllMapDirs: SSArray; // Maps + Megawads
+
+  {--- Read-Write dirs ---}
+  LogFileName: string;
+  LogDirs: SSArray;
+  SaveDirs: SSArray;
+  CacheDirs: SSArray;
+  ConfigDirs: SSArray;
+  ScreenshotDirs: SSArray;
+  StatsDirs: SSArray;
+  MapDownloadDirs: SSArray;
+  WadDownloadDirs: SSArray;
+
+  GameWADName: string = 'GAME';
+
 implementation
 
 uses
-  {$INCLUDE ../nogl/noGLuses.inc}
   {$IFDEF USE_SDL2}
     SDL2,
   {$ENDIF}
-  e_log, e_input, g_console, g_window, g_sound, g_gfx, g_player, Math,
-  g_map, g_net, g_netmaster, SysUtils, CONFIG, g_game, g_main, e_texture,
-  g_items, wadreader, e_graphics, g_touch, envvars, g_system;
+  {$IFDEF ENABLE_GFX}
+    g_gfx,
+  {$ENDIF}
+  {$IFDEF ENABLE_GIBS}
+    g_gibs,
+  {$ENDIF}
+  {$IFDEF ENABLE_SHELLS}
+    g_shells,
+  {$ENDIF}
+  {$IFDEF ENABLE_CORPSES}
+    g_corpses,
+  {$ENDIF}
+  e_log, e_input, g_console, g_sound, g_player, Math,
+  g_map, g_net, g_netmaster, SysUtils, CONFIG, g_game,
+  g_items, wadreader, envvars;
 
   var
     machine: Integer;
@@ -112,7 +166,7 @@ begin
   gScreenHeight := 480;
   gWinSizeX := 640;
   gWinSizeY := 480;
-  //gBPP := SDL_BITSPERPIXEL(dispaly.format);
+  //gBPP := SDL_BITSPERPIXEL(display.format);
   gBPP := 32;
   {$IFDEF ANDROID}
     gFullScreen := True; (* rotation not allowed? *)
@@ -233,11 +287,19 @@ begin
   end;
 
   (* section Game *)
-  g_GFX_SetMax(2000);
-  g_Shells_SetMax(300);
-  g_Gibs_SetMax(150);
-  g_Corpses_SetMax(20);
-  gGibsCount := 32;
+  {$IFDEF ENABLE_GFX}
+    g_GFX_SetMax(2000);
+  {$ENDIF}
+  {$IFDEF ENABLE_SHELLS}
+    g_Shells_SetMax(DefaultShellMax);
+  {$ENDIF}
+  {$IFDEF ENABLE_CORPSES}
+    g_Corpses_SetMax(DefaultCorpsesMax);
+  {$ENDIF}
+  {$IFDEF ENABLE_GIBS}
+    g_Gibs_SetMax(DefaultGibsMax);
+    gGibsCount := DefaultGibsCount;
+  {$ENDIF}
   gBloodCount := 4;
   gAdvBlood := True;
   gAdvCorpses := True;
@@ -249,9 +311,7 @@ begin
   gChatBubble := 4;
   wadoptDebug := False;
   wadoptFast := False;
-  e_FastScreenshots := True;
   gDefaultMegawadStart := DF_Default_Megawad_Start;
-  gBerserkAutoswitch := True;
   g_dbg_scale := 1.0;
   gSaveStats := False;
 
@@ -261,17 +321,22 @@ begin
   gsMap := '';
   gsGameMode := _lc[I_MENU_GAME_TYPE_DM];
   gsTimeLimit := 0;
-  gsGoalLimit := 0;
+  gsScoreLimit := 0;
   gsMaxLives := 0;
   gsPlayers := 1;
   gsSpawnInvul := 0;
   gsItemRespawnTime := 60;
   gsGameFlags := GAME_OPTION_ALLOWEXIT or GAME_OPTION_DMKEYS or
-    GAME_OPTION_BOTVSPLAYER or GAME_OPTION_BOTVSMONSTER;
+    GAME_OPTION_BOTVSPLAYER or GAME_OPTION_BOTVSMONSTER or
+    GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE or
+    GAME_OPTION_ALLOWDROPFLAG;
   gsPlayers := 1;
 
+  if not gGameOn then
+    g_Options_ApplyGameSettings;
+
   (* section MasterServer *)
-  NetMasterList := 'mpms.doom2d.org:25665, deadsoftware.ru:25665';
+  NetMasterList := 'mpms.doom2d.org:25665, deadsoftware.ru:25665, terminalcorner.ru:25665';
   g_Net_Slist_Set(NetMasterList);
 
   (* section Server *)
@@ -305,7 +370,7 @@ begin
     if GameMode = GM_SINGLE then
       GameMode := GM_COOP;
     TimeLimit := gsTimeLimit;
-    GoalLimit := gsGoalLimit;
+    ScoreLimit := gsScoreLimit;
     MaxLives := gsMaxLives;
     SpawnInvul := gsSpawnInvul;
     ItemRespawnTime := gsItemRespawnTime;
@@ -327,6 +392,9 @@ initialization
   conRegVar('r_vsync', @gVSync, '', '');
   conRegVar('r_texfilter', @gTextureFilter, '', '');
   conRegVar('r_npot', @glNPOTOverride, '', '');
+  conRegVar('r_interp', @gLerpActors, '', 'interpolate actors');
+  conRegVar('r_scale', @g_dbg_scale, 0.01, 100.0, 'render scale', '',  false);
+  conRegVar('r_resolution_scale', @r_pixel_scale, 0.01, 100.0, 'upscale factor', '', false);
 
   (* Sound *)
   conRegVar('s_nosound', @gNoSound, '', '');
@@ -343,7 +411,9 @@ initialization
   {$ENDIF}
 
   (* Game *)
-  conRegVar('g_gibs_count', @gGibsCount, '', '');
+  {$IFDEF ENABLE_GIBS}
+    conRegVar('g_gibs_count', @gGibsCount, '', '');
+  {$ENDIF}
   conRegVar('g_blood_count', @gBloodCount, '', '');
   conRegVar('g_adv_blood', @gAdvBlood, '', '');
   conRegVar('g_adv_corpses', @gAdvCorpses, '', '');
@@ -355,9 +425,17 @@ initialization
   conRegVar('r_chat_bubble', @gChatBubble, '', '');
   conRegVar('sfs_debug', @wadoptDebug, '', '');
   conRegVar('sfs_fastmode', @wadoptFast, '', '');
-  conRegVar('g_fast_screenshots', @e_FastScreenshots, '', '');
   conRegVar('g_default_megawad', @gDefaultMegawadStart, '', '');
   conRegVar('g_save_stats', @gSaveStats, '', '');
   conRegVar('g_screenshot_stats', @gScreenshotStats, '', '');
   conRegVar('g_lastmap', @gsMap, '', '');
+
+  conRegVar('d_input', @g_dbg_input, '', '');
+
+  (* touch *)
+  conRegVar('touch_enable', @g_touch_enabled, 'enable/disable virtual buttons', 'draw buttons');
+  conRegVar('touch_fire', @g_touch_fire, 'enable/disable fire when press virtual up/down', 'fire when press up/down');
+  conRegVar('touch_size', @g_touch_size, 0.1, 10, 'size of virtual buttons', 'button size');
+  conRegVar('touch_offset', @g_touch_offset, 0, 100, '', '');
+  conRegVar('touch_alt', @g_touch_alt, 'althernative virtual buttons layout', 'althernative layout');
 end.