DEADSOFTWARE

add 'respawn items' flag
[d2df-sdl.git] / src / game / g_menu.pas
index cdf0f13604090c4ba58716ec568d6cdbc43c660d..8331660c6107c21c00137101818cc3ce0aa28a37 100644 (file)
@@ -667,12 +667,15 @@ begin
     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
@@ -731,12 +734,15 @@ begin
     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
@@ -1281,13 +1287,14 @@ end;
 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;
@@ -2187,6 +2194,16 @@ begin
       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';
@@ -2387,6 +2404,16 @@ begin
       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';