DEADSOFTWARE

cleanup: remove g_main.pas
[d2df-sdl.git] / src / game / g_menu.pas
index 484b513c208e50a63f9175c540fbd6c53fb45fb3..265bade66424b2a0412cac54634581691f123a91 100644 (file)
@@ -43,14 +43,13 @@ var
 implementation
 
 uses
-  {$INCLUDE ../nogl/noGLuses.inc}
-  g_gui, g_textures, e_graphics, g_main, g_window, g_game, g_map,
-  g_basic, g_console, g_sound, g_gfx, g_player, g_options, g_weapons,
+  g_gui, g_textures, r_graphics, g_window, g_game, g_map,
+  g_base, g_basic, g_console, g_sound, g_gfx, g_player, g_options, g_weapons,
   e_log, SysUtils, CONFIG, g_playermodel, DateUtils,
   MAPDEF, Math, g_saveload,
-  e_texture, g_language, e_res,
+  g_language, e_res,
   g_net, g_netmsg, g_netmaster, g_items, e_input, g_touch,
-  utils, wadreader, g_system;
+  utils, wadreader, g_system, r_game;
 
 
 type TYNCallback = procedure (yes:Boolean);
@@ -681,6 +680,12 @@ begin
     if TGUISwitch(GetControl('swMonsters')).ItemIndex = 0 then
       gsGameFlags := gsGameFlags or GAME_OPTION_MONSTERS;
 
+    case TGUISwitch(GetControl('swTeamHit')).ItemIndex of
+      1: gsGameFlags := gsGameFlags or GAME_OPTION_TEAMHITTRACE;
+      2: gsGameFlags := gsGameFlags or GAME_OPTION_TEAMHITPROJECTILE;
+      0: gsGameFlags := gsGameFlags or GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE;
+    end;
+
     case TGUISwitch(GetControl('swBotsVS')).ItemIndex of
       1: gsGameFlags := gsGameFlags or GAME_OPTION_BOTVSMONSTER;
       2: gsGameFlags := gsGameFlags or GAME_OPTION_BOTVSPLAYER or GAME_OPTION_BOTVSMONSTER;
@@ -779,7 +784,7 @@ begin
 
   slWaitStr := _lc[I_NET_SLIST_WAIT];
 
-  g_Game_Draw;
+  r_Game_Draw;
   sys_Repaint;
 
   slReturnPressed := True;
@@ -1635,6 +1640,15 @@ begin
         ItemIndex := 0
       else
         ItemIndex := 1;
+    with TGUISwitch(menu.GetControl('swTeamHit')) do
+      if (Options and (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE)) = (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE) then
+        ItemIndex := 0
+      else if LongBool(Options and GAME_OPTION_TEAMHITTRACE) then
+        ItemIndex := 1
+      else if LongBool(Options and GAME_OPTION_TEAMHITPROJECTILE) then
+        ItemIndex := 2
+      else
+        ItemIndex := 3;
     with TGUISwitch(menu.GetControl('swDeathmatchKeys')) do
       if LongBool(Options and GAME_OPTION_DMKEYS) then
         ItemIndex := 0
@@ -1658,6 +1672,7 @@ begin
     if GameType in [GT_CUSTOM, GT_SERVER] then
       begin
         TGUISwitch(menu.GetControl('swTeamDamage')).Enabled := True;
+        TGUISwitch(menu.GetControl('swTeamHit')).Enabled := True;
         if (GameMode in [GM_DM, GM_TDM, GM_CTF]) then
         begin
           TGUISwitch(menu.GetControl('swDeathmatchKeys')).Enabled := True;
@@ -1679,6 +1694,7 @@ begin
     else
       begin
         TGUISwitch(menu.GetControl('swTeamDamage')).Enabled := True;
+        TGUISwitch(menu.GetControl('swTeamHit')).Enabled := True;
         TGUISwitch(menu.GetControl('swDeathmatchKeys')).Enabled := False;
         TGUILabel(menu.GetControlsText('swDeathmatchKeys')).Color := MENU_UNACTIVEITEMS_COLOR;
         with TGUIEdit(menu.GetControl('edTimeLimit')) do
@@ -1724,6 +1740,16 @@ begin
         Options := Options and (not GAME_OPTION_TEAMDAMAGE);
     end;
 
+    if TGUISwitch(menu.GetControl('swTeamHit')).Enabled then
+    begin
+      Options := Options and not (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE);
+      case TGUISwitch(menu.GetControl('swTeamHit')).ItemIndex of
+        1: Options := Options or GAME_OPTION_TEAMHITTRACE;
+        2: Options := Options or GAME_OPTION_TEAMHITPROJECTILE;
+        0: Options := Options or GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE;
+      end;
+    end;
+
     if TGUISwitch(menu.GetControl('swDeathmatchKeys')).Enabled then
     begin
       if TGUISwitch(menu.GetControl('swDeathmatchKeys')).ItemIndex = 0 then
@@ -2193,6 +2219,22 @@ begin
       else
         ItemIndex := 1;
     end;
+    with AddSwitch(_lc[I_MENU_TEAM_HIT]) do
+    begin
+      Name := 'swTeamHit';
+      AddItem(_lc[I_MENU_TEAM_HIT_BOTH]);
+      AddItem(_lc[I_MENU_TEAM_HIT_TRACE]);
+      AddItem(_lc[I_MENU_TEAM_HIT_PROJECTILE]);
+      AddItem(_lc[I_MENU_TEAM_HIT_NOTHING]);
+      if (gsGameFlags and (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE)) = (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE) then
+        ItemIndex := 0
+      else if LongBool(gsGameFlags and GAME_OPTION_TEAMHITTRACE) then
+        ItemIndex := 1
+      else if LongBool(gsGameFlags and GAME_OPTION_TEAMHITPROJECTILE) then
+        ItemIndex := 2
+      else
+        ItemIndex := 3;
+    end;
     with AddSwitch(_lc[I_MENU_DEATHMATCH_KEYS]) do
     begin
       Name := 'swDeathmatchKeys';
@@ -2412,6 +2454,22 @@ begin
       else
         ItemIndex := 1;
     end;
+    with AddSwitch(_lc[I_MENU_TEAM_HIT]) do
+    begin
+      Name := 'swTeamHit';
+      AddItem(_lc[I_MENU_TEAM_HIT_BOTH]);
+      AddItem(_lc[I_MENU_TEAM_HIT_TRACE]);
+      AddItem(_lc[I_MENU_TEAM_HIT_PROJECTILE]);
+      AddItem(_lc[I_MENU_TEAM_HIT_NOTHING]);
+      if (gsGameFlags and (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE)) = (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE) then
+        ItemIndex := 0
+      else if LongBool(gsGameFlags and GAME_OPTION_TEAMHITTRACE) then
+        ItemIndex := 1
+      else if LongBool(gsGameFlags and GAME_OPTION_TEAMHITPROJECTILE) then
+        ItemIndex := 2
+      else
+        ItemIndex := 3;
+    end;
     with AddSwitch(_lc[I_MENU_DEATHMATCH_KEYS]) do
     begin
       Name := 'swDeathmatchKeys';
@@ -3295,6 +3353,15 @@ begin
       AddItem(_lc[I_MENU_NO]);
       ItemIndex := 1;
     end;
+    with AddSwitch(_lc[I_MENU_TEAM_HIT]) do
+    begin
+      Name := 'swTeamHit';
+      AddItem(_lc[I_MENU_TEAM_HIT_BOTH]);
+      AddItem(_lc[I_MENU_TEAM_HIT_TRACE]);
+      AddItem(_lc[I_MENU_TEAM_HIT_PROJECTILE]);
+      AddItem(_lc[I_MENU_TEAM_HIT_NOTHING]);
+      ItemIndex := 0
+    end;
     with AddSwitch(_lc[I_MENU_DEATHMATCH_KEYS]) do
     begin
       Name := 'swDeathmatchKeys';