X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fg_menu.pas;h=69cd445cb09fbb797432559356de6e25b25b7b74;hp=95a0da30f122c1634ea69c381f02d372d8097e8e;hb=4204edd3c7df01198a2289af4896be0575fff15c;hpb=847038a14751d192fcc4af172d7a963e28144c72 diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas index 95a0da3..69cd445 100644 --- a/src/game/g_menu.pas +++ b/src/game/g_menu.pas @@ -171,6 +171,7 @@ begin g_dbg_scale := TempScale + 1; end; + menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsMenu').GetControl('mOptionsControlsMenu')); with menu do @@ -196,6 +197,7 @@ begin g_Console_BindKey(g_Console_FindBind(1, '+p1_jump', '-p1_jump'), ''); g_Console_BindKey(g_Console_FindBind(1, '+p1_activate', '-p1_activate'), ''); g_Console_BindKey(g_Console_FindBind(1, '+p1_strafe', '-p1_strafe'), ''); + g_Console_BindKey(g_Console_FindBind(1, 'p1_dropflag', ''), ''); g_Console_BindKey(g_Console_FindBind(1, 'p1_weapnext', ''), ''); g_Console_BindKey(g_Console_FindBind(1, 'p1_weapprev', ''), ''); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0, '+p1_moveright', '-p1_moveright'); @@ -206,6 +208,7 @@ begin g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0, '+p1_jump', '-p1_jump'); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key0, '+p1_activate', '-p1_activate'); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key0, '+p1_strafe', '-p1_strafe'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DROPFLAG])).Key0, 'p1_dropflag', ''); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0, 'p1_weapnext', '', True); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0, 'p1_weapprev', '', True); // second set @@ -217,6 +220,7 @@ begin g_Console_BindKey(g_Console_FindBind(2, '+p1_jump', '-p1_jump'), ''); g_Console_BindKey(g_Console_FindBind(2, '+p1_activate', '-p1_activate'), ''); g_Console_BindKey(g_Console_FindBind(2, '+p1_strafe', '-p1_strafe'), ''); + g_Console_BindKey(g_Console_FindBind(2, 'p1_dropflag', ''), ''); g_Console_BindKey(g_Console_FindBind(2, 'p1_weapnext', ''), ''); g_Console_BindKey(g_Console_FindBind(2, 'p1_weapprev', ''), ''); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1, '+p1_moveright', '-p1_moveright'); @@ -227,6 +231,7 @@ begin g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1, '+p1_jump', '-p1_jump'); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key1, '+p1_activate', '-p1_activate'); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key1, '+p1_strafe', '-p1_strafe'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DROPFLAG])).Key1, 'p1_dropflag', ''); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1, 'p1_weapnext', '', True); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1, 'p1_weapprev', '', True); end; @@ -254,6 +259,7 @@ begin g_Console_BindKey(g_Console_FindBind(1, '+p2_jump', '-p2_jump'), ''); g_Console_BindKey(g_Console_FindBind(1, '+p2_activate', '-p2_activate'), ''); g_Console_BindKey(g_Console_FindBind(1, '+p2_strafe', '-p2_strafe'), ''); + g_Console_BindKey(g_Console_FindBind(1, 'p2_dropflag', ''), ''); g_Console_BindKey(g_Console_FindBind(1, 'p2_weapnext', ''), ''); g_Console_BindKey(g_Console_FindBind(1, 'p2_weapprev', ''), ''); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0, '+p2_moveright', '-p2_moveright'); @@ -264,6 +270,7 @@ begin g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0, '+p2_jump', '-p2_jump'); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key0, '+p2_activate', '-p2_activate'); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key0, '+p2_strafe', '-p2_strafe'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DROPFLAG])).Key0, 'p2_dropflag', ''); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0, 'p2_weapnext', '', True); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0, 'p2_weapprev', '', True); // second set @@ -275,6 +282,7 @@ begin g_Console_BindKey(g_Console_FindBind(2, '+p2_jump', '-p2_jump'), ''); g_Console_BindKey(g_Console_FindBind(2, '+p2_activate', '-p2_activate'), ''); g_Console_BindKey(g_Console_FindBind(2, '+p2_strafe', '-p2_strafe'), ''); + g_Console_BindKey(g_Console_FindBind(2, 'p2_dropflag', ''), ''); g_Console_BindKey(g_Console_FindBind(2, 'p2_weapnext', ''), ''); g_Console_BindKey(g_Console_FindBind(2, 'p2_weapprev', ''), ''); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1, '+p2_moveright', '-p2_moveright'); @@ -285,6 +293,7 @@ begin g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1, '+p2_jump', '-p2_jump'); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key1, '+p2_activate', '-p2_activate'); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key1, '+p2_strafe', '-p2_strafe'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DROPFLAG])).Key1, 'p2_dropflag', ''); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1, 'p2_weapnext', '', True); g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1, 'p2_weapprev', '', True); end; @@ -333,6 +342,44 @@ begin 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, + 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('OptionsPlayersP1WeaponMenu').GetControl('mOptionsPlayersP1WeaponMenu')); + gPlayer1Settings.WeaponSwitch := TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex; + gPlayer1Settings.SwitchToEmpty := TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex; + + + menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP1WeaponMenu').GetControl('mOptionsPreferencesP1WeaponMenu')); + with menu do + begin + for i := WP_FIRST to WP_LAST+1 do + begin + gPlayer1Settings.WeaponPreferences[i] := TGUISwitch(menu.GetControl(IntToStr(i))).ItemIndex; + end; + end; + + menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2WeaponMenu').GetControl('mOptionsPlayersP2WeaponMenu')); + gPlayer2Settings.WeaponSwitch := TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex; + gPlayer2Settings.SwitchToEmpty := TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex; + menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP2WeaponMenu').GetControl('mOptionsPreferencesP2WeaponMenu')); + with menu do + begin + for i := WP_FIRST to WP_LAST+1 do + begin + gPlayer2Settings.WeaponPreferences[i] := TGUISwitch(menu.GetControl(IntToStr(i))).ItemIndex; + end; + end; + menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2Menu').GetControl('mOptionsPlayersP2Menu')); gPlayer2Settings.Name := b_Text_Unformat(TGUIEdit(menu.GetControl('edP2Name')).Text); @@ -358,7 +405,10 @@ begin else if gPlayer1.Team <> gPlayer1Settings.Team then gPlayer1.SwitchTeam; - + gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; + if (gPlayer1.WeapSwitchMode = 2) then + gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); + gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; if g_Game_IsNet then MH_SEND_PlayerSettings(gPlayer1.UID); end; @@ -371,6 +421,10 @@ begin else if gPlayer2.Team <> gPlayer2Settings.Team then gPlayer2.SwitchTeam; + gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; + if (gPlayer2.WeapSwitchMode = 2) then + gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); + gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; end; end; @@ -382,7 +436,7 @@ end; procedure ReadOptions(); var menu: TGUIMenu; - i: Integer; + i, a: Integer; begin menu := TGUIMenu(g_GUI_GetWindow('OptionsVideoMenu').GetControl('mOptionsVideoMenu')); @@ -441,6 +495,7 @@ begin TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0 := g_Console_FindBind(1, '+p1_jump', '-p1_jump'); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key0 := g_Console_FindBind(1, '+p1_activate', '-p1_activate'); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key0 := g_Console_FindBind(1, '+p1_strafe', '-p1_strafe'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DROPFLAG])).Key0 := g_Console_FindBind(1, 'p1_dropflag', ''); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0 := g_Console_FindBind(1, 'p1_weapnext', ''); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0 := g_Console_FindBind(1, 'p1_weapprev', ''); // second set @@ -452,6 +507,7 @@ begin TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1 := g_Console_FindBind(2, '+p1_jump', '-p1_jump'); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key1 := g_Console_FindBind(2, '+p1_activate', '-p1_activate'); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key1 := g_Console_FindBind(2, '+p1_strafe', '-p1_strafe'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DROPFLAG])).Key1 := g_Console_FindBind(2, 'p1_dropflag', ''); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1 := g_Console_FindBind(2, 'p1_weapnext', ''); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1 := g_Console_FindBind(2, 'p1_weapprev', ''); end; @@ -477,6 +533,7 @@ begin TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0 := g_Console_FindBind(1, '+p2_jump', '-p2_jump'); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key0 := g_Console_FindBind(1, '+p2_activate', '-p2_activate'); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key0 := g_Console_FindBind(1, '+p2_strafe', '-p2_strafe'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DROPFLAG])).Key0 := g_Console_FindBind(1, 'p2_dropflag', ''); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0 := g_Console_FindBind(1, 'p2_weapnext', ''); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0 := g_Console_FindBind(1, 'p2_weapprev', ''); // second set @@ -488,6 +545,7 @@ begin TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1 := g_Console_FindBind(2, '+p2_jump', '-p2_jump'); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key1 := g_Console_FindBind(2, '+p2_activate', '-p2_activate'); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key1 := g_Console_FindBind(2, '+p2_strafe', '-p2_strafe'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DROPFLAG])).Key1 := g_Console_FindBind(2, 'p2_dropflag', ''); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1 := g_Console_FindBind(2, 'p2_weapnext', ''); TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1 := g_Console_FindBind(2, 'p2_weapprev', ''); end; @@ -595,6 +653,27 @@ begin TGUIScroll(menu.GetControl('scP1Green')).Value := Round(gPlayer1Settings.Color.G/16); TGUIScroll(menu.GetControl('scP1Blue')).Value := Round(gPlayer1Settings.Color.B/16); + menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1WeaponMenu').GetControl('mOptionsPlayersP1WeaponMenu')); + TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex := gPlayer1Settings.WeaponSwitch; + TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex := gPlayer1Settings.SwitchToEmpty; + + menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP1WeaponMenu').GetControl('mOptionsPreferencesP1WeaponMenu')); + for i := WP_FIRST to WP_LAST+1 do + begin + if (gPlayer1Settings.WeaponPreferences[i] > 0) and (gPlayer1Settings.WeaponPreferences[i] <= WP_LAST+1) then TGUISwitch(menu.GetControl(IntToStr(i))).ItemIndex := gPlayer1Settings.WeaponPreferences[i] + else TGUISwitch(menu.GetControl(IntToStr(i))).ItemIndex := 0; + end; + + menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2WeaponMenu').GetControl('mOptionsPlayersP2WeaponMenu')); + TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex := gPlayer2Settings.WeaponSwitch; + TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex := gPlayer2Settings.SwitchToEmpty; + menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP2WeaponMenu').GetControl('mOptionsPreferencesP2WeaponMenu')); + for i := WP_FIRST to WP_LAST+1 do + begin + if (gPlayer2Settings.WeaponPreferences[i] > 0) and (gPlayer2Settings.WeaponPreferences[i] <= WP_LAST+1) then TGUISwitch(menu.GetControl(IntToStr(i))).ItemIndex := gPlayer2Settings.WeaponPreferences[i] + else TGUISwitch(menu.GetControl(IntToStr(i))).ItemIndex := 0; + end; + menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2Menu').GetControl('mOptionsPlayersP2Menu')); TGUIListBox(menu.GetControl('lsP2Model')).SelectItem(gPlayer2Settings.Model); @@ -693,6 +772,12 @@ begin else gsGameFlags := gsGameFlags or GAME_OPTION_BOTVSPLAYER; 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); + end; + // TODO: get this crap out of here gGameSettings.ItemRespawnTime := gsItemRespawnTime; gGameSettings.WarmupTime := gsWarmupTime; @@ -1379,6 +1464,34 @@ begin g_GUI_ShowWindow('OptionsPlayersMIMenu'); end; +procedure ProcOptionsPlayerP1WeaponMenu(); +var + a: string; +begin + a := TGUIListBox(TGUIMenu(g_ActiveWindow.GetControl('mOptionsPlayers'+'P1'+'Menu')).GetControl('ls'+'P1'+'Model')).SelectedItem; + if a = '' then Exit; + g_GUI_ShowWindow('OptionsPlayersP1WeaponMenu'); +end; + +procedure ProcOptionsPlayerP1WeaponPreferencesMenu(); +begin + g_GUI_ShowWindow('OptionsPreferencesP1WeaponMenu'); +end; + +procedure ProcOptionsPlayerP2WeaponMenu(); +var + a: string; +begin + a := TGUIListBox(TGUIMenu(g_ActiveWindow.GetControl('mOptionsPlayers'+'P2'+'Menu')).GetControl('ls'+'P2'+'Model')).SelectedItem; + if a = '' then Exit; + g_GUI_ShowWindow('OptionsPlayersP2WeaponMenu'); +end; + +procedure ProcOptionsPlayerP2WeaponPreferencesMenu(); +begin + g_GUI_ShowWindow('OptionsPreferencesP2WeaponMenu'); +end; + procedure ProcOptionsPlayersAnim(); var s: String; @@ -1655,6 +1768,13 @@ begin 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 + ItemIndex := 0 + else if LongBool(Options and GAME_OPTION_ALLOWDROPFLAG) then + ItemIndex := 1 + else + ItemIndex := 2; TGUIEdit(menu.GetControl('edTimeLimit')).Text := IntToStr(TimeLimit); TGUIEdit(menu.GetControl('edGoalLimit')).Text := IntToStr(GoalLimit); @@ -1691,6 +1811,7 @@ begin 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 @@ -1717,6 +1838,7 @@ begin end; TGUILabel(menu.GetControlsText('edMaxLives')).Color := MENU_UNACTIVEITEMS_COLOR; TGUISwitch(menu.GetControl('swBotsVS')).Enabled := True; + TGUISwitch(menu.GetControl('swFlagDrop')).Enabled := False; end; end; end; @@ -1838,6 +1960,15 @@ begin 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); + end; + end; + // don't forget to latch this shit gsGameFlags := Options; gsMaxLives := MaxLives; @@ -2033,7 +2164,8 @@ begin AddButton(@ProcOptionsPlayersAnim, _lc[I_MENU_MODEL_ANIMATION]); AddButton(@ProcOptionsPlayersWeap, _lc[I_MENU_MODEL_CHANGE_WEAPON]); AddButton(@ProcOptionsPlayersRot, _lc[I_MENU_MODEL_ROTATE]); - + if s = 'P1' then AddButton(@ProcOptionsPlayerP1WeaponMenu, _lc[I_MENU_WEAPON]) + else AddButton(@ProcOptionsPlayerP2WeaponMenu, _lc[I_MENU_WEAPON]); with TGUIModelView(Menu.AddChild(TGUIModelView.Create)) do begin Name := 'mv'+s+'Model'; @@ -2049,7 +2181,7 @@ procedure CreateAllMenus(); var Menu: TGUIWindow; //SR: TSearchRec; - a, cx, _y, i: Integer; + a, cx, _y, i, x: Integer; //list: SSArray; begin Menu := TGUIWindow.Create('MainMenu'); @@ -2288,6 +2420,19 @@ begin if not LongBool(gsGameFlags and GAME_OPTION_BOTVSPLAYER) then ItemIndex := 1; end; + with AddSwitch(_lc[I_MENU_FLAG_DROP]) do + begin + Name := 'swFlagDrop'; + 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 + ItemIndex := 0 + else if LongBool(gsGameFlags and GAME_OPTION_ALLOWDROPFLAG) then + ItemIndex := 1 + else + ItemIndex := 2; + end; AddSpace(); AddButton(@ProcStartNetGame, _lc[I_MENU_START_GAME]); @@ -2523,6 +2668,19 @@ begin if not LongBool(gsGameFlags and GAME_OPTION_BOTVSPLAYER) then ItemIndex := 1; end; + with AddSwitch(_lc[I_MENU_FLAG_DROP]) do + begin + Name := 'swFlagDrop'; + 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 + ItemIndex := 0 + else if LongBool(gsGameFlags and GAME_OPTION_ALLOWDROPFLAG) then + ItemIndex := 1 + else + ItemIndex := 2; + end; AddSpace(); AddButton(@ProcStartCustomGame, _lc[I_MENU_START_GAME]); @@ -2977,6 +3135,7 @@ begin AddKeyRead2(_lc[I_MENU_CONTROL_NEXT_WEAPON]).Name := _lc[I_MENU_CONTROL_NEXT_WEAPON]; AddKeyRead2(_lc[I_MENU_CONTROL_PREV_WEAPON]).Name := _lc[I_MENU_CONTROL_PREV_WEAPON]; AddKeyRead2(_lc[I_MENU_CONTROL_STRAFE]).Name := _lc[I_MENU_CONTROL_STRAFE]; + AddKeyRead2(_lc[I_MENU_CONTROL_DROPFLAG]).Name := _lc[I_MENU_CONTROL_DROPFLAG]; end; Menu.DefControl := 'mOptionsControlsP1Menu'; g_GUI_AddWindow(Menu); @@ -3006,6 +3165,7 @@ begin AddKeyRead2(_lc[I_MENU_CONTROL_NEXT_WEAPON]).Name := _lc[I_MENU_CONTROL_NEXT_WEAPON]; AddKeyRead2(_lc[I_MENU_CONTROL_PREV_WEAPON]).Name := _lc[I_MENU_CONTROL_PREV_WEAPON]; AddKeyRead2(_lc[I_MENU_CONTROL_STRAFE]).Name := _lc[I_MENU_CONTROL_STRAFE]; + AddKeyRead2(_lc[I_MENU_CONTROL_DROPFLAG]).Name := _lc[I_MENU_CONTROL_DROPFLAG]; end; Menu.DefControl := 'mOptionsControlsP2Menu'; g_GUI_AddWindow(Menu); @@ -3111,6 +3271,111 @@ begin Menu.DefControl := 'mOptionsPlayersMIMenu'; g_GUI_AddWindow(Menu); + Menu := TGUIWindow.Create('OptionsPlayersP1WeaponMenu'); + with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_WEAPON]))) do + begin + Name := 'mOptionsPlayersP1WeaponMenu'; + with AddSwitch(_lc[I_MENU_WEAPON_SWITCH]) do + begin + Name := 'swWeaponAutoswitch'; + AddItem(_lc[I_MENU_NO]); + AddItem(_lc[I_MENU_WEAPON_SWITCH_LINEAR]); + AddItem(_lc[I_MENU_WEAPON_SWITCH_PREFERENCE]); + end; + with AddSwitch(_lc[I_MENU_WEAPON_ALLOW_EMPTY]) do + begin + Name := 'swWeaponAllowEmpty'; + AddItem(_lc[I_MENU_YES]); + AddItem(_lc[I_MENU_NO]); + end; + AddButton(@ProcOptionsPlayerP1WeaponPreferencesMenu, _lc[I_MENU_WEAPON_SWITCH_PRIORITY]); + ReAlign(); + end; + Menu.DefControl := 'mOptionsPlayersP1WeaponMenu'; + g_GUI_AddWindow(Menu); + + Menu := TGUIWindow.Create('OptionsPreferencesP1WeaponMenu'); + with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_WEAPON_PRIORITY_PLAYER_1]))) do + begin + Name := 'mOptionsPreferencesP1WeaponMenu'; + for i := WP_FIRST to WP_LAST do + begin + with AddSwitch(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)]) do + begin + Name := IntToStr(i); + for a := WP_FIRST to WP_LAST+1 do + begin + AddItem(IntToStr(a)); + end; + ItemIndex := i + end; + end; + with AddSwitch(_lc[I_GAME_WEAPON_BERSERK]) do + begin + Name := IntToStr(WP_LAST+1); + for a := WP_FIRST to WP_LAST+1 do + begin + AddItem(IntToStr(a)); + end; + ItemIndex := WP_LAST + 1; + end; + end; + Menu.DefControl := 'mOptionsPreferencesP1WeaponMenu'; + g_GUI_AddWindow(Menu); + + + Menu := TGUIWindow.Create('OptionsPlayersP2WeaponMenu'); + with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_WEAPON]))) do + begin + Name := 'mOptionsPlayersP2WeaponMenu'; + with AddSwitch(_lc[I_MENU_WEAPON_SWITCH]) do + begin + Name := 'swWeaponAutoswitch'; + AddItem(_lc[I_MENU_NO]); + AddItem(_lc[I_MENU_WEAPON_SWITCH_LINEAR]); + AddItem(_lc[I_MENU_WEAPON_SWITCH_PREFERENCE]); + end; + with AddSwitch(_lc[I_MENU_WEAPON_ALLOW_EMPTY]) do + begin + Name := 'swWeaponAllowEmpty'; + AddItem(_lc[I_MENU_YES]); + AddItem(_lc[I_MENU_NO]); + end; + AddButton(@ProcOptionsPlayerP2WeaponPreferencesMenu, _lc[I_MENU_WEAPON_SWITCH_PRIORITY]); + ReAlign(); + end; + Menu.DefControl := 'mOptionsPlayersP2WeaponMenu'; + g_GUI_AddWindow(Menu); + + Menu := TGUIWindow.Create('OptionsPreferencesP2WeaponMenu'); + with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_WEAPON_PRIORITY_PLAYER_2]))) do + begin + Name := 'mOptionsPreferencesP2WeaponMenu'; + for i := WP_FIRST to WP_LAST do + begin + with AddSwitch(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)]) do + begin + Name := IntToStr(i); + for a := WP_FIRST to WP_LAST+1 do + begin + AddItem(IntToStr(a)); + end; + ItemIndex := i + end; + end; + with AddSwitch(_lc[I_GAME_WEAPON_BERSERK]) do + begin + Name := IntToStr(WP_LAST+1); + for a := WP_FIRST to WP_LAST+1 do + begin + AddItem(IntToStr(a)); + end; + ItemIndex := WP_LAST + 1; + end; + end; + Menu.DefControl := 'mOptionsPreferencesP2WeaponMenu'; + g_GUI_AddWindow(Menu); + Menu := TGUIWindow.Create('OptionsLanguageMenu'); with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_LANGUAGE_OPTIONS]))) do begin @@ -3399,6 +3664,14 @@ begin AddItem(_lc[I_MENU_BOTS_VS_ALL]); ItemIndex := 2; end; + with AddSwitch(_lc[I_MENU_FLAG_DROP]) do + begin + Name := 'swFlagDrop'; + AddItem(_lc[I_MENU_FLAG_THROW]); + AddItem(_lc[I_MENU_YES]); + AddItem(_lc[I_MENU_NO]); + ItemIndex := 2; + end; ReAlign(); end;