diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas
index 53a1cbc6bae3cca965e73a2c6dfdd3ea144ccca3..8331660c6107c21c00137101818cc3ce0aa28a37 100644 (file)
--- a/src/game/g_menu.pas
+++ b/src/game/g_menu.pas
if g_Game_IsClient then MC_SEND_PlayerSettings;
- s := e_GetDir(ConfigDirs);
+ s := e_GetWriteableDir(ConfigDirs);
if s <> '' then
g_Options_Write(s + '/' + CONFIG_FILENAME);
g_Console_WriteGameConfig;
gcMaxLives := StrToIntDef(TGUIEdit(GetControl('edMaxLives')).Text, 0);
gcTeamDamage := TGUISwitch(GetControl('swTeamDamage')).ItemIndex = 0;
+ gcRespawnItems := TGUISwitch(GetControl('swRespawnItems')).ItemIndex = 0;
gcAllowExit := TGUISwitch(GetControl('swEnableExits')).ItemIndex = 0;
gcWeaponStay := TGUISwitch(GetControl('swWeaponStay')).ItemIndex = 0;
gcMonsters := TGUISwitch(GetControl('swMonsters')).ItemIndex = 0;
Options := 0;
if gcTeamDamage then
Options := Options or GAME_OPTION_TEAMDAMAGE;
+ if gcRespawnItems then
+ Options := Options or GAME_OPTION_RESPAWNITEMS;
if gcAllowExit then
Options := Options or GAME_OPTION_ALLOWEXIT;
if gcWeaponStay then
gcMap := Map;
end;
- s := e_GetDir(ConfigDirs);
+ s := e_GetWriteableDir(ConfigDirs);
if s <> '' then
g_Options_Write_Gameplay_Custom(s + '/' + CONFIG_FILENAME);
NetPort := StrToIntDef(TGUIEdit(GetControl('edPort')).Text, 0);
gnTeamDamage := TGUISwitch(GetControl('swTeamDamage')).ItemIndex = 0;
+ gnRespawnItems := TGUISwitch(GetControl('swRespawnItems')).ItemIndex = 0;
gnAllowExit := TGUISwitch(GetControl('swEnableExits')).ItemIndex = 0;
gnWeaponStay := TGUISwitch(GetControl('swWeaponStay')).ItemIndex = 0;
gnMonsters := TGUISwitch(GetControl('swMonsters')).ItemIndex = 0;
Options := 0;
if gnTeamDamage then
Options := Options or GAME_OPTION_TEAMDAMAGE;
+ if gnRespawnItems then
+ Options := Options or GAME_OPTION_RESPAWNITEMS;
if gnAllowExit then
Options := Options or GAME_OPTION_ALLOWEXIT;
if gnWeaponStay then
NetUseMaster := TGUISwitch(GetControl('swUseMaster')).ItemIndex = 0;
end;
- s := e_GetDir(ConfigDirs);
+ s := e_GetWriteableDir(ConfigDirs);
if s <> '' then
begin
g_Options_Write_Net_Server(s + '/' + CONFIG_FILENAME);
PW := TGUIEdit(GetControl('edPW')).Text;
end;
- s := e_GetDir(ConfigDirs);
+ s := e_GetWriteableDir(ConfigDirs);
if s <> '' then
g_Options_Write_Net_Client(s + '/' + CONFIG_FILENAME);
g_Game_StartClient(NetClientIP, NetClientPort, PW);
PW := TGUIEdit(GetControl('edPW')).Text;
end;
- s := e_GetDir(ConfigDirs);
+ s := e_GetWriteableDir(ConfigDirs);
if s <> '' then
g_Options_Write_Net_Client(s + '/' + CONFIG_FILENAME);
g_Game_StartClient(NetClientIP, NetClientPort, PW);
WAD := TGUIFileListBox(GetControl('lsWAD')).SelectedItem();
TwoPlayers := TGUISwitch(GetControl('swPlayers')).ItemIndex = 1;
end;
+ WAD := e_FindWadRel(MegawadDirs, WAD);
if TwoPlayers then
n := 2
procedure ProcSinglePlayer (n: Integer);
var wad, map: AnsiString;
begin
+ assert(n >= 1);
wad := g_ExtractWadName(gDefaultMegawadStart);
map := g_ExtractFilePathName(gDefaultMegawadStart);
if e_FindResource(AllMapDirs, wad) then
begin
wad := ExpandFileName(wad);
- g_Game_StartSingle(wad + ':\' + map, False, n);
- end;
+ g_Game_StartSingle(wad + ':\' + map, n > 1, n)
+ end
end;
procedure ProcSingle1Player;
if (wad = '') or (map = '') then
Exit;
+ wad := e_FindWadRel(MapDirs, WAD);
+
res := wad+':\'+map;
TGUILabel(TGUIMenu(g_GUI_GetWindow('CustomGameMenu').GetControl('mCustomGameMenu')).GetControl('lbMap')).Text := res;
end;
procedure ProcSetRussianLanguage;
- var s: AnsiString;
begin
if gLanguage <> LANGUAGE_RUSSIAN then
begin
gLanguage := LANGUAGE_RUSSIAN;
gLanguageChange := True;
gAskLanguage := False;
-
- s := e_GetDir(ConfigDirs);
- if s <> '' then
- g_Options_Write_Language(s + '/' + CONFIG_FILENAME);
-
- // Ñîõðàíÿåì èçìåíåíèÿ âñåõ íàñòðîåê:
ProcApplyOptions();
end;
end;
procedure ProcSetEnglishLanguage;
- var s: AnsiString;
begin
if gLanguage <> LANGUAGE_ENGLISH then
begin
gLanguage := LANGUAGE_ENGLISH;
gLanguageChange := True;
gAskLanguage := False;
-
- s := e_GetDir(ConfigDirs);
- if s <> '' then
- g_Options_Write_Language(s + '/' + CONFIG_FILENAME);
-
- // Ñîõðàíÿåì èçìåíåíèÿ âñåõ íàñòðîåê:
ProcApplyOptions();
end;
end;
with TGUIListBox(menu.GetControl('lsResolution')) do
begin
- list := sys_GetDispalyModes(gBPP);
+ list := sys_GetDisplayModes(gBPP);
if list <> nil then
begin
Items := list;
end;
procedure ProcSetFirstRussianLanguage;
- var s: AnsiString;
begin
gLanguage := LANGUAGE_RUSSIAN;
gLanguageChange := True;
gAskLanguage := False;
-
- s := e_GetDir(ConfigDirs);
- if s <> '' then
- g_Options_Write_Language(s + '/' + CONFIG_FILENAME)
end;
procedure ProcSetFirstEnglishLanguage;
- var s: AnsiString;
begin
gLanguage := LANGUAGE_ENGLISH;
gLanguageChange := True;
gAskLanguage := False;
-
- s := e_GetDir(ConfigDirs);
- if s <> '' then
- g_Options_Write_Language(s + '/' + CONFIG_FILENAME)
end;
procedure ProcRecallAddress();
else
ItemIndex := 1;
end;
+ with AddSwitch(_lc[I_MENU_RESPAWN_ITEMS]) do
+ begin
+ Name := 'swRespawnItems';
+ AddItem(_lc[I_MENU_YES]);
+ AddItem(_lc[I_MENU_NO]);
+ if gnRespawnItems then
+ ItemIndex := 0
+ else
+ ItemIndex := 1;
+ end;
with AddSwitch(_lc[I_MENU_ENABLE_EXITS]) do
begin
Name := 'swEnableExits';
else
ItemIndex := 1;
end;
+ with AddSwitch(_lc[I_MENU_RESPAWN_ITEMS]) do
+ begin
+ Name := 'swRespawnItems';
+ AddItem(_lc[I_MENU_YES]);
+ AddItem(_lc[I_MENU_NO]);
+ if gcRespawnItems then
+ ItemIndex := 0
+ else
+ ItemIndex := 1;
+ end;
with AddSwitch(_lc[I_MENU_ENABLE_EXITS]) do
begin
Name := 'swEnableExits';