DEADSOFTWARE

Game: Use proper syntax of sets for game options instead of raw bitwise operations
[d2df-sdl.git] / src / game / g_options.pas
index ecc30f9b7606d64e9dec8b22579d5609d9d84944..79da12ec4439c1e57f490e504481e15ce2bf730a 100644 (file)
@@ -18,7 +18,7 @@ unit g_options;
 interface
 
 uses
-  g_language, g_weapons, utils;
+  g_language, g_game, g_weapons, utils;
 
 function GenPlayerName (n: Integer): String;
 
@@ -62,19 +62,21 @@ 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;
+  gsGameFlags: TGameOptions;
   gsSpawnInvul: Integer = 0;
   gsItemRespawnTime: Word = 60;
+  gsItemRespawnRandom: Word = 0;
+  gsPowerupRespawnTime: Word = 60;
+  gsPowerupRespawnRandom: Word = 0;
   gsWarmupTime: Word = 30;
 
 implementation
@@ -85,7 +87,7 @@ uses
     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_map, g_net, g_netmaster, SysUtils, CONFIG, g_main, e_texture,
   g_items, wadreader, e_graphics, g_touch, envvars, g_system;
 
   var
@@ -98,7 +100,7 @@ uses
     if Result = '' then
       Result := 'Player' + IntToStr(machine MOD 10000);
     if n = 1 then
-      Result := Copy(Result, 1, 12) + ' '
+      Result := Copy(Result, 1, 12)
     else
       Result := Copy(Result, 1, 10) + ' ' + IntToStr(n)
   end;
@@ -115,7 +117,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? *)
@@ -254,7 +256,6 @@ begin
   wadoptFast := False;
   e_FastScreenshots := True;
   gDefaultMegawadStart := DF_Default_Megawad_Start;
-  gBerserkAutoswitch := True;
   g_dbg_scale := 1.0;
   gSaveStats := False;
 
@@ -264,17 +265,24 @@ 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;
+  gsItemRespawnRandom := 0;
+  gsPowerupRespawnTime := 60;
+  gsPowerupRespawnRandom := 0;
+  gsGameFlags := [TGameOption.ALLOW_EXIT, TGameOption.DM_KEYS, TGameOption.BOTS_VS_PLAYERS,
+    TGameOption.BOTS_VS_MONSTERS, TGameOption.TEAM_HIT_TRACE, TGameOption.TEAM_HIT_PROJECTILE,
+    TGameOption.ALLOW_DROP_FLAG];
   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 *)
@@ -308,10 +316,13 @@ begin
     if GameMode = GM_SINGLE then
       GameMode := GM_COOP;
     TimeLimit := gsTimeLimit;
-    GoalLimit := gsGoalLimit;
+    ScoreLimit := gsScoreLimit;
     MaxLives := gsMaxLives;
     SpawnInvul := gsSpawnInvul;
     ItemRespawnTime := gsItemRespawnTime;
+    ItemRespawnRandom := gsItemRespawnRandom;
+    PowerupRespawnTime := gsPowerupRespawnTime;
+    PowerupRespawnRandom := gsPowerupRespawnRandom;
     WarmupTime := gsWarmupTime;
     Options := gsGameFlags;
   end;