diff --git a/src/game/g_options.pas b/src/game/g_options.pas
index 86761de063a688abc621149e2b2adc531c906755..e732eed074c4687773a1de38e1925a08366c0e2d 100644 (file)
--- a/src/game/g_options.pas
+++ b/src/game/g_options.pas
P2Control: TPlayerControl;
end;
+function GenPlayerName (n: Integer): String;
+
procedure g_Options_SetDefault();
procedure g_Options_Read(FileName: String);
procedure g_Options_Write(FileName: String);
{$INCLUDE ../nogl/noGLuses.inc}
e_log, e_input, 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, SDL2;
+ g_items, wadreader, e_graphics, g_touch, SDL2, envvars;
+
+ var
+ machine: Integer;
+
+ function GenPlayerName (n: Integer): String;
+ begin
+ ASSERT(n >= 1);
+ Result := GetUserName;
+ 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;
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;
with gPlayer1Settings do
begin
- Name := 'Player1';
+ Name := GenPlayerName(1);
Model := STD_PLAYER_MODEL;
Color.R := PLAYER1_DEF_COLOR.R;
Color.G := PLAYER1_DEF_COLOR.G;
with gPlayer2Settings do
begin
- Name := 'Player2';
+ Name := GenPlayerName(2);
Model := STD_PLAYER_MODEL;
Color.R := PLAYER2_DEF_COLOR.R;
Color.G := PLAYER2_DEF_COLOR.G;
gShowMessages := True;
gRevertPlayers := False;
gChatBubble := 4;
+ gPlayerIndicator := True;
gSFSDebug := False;
gSFSFastMode := False;
e_FastScreenshots := True;
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;
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');
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);
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;
config.Free();
end;
+initialization
+ Randomize;
+ machine := Random(10000)
end.