diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas
index c56d6e821bd6d7224387c6ae68a434b4b0b2cce9..bd213148c20374d88faf9ef963fd0605124eac46 100644 (file)
--- a/src/game/g_menu.pas
+++ b/src/game/g_menu.pas
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;
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
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;
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
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
ItemIndex := 1;
TempResScale := Round(r_pixel_scale - 1);
- TGUIScroll(menu.GetControl('scResFactor')).Value := TempResScale;
+ with TGUISwitch(menu.GetControl('swResFactor')) do
+ ItemIndex := Min(TempResScale, gRC_Width div 640 - 1);
end;
procedure ProcApplyVideoOptions();
begin
SWidth := gWinSizeX;
SHeight := gWinSizeY;
+ TempResScale := Min(TempResScale, SWidth div 640 - 1);
end;
Fullscreen := TGUISwitch(menu.GetControl('swFullScreen')).ItemIndex = 0;
ScaleChanged := False;
- if TGUIScroll(menu.GetControl('scResFactor')).Value <> TempResScale then
+ if TGUISwitch(menu.GetControl('swResFactor')).ItemIndex <> TempResScale then
begin
- TempResScale := TGUIScroll(menu.GetControl('scResFactor')).Value;
+ TempResScale := Min(TGUISwitch(menu.GetControl('swResFactor')).ItemIndex, SWidth div 640 - 1);
r_pixel_scale := TempResScale + 1;
ScaleChanged := True;
end;
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';
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';
AddItem(_lc[I_MENU_YES]);
AddItem(_lc[I_MENU_NO]);
end;
- with AddScroll(_lc[I_MENU_GAME_SCALE_FACTOR]) do
+ with AddSwitch(_lc[I_MENU_GAME_SCALE_FACTOR]) do
begin
- Name := 'scResFactor';
- Max := 10;
+ Name := 'swResFactor';
+ AddItem('1x');
+ for i := 2 to gRC_Width div 640 do
+ AddItem(IntToStr(i) + 'x');
end;
AddSpace();
AddButton(@ProcApplyVideoOptions, _lc[I_MENU_RESOLUTION_APPLY]);
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';