X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_menu.pas;h=8fe06a3f8e5d8ac952ef6ae2a80bc8cb638d844a;hb=HEAD;hp=f2e3d86e2b388abb6774daf5b096d617c49ae4f4;hpb=67a116aa058206f0a250bd86f32fd49e06be6fca;p=d2df-sdl.git diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas index f2e3d86..8fe06a3 100644 --- a/src/game/g_menu.pas +++ b/src/game/g_menu.pas @@ -177,11 +177,11 @@ begin with menu do begin g_Console_BindKey(g_Console_FindBind(1, 'screenshot'), ''); - g_Console_BindKey(g_Console_FindBind(1, '+p1_scores', '-p1_scores'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+scores', '-scores'), ''); g_Console_BindKey(g_Console_FindBind(1, 'togglechat'), ''); g_Console_BindKey(g_Console_FindBind(1, 'toggleteamchat'), ''); g_Console_BindKey(TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_SCREENSHOT])).Key, 'screenshot'); - g_Console_BindKey(TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_STAT])).Key, '+p1_scores', '-p1_scores'); + g_Console_BindKey(TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_STAT])).Key, '+scores', '-scores'); g_Console_BindKey(TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_CHAT])).Key, 'togglechat'); g_Console_BindKey(TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_TEAMCHAT])).Key, 'toggleteamchat'); end; @@ -331,34 +331,29 @@ begin end; menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1Menu').GetControl('mOptionsPlayersP1Menu')); - gPlayer1Settings.Name := b_Text_Unformat(TGUIEdit(menu.GetControl('edP1Name')).Text); gPlayer1Settings.Team := IfThen(TGUISwitch(menu.GetControl('swP1Team')).ItemIndex = 0, TEAM_RED, TEAM_BLUE); - with TGUIModelView(g_GUI_GetWindow('OptionsPlayersP1Menu').GetControl('mvP1Model')) do begin gPlayer1Settings.Model := Model.Name; gPlayer1Settings.Color := Model.Color; end; - menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1Menu').GetControl('mOptionsPlayersP1Menu')); - - gPlayer1Settings.Name := b_Text_Unformat(TGUIEdit(menu.GetControl('edP1Name')).Text); - gPlayer1Settings.Team := IfThen(TGUISwitch(menu.GetControl('swP1Team')).ItemIndex = 0, + menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2Menu').GetControl('mOptionsPlayersP2Menu')); + gPlayer2Settings.Name := b_Text_Unformat(TGUIEdit(menu.GetControl('edP2Name')).Text); + gPlayer2Settings.Team := IfThen(TGUISwitch(menu.GetControl('swP2Team')).ItemIndex = 0, TEAM_RED, TEAM_BLUE); - - with TGUIModelView(g_GUI_GetWindow('OptionsPlayersP1Menu').GetControl('mvP1Model')) do + with TGUIModelView(g_GUI_GetWindow('OptionsPlayersP2Menu').GetControl('mvP2Model')) do begin - gPlayer1Settings.Model := Model.Name; - gPlayer1Settings.Color := Model.Color; + gPlayer2Settings.Model := Model.Name; + gPlayer2Settings.Color := Model.Color; end; menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1WeaponMenu').GetControl('mOptionsPlayersP1WeaponMenu')); gPlayer1Settings.WeaponSwitch := TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex; gPlayer1Settings.SwitchToEmpty := TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex; - gPlayer1Settings.SkipFist := TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex; - + gPlayer1Settings.SkipIronFist := TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex; menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP1WeaponMenu').GetControl('mOptionsPreferencesP1WeaponMenu')); with menu do begin @@ -371,7 +366,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2WeaponMenu').GetControl('mOptionsPlayersP2WeaponMenu')); gPlayer2Settings.WeaponSwitch := TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex; gPlayer2Settings.SwitchToEmpty := TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex; - gPlayer2Settings.SkipFist := TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex; + gPlayer2Settings.SkipIronFist := TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex; menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP2WeaponMenu').GetControl('mOptionsPreferencesP2WeaponMenu')); with menu do begin @@ -381,17 +376,6 @@ begin end; end; - menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2Menu').GetControl('mOptionsPlayersP2Menu')); - - gPlayer2Settings.Name := b_Text_Unformat(TGUIEdit(menu.GetControl('edP2Name')).Text); - gPlayer2Settings.Team := IfThen(TGUISwitch(menu.GetControl('swP2Team')).ItemIndex = 0, - TEAM_RED, TEAM_BLUE); - with TGUIModelView(g_GUI_GetWindow('OptionsPlayersP2Menu').GetControl('mvP2Model')) do - begin - gPlayer2Settings.Model := Model.Name; - gPlayer2Settings.Color := Model.Color; - end; - if gPlayer1Settings.Name = '' then gPlayer1Settings.Name := GenPlayerName(1); if gPlayer2Settings.Name = '' then gPlayer2Settings.Name := GenPlayerName(2); @@ -409,7 +393,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; - gPlayer1.SkipFist := gPlayer1Settings.SkipFist; + gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist; if g_Game_IsNet then MH_SEND_PlayerSettings(gPlayer1.UID); end; @@ -417,7 +401,7 @@ begin begin gPlayer2.SetModel(gPlayer2Settings.Model); gPlayer2.Name := gPlayer2Settings.Name; - if (gGameSettings.GameMode <> GM_TDM) and (gGameSettings.GameMode <> GM_CTF) then + if not (gGameSettings.GameMode in [GM_TDM, GM_CTF]) then gPlayer2.SetColor(gPlayer2Settings.Color) else if gPlayer2.Team <> gPlayer2Settings.Team then @@ -425,7 +409,8 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; - gPlayer2.SkipFist := gPlayer2Settings.SkipFist; + gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist; + //if g_Game_IsNet then MH_SEND_PlayerSettings(gPlayer2.UID); end; end; @@ -591,7 +576,7 @@ begin with menu do begin TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_SCREENSHOT])).Key := g_Console_FindBind(1, 'screenshot'); - TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_STAT])).Key := g_Console_FindBind(1, '+p1_scores', '-p1_scores'); + TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_STAT])).Key := g_Console_FindBind(1, '+scores', '-scores'); TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_CHAT])).Key := g_Console_FindBind(1, 'togglechat'); TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_TEAMCHAT])).Key := g_Console_FindBind(1, 'toggleteamchat'); end; @@ -661,7 +646,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1WeaponMenu').GetControl('mOptionsPlayersP1WeaponMenu')); TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex := gPlayer1Settings.WeaponSwitch; TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex := gPlayer1Settings.SwitchToEmpty; - TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex := gPlayer1Settings.SkipFist; + TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex := gPlayer1Settings.SkipIronFist; menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP1WeaponMenu').GetControl('mOptionsPreferencesP1WeaponMenu')); for i := WP_FIRST to WP_LAST+1 do begin @@ -672,7 +657,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2WeaponMenu').GetControl('mOptionsPlayersP2WeaponMenu')); TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex := gPlayer2Settings.WeaponSwitch; TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex := gPlayer2Settings.SwitchToEmpty; - TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex := gPlayer2Settings.SkipFist; + TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex := gPlayer2Settings.SkipIronFist; menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP2WeaponMenu').GetControl('mOptionsPreferencesP2WeaponMenu')); for i := WP_FIRST to WP_LAST+1 do begin @@ -748,47 +733,75 @@ begin Result := TGUISwitch(GetControl('swGameMode')).ItemIndex+1; gsGameMode := TGUISwitch(GetControl('swGameMode')).GetText; gsTimeLimit := StrToIntDef(TGUIEdit(GetControl('edTimeLimit')).Text, 0); - gsGoalLimit := StrToIntDef(TGUIEdit(GetControl('edGoalLimit')).Text, 0); + gsScoreLimit := StrToIntDef(TGUIEdit(GetControl('edScoreLimit')).Text, 0); gsMaxLives := StrToIntDef(TGUIEdit(GetControl('edMaxLives')).Text, 0); - gsItemRespawnTime := StrToIntDef(TGUIEdit(GetControl('edItemRespawnTime')).Text, 0); gsPlayers := TGUISwitch(GetControl('swPlayers')).ItemIndex; gsMap := Map; - gsGameFlags := 0; + gsGameFlags := []; if TGUISwitch(GetControl('swTeamDamage')).ItemIndex = 0 then - gsGameFlags := gsGameFlags or GAME_OPTION_TEAMDAMAGE; + gsGameFlags += [TGameOption.TEAM_DAMAGE]; + if TGUISwitch(GetControl('swTeamAbsorbDamage')).ItemIndex = 0 then + gsGameFlags += [TGameOption.TEAM_ABSORB_DAMAGE]; if TGUISwitch(GetControl('swDeathmatchKeys')).ItemIndex = 0 then - gsGameFlags := gsGameFlags or GAME_OPTION_DMKEYS; + gsGameFlags += [TGameOption.DM_KEYS]; if TGUISwitch(GetControl('swEnableExits')).ItemIndex = 0 then - gsGameFlags := gsGameFlags or GAME_OPTION_ALLOWEXIT; + gsGameFlags += [TGameOption.ALLOW_EXIT]; if TGUISwitch(GetControl('swWeaponStay')).ItemIndex = 0 then - gsGameFlags := gsGameFlags or GAME_OPTION_WEAPONSTAY; + gsGameFlags += [TGameOption.WEAPONS_STAY]; if TGUISwitch(GetControl('swMonsters')).ItemIndex = 0 then - gsGameFlags := gsGameFlags or GAME_OPTION_MONSTERS; + gsGameFlags += [TGameOption.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; + 1: gsGameFlags += [TGameOption.TEAM_HIT_TRACE]; + 2: gsGameFlags += [TGameOption.TEAM_HIT_PROJECTILE]; + 0: gsGameFlags += [TGameOption.TEAM_HIT_TRACE, TGameOption.TEAM_HIT_PROJECTILE]; 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; - else gsGameFlags := gsGameFlags or GAME_OPTION_BOTVSPLAYER; + 1: gsGameFlags += [TGameOption.BOTS_VS_MONSTERS]; + 2: gsGameFlags += [TGameOption.BOTS_VS_PLAYERS, TGameOption.BOTS_VS_MONSTERS]; + else gsGameFlags += [TGameOption.BOTS_VS_PLAYERS]; end; case TGUISwitch(GetControl('swFlagDrop')).ItemIndex of - 0: gsGameFlags := gsGameFlags or GAME_OPTION_ALLOWDROPFLAG or GAME_OPTION_THROWFLAG; - 1: gsGameFlags := gsGameFlags or GAME_OPTION_ALLOWDROPFLAG; - else gsGameFlags := gsGameFlags and not (GAME_OPTION_ALLOWDROPFLAG or GAME_OPTION_THROWFLAG); + 0: gsGameFlags += [TGameOption.ALLOW_DROP_FLAG, TGameOption.THROW_FLAG]; + 1: gsGameFlags += [TGameOption.ALLOW_DROP_FLAG]; + else gsGameFlags -= [TGameOption.ALLOW_DROP_FLAG, TGameOption.THROW_FLAG]; end; // TODO: get this crap out of here - gGameSettings.ItemRespawnTime := gsItemRespawnTime; gGameSettings.WarmupTime := gsWarmupTime; gGameSettings.SpawnInvul := gsSpawnInvul; end; + + // HACK: We keep the variables for the items in a different menu + with TGUIMenu(g_GUI_GetWindow('ItemsRespawnMenu').GetControl('mItemsRespawnMenu')) do + begin + gsItemRespawnTime := StrToIntDef(TGUIEdit(GetControl('edItemRespawnTime')).Text, 0); + gsItemRespawnRandom := StrToIntDef(TGUIEdit(GetControl('edItemRespawnRandom')).Text, 0); + gsPowerupRespawnTime := StrToIntDef(TGUIEdit(GetControl('edPowerupRespawnTime')).Text, 0); + gsPowerupRespawnRandom := StrToIntDef(TGUIEdit(GetControl('edPowerupRespawnRandom')).Text, 0); + + if TGUISwitch(GetControl('swPowerupRandom')).ItemIndex = 0 then + gsGameFlags += [TGameOption.POWERUP_RANDOM]; + + case TGUISwitch(GetControl('swItemsRandom')).ItemIndex of + 1: gsGameFlags += [TGameOption.ITEM_LIFE_RANDOM]; + 2: gsGameFlags += [TGameOption.ITEM_AMMO_RANDOM]; + 3: gsGameFlags += [TGameOption.ITEM_WEAPON_RANDOM]; + 4: gsGameFlags += [TGameOption.ITEM_LIFE_RANDOM, TGameOption.ITEM_AMMO_RANDOM]; + 5: gsGameFlags += [TGameOption.ITEM_LIFE_RANDOM, TGameOption.ITEM_WEAPON_RANDOM]; + 6: gsGameFlags += [TGameOption.ITEM_AMMO_RANDOM, TGameOption.ITEM_WEAPON_RANDOM]; + 0: gsGameFlags += [TGameOption.ITEM_ALL_RANDOM]; + end; + + // TODO: get this crap out of here + gGameSettings.ItemRespawnTime := gsItemRespawnTime; + gGameSettings.ItemRespawnRandom := gsItemRespawnRandom; + gGameSettings.PowerupRespawnTime := gsPowerupRespawnTime; + gGameSettings.PowerupRespawnRandom := gsPowerupRespawnRandom; + end; end; procedure ProcStartCustomGame(); @@ -799,7 +812,7 @@ begin if GameMode = GM_NONE then Exit; g_Console_WriteGameConfig; - g_Game_StartCustom(gsMap, GameMode, gsTimeLimit, gsGoalLimit, + g_Game_StartCustom(gsMap, GameMode, gsTimeLimit, gsScoreLimit, gsMaxLives, gsGameFlags, gsPlayers); end; @@ -822,7 +835,7 @@ begin end; g_Console_WriteGameConfig; - g_Game_StartServer(gsMap, GameMode, gsTimeLimit, gsGoalLimit, gsMaxLives, + g_Game_StartServer(gsMap, GameMode, gsTimeLimit, gsScoreLimit, gsMaxLives, gsGameFlags, gsPlayers, 0, NetPort); end; @@ -1747,6 +1760,15 @@ begin end; end; +procedure ProcItemsRespawnMenu(); +var + menu: TGUIMenu; +begin + menu := TGUIMenu(g_GUI_GetWindow('ItemsRespawnMenu').GetControl('mItemsRespawnMenu')); + + g_GUI_ShowWindow('ItemsRespawnMenu'); +end; + procedure ReadGameSettings(); var menu: TGUIMenu; @@ -1756,96 +1778,92 @@ begin with gGameSettings do begin with TGUISwitch(menu.GetControl('swTeamDamage')) do - if LongBool(Options and GAME_OPTION_TEAMDAMAGE) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.TEAM_DAMAGE in Options + then 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 + if [TGameOption.TEAM_HIT_TRACE, TGameOption.TEAM_HIT_PROJECTILE] <= Options then ItemIndex := 0 - else if LongBool(Options and GAME_OPTION_TEAMHITTRACE) then + else if TGameOption.TEAM_HIT_TRACE in Options then ItemIndex := 1 - else if LongBool(Options and GAME_OPTION_TEAMHITPROJECTILE) then + else if TGameOption.TEAM_HIT_PROJECTILE in Options then ItemIndex := 2 else ItemIndex := 3; with TGUISwitch(menu.GetControl('swDeathmatchKeys')) do - if LongBool(Options and GAME_OPTION_DMKEYS) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.DM_KEYS in Options + then ItemIndex := 0 + else ItemIndex := 1; with TGUISwitch(menu.GetControl('swFlagDrop')) do - if LongBool(Options and GAME_OPTION_ALLOWDROPFLAG) and LongBool(Options and GAME_OPTION_THROWFLAG) then + if [TGameOption.ALLOW_DROP_FLAG, TGameOption.THROW_FLAG] <= Options then ItemIndex := 0 - else if LongBool(Options and GAME_OPTION_ALLOWDROPFLAG) then + else if TGameOption.ALLOW_DROP_FLAG in Options then ItemIndex := 1 else ItemIndex := 2; TGUIEdit(menu.GetControl('edTimeLimit')).Text := IntToStr(TimeLimit); - TGUIEdit(menu.GetControl('edGoalLimit')).Text := IntToStr(GoalLimit); + TGUIEdit(menu.GetControl('edScoreLimit')).Text := IntToStr(ScoreLimit); TGUIEdit(menu.GetControl('edMaxLives')).Text := IntToStr(MaxLives); with TGUISwitch(menu.GetControl('swBotsVS')) do - if LongBool(Options and GAME_OPTION_BOTVSPLAYER) and - LongBool(Options and GAME_OPTION_BOTVSMONSTER) then + if [TGameOption.BOTS_VS_PLAYERS, TGameOption.BOTS_VS_MONSTERS] <= Options then ItemIndex := 2 + else if TGameOption.BOTS_VS_MONSTERS in Options then + ItemIndex := 1 else - if LongBool(Options and GAME_OPTION_BOTVSMONSTER) then - ItemIndex := 1 - else - ItemIndex := 0; + 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('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; - TGUILabel(menu.GetControlsText('swDeathmatchKeys')).Color := MENU_ITEMSTEXT_COLOR; - end - else - begin - TGUISwitch(menu.GetControl('swDeathmatchKeys')).Enabled := False; - TGUILabel(menu.GetControlsText('swDeathmatchKeys')).Color := MENU_UNACTIVEITEMS_COLOR; - end; - TGUIEdit(menu.GetControl('edTimeLimit')).Enabled := True; - TGUILabel(menu.GetControlsText('edTimeLimit')).Color := MENU_ITEMSTEXT_COLOR; - TGUIEdit(menu.GetControl('edGoalLimit')).Enabled := True; - TGUILabel(menu.GetControlsText('edGoalLimit')).Color := MENU_ITEMSTEXT_COLOR; - TGUIEdit(menu.GetControl('edMaxLives')).Enabled := True; - TGUILabel(menu.GetControlsText('edMaxLives')).Color := MENU_ITEMSTEXT_COLOR; - TGUISwitch(menu.GetControl('swBotsVS')).Enabled := True; - TGUISwitch(menu.GetControl('swFlagDrop')).Enabled := True; + TGUISwitch(menu.GetControl('swDeathmatchKeys')).Enabled := True; + TGUILabel(menu.GetControlsText('swDeathmatchKeys')).Color := MENU_ITEMSTEXT_COLOR; end - else + 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 - begin - Enabled := False; - Text := ''; - end; - TGUILabel(menu.GetControlsText('edTimeLimit')).Color := MENU_UNACTIVEITEMS_COLOR; - with TGUIEdit(menu.GetControl('edGoalLimit')) do - begin - Enabled := False; - Text := ''; - end; - TGUILabel(menu.GetControlsText('edGoalLimit')).Color := MENU_UNACTIVEITEMS_COLOR; - with TGUIEdit(menu.GetControl('edMaxLives')) do - begin - Enabled := False; - Text := ''; - end; - TGUILabel(menu.GetControlsText('edMaxLives')).Color := MENU_UNACTIVEITEMS_COLOR; - TGUISwitch(menu.GetControl('swBotsVS')).Enabled := True; - TGUISwitch(menu.GetControl('swFlagDrop')).Enabled := False; end; + TGUIEdit(menu.GetControl('edTimeLimit')).Enabled := True; + TGUILabel(menu.GetControlsText('edTimeLimit')).Color := MENU_ITEMSTEXT_COLOR; + TGUIEdit(menu.GetControl('edScoreLimit')).Enabled := True; + TGUILabel(menu.GetControlsText('edScoreLimit')).Color := MENU_ITEMSTEXT_COLOR; + TGUIEdit(menu.GetControl('edMaxLives')).Enabled := True; + TGUILabel(menu.GetControlsText('edMaxLives')).Color := MENU_ITEMSTEXT_COLOR; + TGUISwitch(menu.GetControl('swBotsVS')).Enabled := True; + TGUISwitch(menu.GetControl('swFlagDrop')).Enabled := True; + end + 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 + begin + Enabled := False; + Text := ''; + end; + TGUILabel(menu.GetControlsText('edTimeLimit')).Color := MENU_UNACTIVEITEMS_COLOR; + with TGUIEdit(menu.GetControl('edScoreLimit')) do + begin + Enabled := False; + Text := ''; + end; + TGUILabel(menu.GetControlsText('edScoreLimit')).Color := MENU_UNACTIVEITEMS_COLOR; + with TGUIEdit(menu.GetControl('edMaxLives')) do + begin + Enabled := False; + Text := ''; + end; + TGUILabel(menu.GetControlsText('edMaxLives')).Color := MENU_UNACTIVEITEMS_COLOR; + TGUISwitch(menu.GetControl('swBotsVS')).Enabled := True; + TGUISwitch(menu.GetControl('swFlagDrop')).Enabled := False; + end; end; end; @@ -1863,28 +1881,26 @@ begin begin if TGUISwitch(menu.GetControl('swTeamDamage')).Enabled then begin - if TGUISwitch(menu.GetControl('swTeamDamage')).ItemIndex = 0 then - Options := Options or GAME_OPTION_TEAMDAMAGE - else - Options := Options and (not GAME_OPTION_TEAMDAMAGE); + if TGUISwitch(menu.GetControl('swTeamDamage')).ItemIndex = 0 + then Options += [TGameOption.TEAM_DAMAGE] + else Options -= [TGameOption.TEAM_DAMAGE]; end; if TGUISwitch(menu.GetControl('swTeamHit')).Enabled then begin - Options := Options and not (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE); + Options -= [TGameOption.TEAM_HIT_TRACE, TGameOption.TEAM_HIT_PROJECTILE]; 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; + 1: Options += [TGameOption.TEAM_HIT_TRACE]; + 2: Options += [TGameOption.TEAM_HIT_PROJECTILE]; + 0: Options += [TGameOption.TEAM_HIT_TRACE, TGameOption.TEAM_HIT_PROJECTILE]; end; end; if TGUISwitch(menu.GetControl('swDeathmatchKeys')).Enabled then begin - if TGUISwitch(menu.GetControl('swDeathmatchKeys')).ItemIndex = 0 then - Options := Options or GAME_OPTION_DMKEYS - else - Options := Options and (not GAME_OPTION_DMKEYS); + if TGUISwitch(menu.GetControl('swDeathmatchKeys')).ItemIndex = 0 + then Options += [TGameOption.DM_KEYS] + else Options -= [TGameOption.DM_KEYS]; end; if TGUIEdit(menu.GetControl('edTimeLimit')).Enabled then @@ -1901,12 +1917,12 @@ begin end; end; - if TGUIEdit(menu.GetControl('edGoalLimit')).Enabled then + if TGUIEdit(menu.GetControl('edScoreLimit')).Enabled then begin - n := StrToIntDef(TGUIEdit(menu.GetControl('edGoalLimit')).Text, GoalLimit); + n := StrToIntDef(TGUIEdit(menu.GetControl('edScoreLimit')).Text, ScoreLimit); if n = 0 then - GoalLimit := 0 + ScoreLimit := 0 else begin b := 0; @@ -1919,15 +1935,15 @@ begin b := stat[a].Frags; end else // CTF - b := Max(gTeamStat[TEAM_RED].Goals, gTeamStat[TEAM_BLUE].Goals); + b := Max(gTeamStat[TEAM_RED].Score, gTeamStat[TEAM_BLUE].Score); - GoalLimit := Max(n, b); + ScoreLimit := Max(n, b); end; end; if TGUIEdit(menu.GetControl('edMaxLives')).Enabled then begin - n := StrToIntDef(TGUIEdit(menu.GetControl('edMaxLives')).Text, GoalLimit); + n := StrToIntDef(TGUIEdit(menu.GetControl('edMaxLives')).Text, MaxLives); if n < 0 then n := 0; if n > 255 then n := 255; if n = 0 then @@ -1948,37 +1964,32 @@ begin if TGUISwitch(menu.GetControl('swBotsVS')).Enabled then begin case TGUISwitch(menu.GetControl('swBotsVS')).ItemIndex of - 1: - begin - Options := Options and (not GAME_OPTION_BOTVSPLAYER); - Options := Options or GAME_OPTION_BOTVSMONSTER; - end; - 2: - begin - Options := Options or GAME_OPTION_BOTVSPLAYER; - Options := Options or GAME_OPTION_BOTVSMONSTER; - end; + 1: begin + Options -= [TGameOption.BOTS_VS_PLAYERS]; + Options += [TGameOption.BOTS_VS_MONSTERS]; + end; + + 2: Options += [TGameOption.BOTS_VS_PLAYERS, TGameOption.BOTS_VS_MONSTERS]; + else - begin - Options := Options or GAME_OPTION_BOTVSPLAYER; - Options := Options and (not GAME_OPTION_BOTVSMONSTER); - end; + Options -= [TGameOption.BOTS_VS_MONSTERS]; + Options += [TGameOption.BOTS_VS_PLAYERS]; end; end; if TGUISwitch(menu.GetControl('swFlagDrop')).Enabled then begin case TGUISwitch(menu.GetControl('swFlagDrop')).ItemIndex of - 0: Options := Options or GAME_OPTION_ALLOWDROPFLAG or GAME_OPTION_THROWFLAG; - 1: Options := Options or GAME_OPTION_ALLOWDROPFLAG; - else Options := Options and not (GAME_OPTION_ALLOWDROPFLAG or GAME_OPTION_THROWFLAG); + 0: Options += [TGameOption.ALLOW_DROP_FLAG, TGameOption.THROW_FLAG]; + 1: Options += [TGameOption.ALLOW_DROP_FLAG]; + else Options -= [TGameOption.ALLOW_DROP_FLAG, TGameOption.THROW_FLAG]; end; end; // don't forget to latch this shit gsGameFlags := Options; gsMaxLives := MaxLives; - gsGoalLimit := GoalLimit; + gsScoreLimit := ScoreLimit; gsTimeLimit := TimeLimit; end; @@ -2003,7 +2014,7 @@ begin if list <> nil then begin Items := list; - ItemIndex := Length(list) + ItemIndex := -1; (* nothing selected *) end else begin @@ -2019,7 +2030,7 @@ begin TempResScale := Round(r_pixel_scale - 1); with TGUISwitch(menu.GetControl('swResFactor')) do - ItemIndex := Min(TempResScale, gRC_Width div 640 - 1); + ItemIndex := Max(Min(TempResScale, gRC_Width div 640 - 1), 0); end; procedure ProcApplyVideoOptions(); @@ -2313,14 +2324,14 @@ begin if gsTimeLimit > 0 then Text := IntToStr(gsTimeLimit); end; - with AddEdit(_lc[I_MENU_GOAL_LIMIT]) do + with AddEdit(_lc[I_MENU_SCORE_LIMIT]) do begin - Name := 'edGoalLimit'; + Name := 'edScoreLimit'; OnlyDigits := True; Width := 4; MaxLength := 5; - if gsGoalLimit > 0 then - Text := IntToStr(gsGoalLimit); + if gsScoreLimit > 0 then + Text := IntToStr(gsScoreLimit); end; with AddEdit(_lc[I_MENU_MAX_LIVES]) do begin @@ -2331,15 +2342,13 @@ begin if gsMaxLives > 0 then Text := IntToStr(gsMaxLives); end; - with AddEdit(_lc[I_MENU_ITEM_RESPAWN_TIME]) do + with AddLabel(_lc[I_MENU_SELECT_ITEM_RESPAWN]) do begin - Name := 'edItemRespawnTime'; - OnlyDigits := True; - Width := 4; - MaxLength := 5; - if gsItemRespawnTime > 0 then - Text := IntToStr(gsItemRespawnTime); + Name := 'lbItemsRespawn'; + FixedLength := 16; + OnClick := @ProcItemsRespawnMenu; end; + AddSpace(); with AddSwitch(_lc[I_MENU_PLAYERS]) do begin Name := 'swPlayers'; @@ -2353,10 +2362,9 @@ begin Name := 'swTeamDamage'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_TEAMDAMAGE) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.TEAM_DAMAGE in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_TEAM_HIT]) do begin @@ -2365,54 +2373,59 @@ begin 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 + if [TGameOption.TEAM_HIT_TRACE, TGameOption.TEAM_HIT_PROJECTILE] <= gsGameFlags then ItemIndex := 0 - else if LongBool(gsGameFlags and GAME_OPTION_TEAMHITTRACE) then + else if TGameOption.TEAM_HIT_TRACE in gsGameFlags then ItemIndex := 1 - else if LongBool(gsGameFlags and GAME_OPTION_TEAMHITPROJECTILE) then + else if TGameOption.TEAM_HIT_PROJECTILE in gsGameFlags then ItemIndex := 2 else ItemIndex := 3; end; + with AddSwitch(_lc[I_MENU_ENABLE_TEAM_DAMAGE_ABSOBR]) do + begin + Name := 'swTeamAbsorbDamage'; + AddItem(_lc[I_MENU_YES]); + AddItem(_lc[I_MENU_NO]); + if TGameOption.TEAM_ABSORB_DAMAGE in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; + end; with AddSwitch(_lc[I_MENU_DEATHMATCH_KEYS]) do begin Name := 'swDeathmatchKeys'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_DMKEYS) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.DM_KEYS in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_ENABLE_EXITS]) do begin Name := 'swEnableExits'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_ALLOWEXIT) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.ALLOW_EXIT in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_WEAPONS_STAY]) do begin Name := 'swWeaponStay'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_WEAPONSTAY) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.WEAPONS_STAY in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_ENABLE_MONSTERS]) do begin Name := 'swMonsters'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_MONSTERS) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.MONSTERS in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_BOTS_VS]) do begin @@ -2421,9 +2434,9 @@ begin AddItem(_lc[I_MENU_BOTS_VS_MONSTERS]); AddItem(_lc[I_MENU_BOTS_VS_ALL]); ItemIndex := 2; - if not LongBool(gsGameFlags and GAME_OPTION_BOTVSMONSTER) then + if not (TGameOption.BOTS_VS_MONSTERS in gsGameFlags) then ItemIndex := 0; - if not LongBool(gsGameFlags and GAME_OPTION_BOTVSPLAYER) then + if not (TGameOption.BOTS_VS_PLAYERS in gsGameFlags) then ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_FLAG_DROP]) do @@ -2432,9 +2445,9 @@ begin AddItem(_lc[I_MENU_FLAG_THROW]); AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if (gsGameFlags and (GAME_OPTION_ALLOWDROPFLAG or GAME_OPTION_THROWFLAG)) = (GAME_OPTION_ALLOWDROPFLAG or GAME_OPTION_THROWFLAG) then + if [TGameOption.ALLOW_DROP_FLAG, TGameOption.THROW_FLAG] <= gsGameFlags then ItemIndex := 0 - else if LongBool(gsGameFlags and GAME_OPTION_ALLOWDROPFLAG) then + else if TGameOption.ALLOW_DROP_FLAG in gsGameFlags then ItemIndex := 1 else ItemIndex := 2; @@ -2458,7 +2471,7 @@ begin with AddEdit(_lc[I_NET_ADDRESS]) do begin Name := 'edIP'; - OnlyDigits :=False; + OnlyDigits := False; Width := 12; MaxLength := 64; Text := 'localhost'; @@ -2561,14 +2574,14 @@ begin if gsTimeLimit > 0 then Text := IntToStr(gsTimeLimit); end; - with AddEdit(_lc[I_MENU_GOAL_LIMIT]) do + with AddEdit(_lc[I_MENU_SCORE_LIMIT]) do begin - Name := 'edGoalLimit'; + Name := 'edScoreLimit'; OnlyDigits := True; Width := 4; MaxLength := 5; - if gsGoalLimit > 0 then - Text := IntToStr(gsGoalLimit); + if gsScoreLimit > 0 then + Text := IntToStr(gsScoreLimit); end; with AddEdit(_lc[I_MENU_MAX_LIVES]) do begin @@ -2579,15 +2592,13 @@ begin if gsMaxLives > 0 then Text := IntToStr(gsMaxLives); end; - with AddEdit(_lc[I_MENU_ITEM_RESPAWN_TIME]) do + with AddLabel(_lc[I_MENU_SELECT_ITEM_RESPAWN]) do begin - Name := 'edItemRespawnTime'; - OnlyDigits := True; - Width := 4; - MaxLength := 5; - if gsItemRespawnTime > 0 then - Text := IntToStr(gsItemRespawnTime); + Name := 'lbItemsRespawn'; + FixedLength := 16; + OnClick := @ProcItemsRespawnMenu; end; + AddSpace(); with AddSwitch(_lc[I_MENU_PLAYERS]) do begin Name := 'swPlayers'; @@ -2601,10 +2612,9 @@ begin Name := 'swTeamDamage'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_TEAMDAMAGE) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.TEAM_DAMAGE in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_TEAM_HIT]) do begin @@ -2613,54 +2623,59 @@ begin 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 + if [TGameOption.TEAM_HIT_TRACE, TGameOption.TEAM_HIT_PROJECTILE] <= gsGameFlags then ItemIndex := 0 - else if LongBool(gsGameFlags and GAME_OPTION_TEAMHITTRACE) then + else if TGameOption.TEAM_HIT_TRACE in gsGameFlags then ItemIndex := 1 - else if LongBool(gsGameFlags and GAME_OPTION_TEAMHITPROJECTILE) then + else if TGameOption.TEAM_HIT_PROJECTILE in gsGameFlags then ItemIndex := 2 else ItemIndex := 3; end; + with AddSwitch(_lc[I_MENU_ENABLE_TEAM_DAMAGE_ABSOBR]) do + begin + Name := 'swTeamAbsorbDamage'; + AddItem(_lc[I_MENU_YES]); + AddItem(_lc[I_MENU_NO]); + if TGameOption.TEAM_ABSORB_DAMAGE in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; + end; with AddSwitch(_lc[I_MENU_DEATHMATCH_KEYS]) do begin Name := 'swDeathmatchKeys'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_DMKEYS) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.DM_KEYS in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_ENABLE_EXITS]) do begin Name := 'swEnableExits'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_ALLOWEXIT) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.ALLOW_EXIT in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_WEAPONS_STAY]) do begin Name := 'swWeaponStay'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_WEAPONSTAY) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.WEAPONS_STAY in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_ENABLE_MONSTERS]) do begin Name := 'swMonsters'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_MONSTERS) then - ItemIndex := 0 - else - ItemIndex := 1; + if TGameOption.MONSTERS in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_BOTS_VS]) do begin @@ -2669,9 +2684,9 @@ begin AddItem(_lc[I_MENU_BOTS_VS_MONSTERS]); AddItem(_lc[I_MENU_BOTS_VS_ALL]); ItemIndex := 2; - if not LongBool(gsGameFlags and GAME_OPTION_BOTVSMONSTER) then + if not (TGameOption.BOTS_VS_MONSTERS in gsGameFlags) then ItemIndex := 0; - if not LongBool(gsGameFlags and GAME_OPTION_BOTVSPLAYER) then + if not (TGameOption.BOTS_VS_PLAYERS in gsGameFlags) then ItemIndex := 1; end; with AddSwitch(_lc[I_MENU_FLAG_DROP]) do @@ -2680,9 +2695,9 @@ begin AddItem(_lc[I_MENU_FLAG_THROW]); AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if (gsGameFlags and (GAME_OPTION_ALLOWDROPFLAG or GAME_OPTION_THROWFLAG)) = (GAME_OPTION_ALLOWDROPFLAG or GAME_OPTION_THROWFLAG) then + if [TGameOption.ALLOW_DROP_FLAG, TGameOption.THROW_FLAG] <= gsGameFlags then ItemIndex := 0 - else if LongBool(gsGameFlags and GAME_OPTION_ALLOWDROPFLAG) then + else if TGameOption.ALLOW_DROP_FLAG in gsGameFlags then ItemIndex := 1 else ItemIndex := 2; @@ -2797,7 +2812,7 @@ begin FixedLength := 10; Enabled := False; end; - with AddMemo(_lc[I_MENU_MAP_DESCRIPTION], 12, 4) do + with AddMemo(_lc[I_MENU_MAP_DESCRIPTION], 20, 4) do begin Name := 'meMapDescription'; end; @@ -2826,6 +2841,92 @@ begin Menu.DefControl := 'mSelectMapMenu'; g_GUI_AddWindow(Menu); + Menu := TGUIWindow.Create('ItemsRespawnMenu'); + with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_ITEM_RESPAWN]))) do + begin + Name := 'mItemsRespawnMenu'; + + // Switches separate from the time entry fields + with AddSwitch(_lc[I_MENU_ENABLE_POWERUP_RANDOM]) do + begin + Name := 'swPowerupRandom'; + AddItem(_lc[I_MENU_YES]); + AddItem(_lc[I_MENU_NO]); + if TGameOption.POWERUP_RANDOM in gsGameFlags + then ItemIndex := 0 + else ItemIndex := 1; + end; + with AddSwitch(_lc[I_MENU_ENABLE_ITEM_RANDOM]) do + begin + Name := 'swItemsRandom'; + AddItem(_lc[I_MENU_ITEM_RANDOM_ALL]); + AddItem(_lc[I_MENU_ITEM_RANDOM_LIFE_ONLY]); + AddItem(_lc[I_MENU_ITEM_RANDOM_AMMO_ONLY]); + AddItem(_lc[I_MENU_ITEM_RANDOM_WEAPON_ONLY]); + AddItem(_lc[I_MENU_ITEM_RANDOM_LIFE_AMMO]); + AddItem(_lc[I_MENU_ITEM_RANDOM_LIFE_WEAPON]); + AddItem(_lc[I_MENU_ITEM_RANDOM_WEAPON_AMMO]); + AddItem(_lc[I_MENU_ITEM_RANDOM_NOTHING]); + if TGameOption.ITEM_ALL_RANDOM in gsGameFlags then + ItemIndex := 0 + else if TGameOption.ITEM_LIFE_RANDOM in gsGameFlags then + ItemIndex := 1 + else if TGameOption.ITEM_AMMO_RANDOM in gsGameFlags then + ItemIndex := 2 + else if TGameOption.ITEM_WEAPON_RANDOM in gsGameFlags then + ItemIndex := 3 + else if [TGameOption.ITEM_LIFE_RANDOM, TGameOption.ITEM_AMMO_RANDOM] <= gsGameFlags then + ItemIndex := 4 + else if [TGameOption.ITEM_LIFE_RANDOM, TGameOption.ITEM_WEAPON_RANDOM] <= gsGameFlags then + ItemIndex := 5 + else if [TGameOption.ITEM_AMMO_RANDOM, TGameOption.ITEM_WEAPON_RANDOM] <= gsGameFlags then + ItemIndex := 6 + else + ItemIndex := 7; + end; + AddSpace();// Items Respawn block + with AddEdit(_lc[I_MENU_ITEM_RESPAWN_TIME]) do + begin + Name := 'edItemRespawnTime'; + OnlyDigits := True; + Width := 4; + MaxLength := 5; + if gsItemRespawnTime > 0 then + Text := IntToStr(gsItemRespawnTime); + end; + with AddEdit(_lc[I_MENU_ITEM_RESPAWN_RANDOM]) do + begin + Name := 'edItemRespawnRandom'; + OnlyDigits := True; + Width := 4; + MaxLength := 5; + if gsItemRespawnTime > 0 then + Text := IntToStr(gsItemRespawnRandom); + end; + // Powerup Respawn block + with AddEdit(_lc[I_MENU_POWERUP_RESPAWN_TIME]) do + begin + Name := 'edPowerupRespawnTime'; + OnlyDigits := True; + Width := 4; + MaxLength := 5; + if gsPowerupRespawnTime > 0 then + Text := IntToStr(gsPowerupRespawnTime); + end; + with AddEdit(_lc[I_MENU_POWERUP_RESPAWN_RANDOM]) do + begin + Name := 'edPowerupRespawnRandom'; + OnlyDigits := True; + Width := 4; + MaxLength := 5; + if gsPowerupRespawnRandom > 0 then + Text := IntToStr(gsPowerupRespawnRandom); + end; + AddSpace(); + end; + Menu.DefControl := 'mItemsRespawnMenu'; + g_GUI_AddWindow(Menu); + Menu := TGUIWindow.Create('OptionsMenu'); with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_OPTIONS]))) do begin @@ -3294,11 +3395,11 @@ begin AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); end; - with AddSwitch(_lc[I_MENU_KASTET_ALLOW]) do + with AddSwitch(_lc[I_MENU_IRONFIST_ALLOW]) do begin - Name := 'swWeaponAllowFist'; - AddItem(_lc[I_MENU_KASTET_ALLOW_ALWAYS]); - AddItem(_lc[I_MENU_KASTET_ALLOW_BERSERK]); + Name := 'swWeaponAllowIronFist'; + AddItem(_lc[I_MENU_IRONFIST_ALLOW_ALWAYS]); + AddItem(_lc[I_MENU_IRONFIST_ALLOW_BERSERK]); end; AddButton(@ProcOptionsPlayerP1WeaponPreferencesMenu, _lc[I_MENU_WEAPON_SWITCH_PRIORITY]); ReAlign(); @@ -3353,11 +3454,11 @@ begin AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); end; - with AddSwitch(_lc[I_MENU_KASTET_ALLOW]) do + with AddSwitch(_lc[I_MENU_IRONFIST_ALLOW]) do begin - Name := 'swWeaponAllowFist'; - AddItem(_lc[I_MENU_KASTET_ALLOW_ALWAYS]); - AddItem(_lc[I_MENU_KASTET_ALLOW_BERSERK]); + Name := 'swWeaponAllowIronFist'; + AddItem(_lc[I_MENU_IRONFIST_ALLOW_ALWAYS]); + AddItem(_lc[I_MENU_IRONFIST_ALLOW_BERSERK]); end; AddButton(@ProcOptionsPlayerP2WeaponPreferencesMenu, _lc[I_MENU_WEAPON_SWITCH_PRIORITY]); ReAlign(); @@ -3660,9 +3761,9 @@ begin Width := 4; MaxLength := 5; end; - with AddEdit(_lc[I_MENU_GOAL_LIMIT]) do + with AddEdit(_lc[I_MENU_SCORE_LIMIT]) do begin - Name := 'edGoalLimit'; + Name := 'edScoreLimit'; OnlyDigits := True; Width := 4; MaxLength := 5;