DEADSOFTWARE

Fix resolution detecting, add vsync
[d2df-sdl.git] / src / game / g_options.pas
index 506fc186424753429b21151925830bb1a0b6376d..e732eed074c4687773a1de38e1925a08366c0e2d 100644 (file)
@@ -148,8 +148,12 @@ uses
   begin
     ASSERT(n >= 1);
     Result := GetUserName;
-    if Result = '' then Result := 'Player' + IntToStr(machine MOD 10000);
-    if n > 1 then Result := Copy(Result, 1, 10) + (' ' + IntToStr(n))
+    if Result = '' then
+      Result := 'Player' + IntToStr(machine MOD 10000);
+    if n = 1 then
+      Result := Copy(Result, 1, 12) + ' '
+    else
+      Result := Copy(Result, 1, 10) + ' ' + IntToStr(n)
   end;
 
 procedure g_Options_SetDefaultVideo;
@@ -158,13 +162,26 @@ var
   percentage: Integer;
 begin
   (* Display 0 = Primary display *)
-  SDL_GetDesktopDisplayMode(0, @display);
+  if SDL_GetDesktopDisplayMode(0, @display) <> 0 then
+  begin
+    display.format := SDL_PIXELFORMAT_UNKNOWN;
+    display.w := 640;
+    display.h := 480;
+    display.refresh_rate := 0;
+    display.driverdata := nil
+  end;
   {$IF DEFINED(ANDROID)}
     gScreenWidth := display.w;
     gScreenHeight := display.h;
-    //gBPP := SDL_BITSPERPIXEL(dispaly.format);
-    gBPP := 32;
+    gBPP := SDL_BITSPERPIXEL(dispaly.format);
+    if gBPP = 0 then gBPP := 32;
     gFullScreen := True; (* rotation not allowed? *)
+  {$ELSEIF DEFINED(GO32V2)}
+    gScreenWidth := display.w;
+    gScreenHeight := display.h;
+    gBPP := SDL_BITSPERPIXEL(display.format);
+    if gBPP = 0 then gBPP := 8;
+    gFullScreen := False; (* Do not change videomode twice *)
   {$ELSE}
     (* Window must be smaller than display *)
     closest.w := display.w;
@@ -353,6 +370,7 @@ begin
   gShowMessages := True;
   gRevertPlayers := False;
   gChatBubble := 4;
+  gPlayerIndicator := True;
   gSFSDebug := False;
   gSFSFastMode := False;
   e_FastScreenshots := True;
@@ -610,10 +628,10 @@ begin
   ReadBoolean(g_touch_alt, 'Alt');
 
   section := 'Game';
-  ReadInteger(i, 'MaxParticles', 1000, 50000); g_GFX_SetMax(i);
-  ReadInteger(i, 'MaxShells', 300, 600); g_Shells_SetMax(i);
-  ReadInteger(i, 'MaxGibs', 150, 500); g_Gibs_SetMax(i);
-  ReadInteger(i, 'MaxCorpses', 20, 100); g_Corpses_SetMax(i);
+  ReadInteger(i, 'MaxParticles', 0, 50000); g_GFX_SetMax(i);
+  ReadInteger(i, 'MaxShells', 0, 600); g_Shells_SetMax(i);
+  ReadInteger(i, 'MaxGibs', 0, 500); g_Gibs_SetMax(i);
+  ReadInteger(i, 'MaxCorpses', 0, 100); g_Corpses_SetMax(i);
   ReadInteger(i, 'GibsCount');
   case i of
     0: gGibsCount := 0;
@@ -632,6 +650,7 @@ begin
   ReadBoolean(gShowMessages, 'Messages');
   ReadBoolean(gRevertPlayers, 'RevertPlayers');
   ReadInteger(gChatBubble, 'ChatBubble', 0, 4);
+  ReadBoolean(gPlayerIndicator, 'PlayerIndicator');
   ReadBoolean(gSFSDebug, 'SFSDebug'); wadoptDebug := gSFSDebug;
   ReadBoolean(gSFSFastMode, 'SFSFastMode'); wadoptFast := gSFSFastMode;
   ReadBoolean(e_FastScreenshots, 'FastScreenshots');
@@ -870,6 +889,7 @@ begin
   config.WriteBool('Game', 'Messages', gShowMessages);
   config.WriteBool('Game', 'RevertPlayers', gRevertPlayers);
   config.WriteInt('Game', 'ChatBubble', gChatBubble);
+  config.WriteBool('Game', 'PlayerIndicator', gPlayerIndicator);
   config.WriteBool('Game', 'SFSDebug', gSFSDebug);
   config.WriteBool('Game', 'SFSFastMode', gSFSFastMode);
   config.WriteBool('Game', 'FastScreenshots', e_FastScreenshots);
@@ -966,6 +986,9 @@ begin
   config.WriteBool('Video', 'Fullscreen', gFullscreen);
   config.WriteBool('Video', 'Maximized', gWinMaximized);
 
+  config.WriteStr('Player1', 'Name', gPlayer1Settings.Name);
+  config.WriteStr('Player2', 'Name', gPlayer2Settings.Name);
+
   config.SaveFile(FileName);
   config.Free();
 end;
@@ -1053,5 +1076,6 @@ begin
 end;
 
 initialization
+  Randomize;
   machine := Random(10000)
 end.