X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_menu.pas;h=2d83a526d2b53d96de91f4bcc2f3fb39169d4ec0;hb=1c9b34fa8d6a2bdd52cc3d0d2bf916c13d7b9bbf;hp=9d5193d29f7822c30f6a58c6dad73da8b8994dfa;hpb=1bddfaf7b6421f1659a6f211dfdb1dfaef5d5173;p=d2df-sdl.git diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas index 9d5193d..2d83a52 100644 --- a/src/game/g_menu.pas +++ b/src/game/g_menu.pas @@ -2,8 +2,7 @@ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * the Free Software Foundation, version 3 of the License ONLY. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -38,17 +37,19 @@ var gMenuSmallFont: DWORD; PromptIP: string; PromptPort: Word; + TempScale: Integer = -1; 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, e_log, SysUtils, CONFIG, g_playermodel, DateUtils, MAPDEF, Math, g_saveload, - e_texture, GL, GLExt, g_language, - g_net, g_netmsg, g_netmaster, g_items, e_input, - utils, wadreader; + e_texture, g_language, + g_net, g_netmsg, g_netmaster, g_items, e_input, g_touch, + utils, wadreader, g_system; type TYNCallback = procedure (yes:Boolean); @@ -106,6 +107,7 @@ procedure ProcApplyOptions(); var menu: TGUIMenu; i: Integer; + ovs: Boolean; begin menu := TGUIMenu(g_GUI_GetWindow('OptionsVideoMenu').GetControl('mOptionsVideoMenu')); @@ -113,7 +115,12 @@ begin gBPP := 16 else gBPP := 32; + + ovs := gVSync; gVSync := TGUISwitch(menu.GetControl('swVSync')).ItemIndex = 0; + if (ovs <> gVSync) then + sys_EnableVSync(gVSync); + gTextureFilter := TGUISwitch(menu.GetControl('swTextureFilter')).ItemIndex = 0; glLegacyNPOT := not (TGUISwitch(menu.GetControl('swLegacyNPOT')).ItemIndex = 0); @@ -128,6 +135,7 @@ begin gMuteWhenInactive := TGUISwitch(menu.GetControl('swInactiveSounds')).ItemIndex = 1; gAnnouncer := TGUISwitch(menu.GetControl('swAnnouncer')).ItemIndex; gSoundEffectsDF := TGUISwitch(menu.GetControl('swSoundEffects')).ItemIndex = 1; + gUseChatSounds := TGUISwitch(menu.GetControl('swChatSpeech')).ItemIndex = 0; menu := TGUIMenu(g_GUI_GetWindow('OptionsGameMenu').GetControl('mOptionsGameMenu')); @@ -153,97 +161,162 @@ begin gShowMessages := TGUISwitch(menu.GetControl('swMessages')).ItemIndex = 0; gRevertPlayers := TGUISwitch(menu.GetControl('swRevertPlayers')).ItemIndex = 0; gChatBubble := TGUISwitch(menu.GetControl('swChatBubble')).ItemIndex; + gPlayerIndicator := TGUISwitch(menu.GetControl('swPlayerIndicator')).ItemIndex; + gPlayerIndicatorStyle := TGUISwitch(menu.GetControl('swPlayerIndicatorStyle')).ItemIndex; + if TGUIScroll(menu.GetControl('scScaleFactor')).Value <> TempScale then + begin + TempScale := TGUIScroll(menu.GetControl('scScaleFactor')).Value; + g_dbg_scale := TempScale + 1; + end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsMenu').GetControl('mOptionsControlsMenu')); - with menu, gGameControls.GameControls do + with menu do begin - TakeScreenshot := TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_SCREENSHOT])).Key; - Stat := TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_STAT])).Key; - Chat := TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_CHAT])).Key; - TeamChat := TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_TEAMCHAT])).Key; + 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, '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_CHAT])).Key, 'togglechat'); + g_Console_BindKey(TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_TEAMCHAT])).Key, 'toggleteamchat'); end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP1Menu').GetControl('mOptionsControlsP1Menu')); - with menu, gGameControls.P1Control do - begin - KeyRight := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0; - KeyLeft := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key0; - KeyUp := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key0; - KeyDown := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key0; - KeyFire := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key0; - KeyJump := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0; - KeyNextWeapon := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0; - KeyPrevWeapon := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0; - KeyOpen := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key0; - KeyStrafe := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key0; + with menu do + begin + g_Console_BindKey(g_Console_FindBind(1, '+p1_moveright', '-p1_moveright'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p1_moveleft', '-p1_moveleft'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p1_lookup', '-p1_lookup'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p1_lookdown', '-p1_lookdown'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p1_attack', '-p1_attack'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p1_jump', '-p1_jump'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p1_weapnext', '-p1_weapnext'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p1_weapprev', '-p1_weapprev'), ''); + 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(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0, '+p1_moveright', '-p1_moveright'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key0, '+p1_moveleft', '-p1_moveleft'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key0, '+p1_lookup', '-p1_lookup'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key0, '+p1_lookdown', '-p1_lookdown'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key0, '+p1_attack', '-p1_attack'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0, '+p1_jump', '-p1_jump'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0, '+p1_weapnext', '-p1_weapnext'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0, '+p1_weapprev', '-p1_weapprev'); + 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'); // second set - KeyRight2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1; - KeyLeft2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key1; - KeyUp2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key1; - KeyDown2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key1; - KeyFire2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key1; - KeyJump2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1; - KeyNextWeapon2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1; - KeyPrevWeapon2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1; - KeyOpen2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key1; - KeyStrafe2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key1; + g_Console_BindKey(g_Console_FindBind(2, '+p1_moveright', '-p1_moveright'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p1_moveleft', '-p1_moveleft'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p1_lookup', '-p1_lookup'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p1_lookdown', '-p1_lookdown'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p1_attack', '-p1_attack'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p1_jump', '-p1_jump'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p1_weapnext', '-p1_weapnext'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p1_weapprev', '-p1_weapprev'), ''); + 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(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1, '+p1_moveright', '-p1_moveright'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key1, '+p1_moveleft', '-p1_moveleft'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key1, '+p1_lookup', '-p1_lookup'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key1, '+p1_lookdown', '-p1_lookdown'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key1, '+p1_attack', '-p1_attack'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1, '+p1_jump', '-p1_jump'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1, '+p1_weapnext', '-p1_weapnext'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1, '+p1_weapprev', '-p1_weapprev'); + 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'); end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP1MenuWeapons').GetControl('mOptionsControlsP1MenuWeapons')); - with menu, gGameControls.P1Control do + with menu do begin for i := WP_FIRST to WP_LAST do begin - KeyWeapon[i] := TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key0; - KeyWeapon2[i] := TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key1; + g_Console_BindKey(g_Console_FindBind(1, 'p1_weapon ' + IntToStr(i + 1)), ''); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key0, 'p1_weapon ' + IntToStr(i + 1)); + g_Console_BindKey(g_Console_FindBind(2, 'p1_weapon ' + IntToStr(i + 1)), ''); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key1, 'p1_weapon ' + IntToStr(i + 1)); end; end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP2Menu').GetControl('mOptionsControlsP2Menu')); - with menu, gGameControls.P2Control do - begin - KeyRight := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0; - KeyLeft := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key0; - KeyUp := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key0; - KeyDown := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key0; - KeyFire := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key0; - KeyJump := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0; - KeyNextWeapon := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0; - KeyPrevWeapon := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0; - KeyOpen := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key0; - KeyStrafe := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key0; + with menu do + begin + g_Console_BindKey(g_Console_FindBind(1, '+p2_moveright', '-p2_moveright'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p2_moveleft', '-p2_moveleft'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p2_lookup', '-p2_lookup'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p2_lookdown', '-p2_lookdown'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p2_attack', '-p2_attack'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p2_jump', '-p2_jump'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p2_weapnext', '-p2_weapnext'), ''); + g_Console_BindKey(g_Console_FindBind(1, '+p2_weapprev', '-p2_weapprev'), ''); + 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(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0, '+p2_moveright', '-p2_moveright'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key0, '+p2_moveleft', '-p2_moveleft'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key0, '+p2_lookup', '-p2_lookup'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key0, '+p2_lookdown', '-p2_lookdown'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key0, '+p2_attack', '-p2_attack'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0, '+p2_jump', '-p2_jump'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0, '+p2_weapnext', '-p2_weapnext'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0, '+p2_weapprev', '-p2_weapprev'); + 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'); // second set - KeyRight2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1; - KeyLeft2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key1; - KeyUp2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key1; - KeyDown2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key1; - KeyFire2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key1; - KeyJump2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1; - KeyNextWeapon2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1; - KeyPrevWeapon2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1; - KeyOpen2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key1; - KeyStrafe2 := TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key1; + g_Console_BindKey(g_Console_FindBind(2, '+p2_moveright', '-p2_moveright'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p2_moveleft', '-p2_moveleft'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p2_lookup', '-p2_lookup'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p2_lookdown', '-p2_lookdown'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p2_attack', '-p2_attack'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p2_jump', '-p2_jump'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p2_weapnext', '-p2_weapnext'), ''); + g_Console_BindKey(g_Console_FindBind(2, '+p2_weapprev', '-p2_weapprev'), ''); + 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(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1, '+p2_moveright', '-p2_moveright'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key1, '+p2_moveleft', '-p2_moveleft'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key1, '+p2_lookup', '-p2_lookup'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key1, '+p2_lookdown', '-p2_lookdown'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key1, '+p2_attack', '-p2_attack'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1, '+p2_jump', '-p2_jump'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1, '+p2_weapnext', '-p2_weapnext'); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1, '+p2_weapprev', '-p2_weapprev'); + 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'); end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP2MenuWeapons').GetControl('mOptionsControlsP2MenuWeapons')); - with menu, gGameControls.P2Control do + with menu do begin for i := WP_FIRST to WP_LAST do begin - KeyWeapon[i] := TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key0; - KeyWeapon2[i] := TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key1; + g_Console_BindKey(g_Console_FindBind(1, 'p2_weapon ' + IntToStr(i + 1)), ''); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key0, 'p2_weapon ' + IntToStr(i + 1)); + g_Console_BindKey(g_Console_FindBind(2, 'p2_weapon ' + IntToStr(i + 1)), ''); + g_Console_BindKey(TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key1, 'p2_weapon ' + IntToStr(i + 1)); end; end; - if e_JoysticksAvailable > 0 then + if e_HasJoysticks then begin menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsJoystickMenu').GetControl('mOptionsControlsJoystickMenu')); with menu do begin - for i := 0 to e_JoysticksAvailable-1 do - e_JoystickDeadzones[i] := TGUIScroll(menu.GetControl('scDeadzone' + IntToStr(i))).Value*(32767 div 20); - end; + for i := 0 to e_MaxJoys - 1 do + if e_JoystickAvailable[i] then + e_JoystickDeadzones[i] := TGUIScroll(menu.GetControl('scDeadzone' + IntToStr(i))).Value*(32767 div 20) + end + end; + + if g_touch_enabled then + begin + menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsTouchMenu').GetControl('mOptionsControlsTouchMenu')); + g_touch_alt := TGUISwitch(menu.GetControl('swTouchAlt')).ItemIndex = 1; + g_touch_size := TGUIScroll(menu.GetControl('scTouchSize')).Value / 10 + 0.5; + g_touch_fire := TGUISwitch(menu.GetControl('swTouchFire')).ItemIndex = 1; + g_touch_offset := TGUIScroll(menu.GetControl('scTouchOffset')).Value * 5; end; menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1Menu').GetControl('mOptionsPlayersP1Menu')); @@ -269,8 +342,8 @@ begin gPlayer2Settings.Color := Model.Color; end; - if gPlayer1Settings.Name = '' then gPlayer1Settings.Name := 'Player1'; - if gPlayer2Settings.Name = '' then gPlayer2Settings.Name := 'Player2'; + if gPlayer1Settings.Name = '' then gPlayer1Settings.Name := GenPlayerName(1); + if gPlayer2Settings.Name = '' then gPlayer2Settings.Name := GenPlayerName(2); if g_Game_IsServer then begin @@ -302,6 +375,7 @@ begin if g_Game_IsClient then MC_SEND_PlayerSettings; g_Options_Write(GameDir+'/'+CONFIG_FILENAME); + g_Console_WriteGameConfig(); end; procedure ReadOptions(); @@ -346,95 +420,113 @@ begin else ItemIndex := 0; + with TGUISwitch(menu.GetControl('swChatSpeech')) do + if gUseChatSounds then + ItemIndex := 0 + else + ItemIndex := 1; + menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP1Menu').GetControl('mOptionsControlsP1Menu')); - with menu, gGameControls.P1Control do - begin - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0 := KeyRight; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key0 := KeyLeft; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key0 := KeyUp; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key0 := KeyDown; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key0 := KeyFire; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0 := KeyJump; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0 := KeyNextWeapon; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0 := KeyPrevWeapon; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key0 := KeyOpen; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key0 := KeyStrafe; + with menu do + begin + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0 := g_Console_FindBind(1, '+p1_moveright', '-p1_moveright'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key0 := g_Console_FindBind(1, '+p1_moveleft', '-p1_moveleft'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key0 := g_Console_FindBind(1, '+p1_lookup', '-p1_lookup'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key0 := g_Console_FindBind(1, '+p1_lookdown', '-p1_lookdown'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key0 := g_Console_FindBind(1, '+p1_attack', '-p1_attack'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0 := g_Console_FindBind(1, '+p1_jump', '-p1_jump'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0 := g_Console_FindBind(1, '+p1_weapnext', '-p1_weapnext'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0 := g_Console_FindBind(1, '+p1_weapprev', '-p1_weapprev'); + 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'); // second set - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1 := KeyRight2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key1 := KeyLeft2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key1 := KeyUp2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key1 := KeyDown2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key1 := KeyFire2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1 := KeyJump2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1 := KeyNextWeapon2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1 := KeyPrevWeapon2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key1 := KeyOpen2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key1 := KeyStrafe2; + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1 := g_Console_FindBind(2, '+p1_moveright', '-p1_moveright'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key1 := g_Console_FindBind(2, '+p1_moveleft', '-p1_moveleft'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key1 := g_Console_FindBind(2, '+p1_lookup', '-p1_lookup'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key1 := g_Console_FindBind(2, '+p1_lookdown', '-p1_lookdown'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key1 := g_Console_FindBind(2, '+p1_attack', '-p1_attack'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1 := g_Console_FindBind(2, '+p1_jump', '-p1_jump'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1 := g_Console_FindBind(2, '+p1_weapnext', '-p1_weapnext'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1 := g_Console_FindBind(2, '+p1_weapprev', '-p1_weapprev'); + 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'); end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP1MenuWeapons').GetControl('mOptionsControlsP1MenuWeapons')); - with menu, gGameControls.P1Control do + with menu do begin for i := WP_FIRST to WP_LAST do begin - TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key0 := KeyWeapon[i]; - TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key1 := KeyWeapon2[i]; + TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key0 := g_Console_FindBind(1, 'p1_weapon ' + IntToStr(i + 1)); + TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key1 := g_Console_FindBind(2, 'p1_weapon ' + IntToStr(i + 1)); end; end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP2Menu').GetControl('mOptionsControlsP2Menu')); - with menu, gGameControls.P2Control do - begin - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0 := KeyRight; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key0 := KeyLeft; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key0 := KeyUp; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key0 := KeyDown; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key0 := KeyFire; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0 := KeyJump; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0 := KeyNextWeapon; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0 := KeyPrevWeapon; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key0 := KeyOpen; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key0 := KeyStrafe; + with menu do + begin + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key0 := g_Console_FindBind(1, '+p2_moveright', '-p2_moveright'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key0 := g_Console_FindBind(1, '+p2_moveleft', '-p2_moveleft'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key0 := g_Console_FindBind(1, '+p2_lookup', '-p2_lookup'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key0 := g_Console_FindBind(1, '+p2_lookdown', '-p2_lookdown'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key0 := g_Console_FindBind(1, '+p2_attack', '-p2_attack'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key0 := g_Console_FindBind(1, '+p2_jump', '-p2_jump'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key0 := g_Console_FindBind(1, '+p2_weapnext', '-p2_weapnext'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key0 := g_Console_FindBind(1, '+p2_weapprev', '-p2_weapprev'); + 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'); // second set - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1 := KeyRight2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key1 := KeyLeft2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key1 := KeyUp2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key1 := KeyDown2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key1 := KeyFire2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1 := KeyJump2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1 := KeyNextWeapon2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1 := KeyPrevWeapon2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_USE])).Key1 := KeyOpen2; - TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_STRAFE])).Key1 := KeyStrafe2; + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_RIGHT])).Key1 := g_Console_FindBind(2, '+p2_moveright', '-p2_moveright'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_LEFT])).Key1 := g_Console_FindBind(2, '+p2_moveleft', '-p2_moveleft'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_UP])).Key1 := g_Console_FindBind(2, '+p2_lookup', '-p2_lookup'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_DOWN])).Key1 := g_Console_FindBind(2, '+p2_lookdown', '-p2_lookdown'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_FIRE])).Key1 := g_Console_FindBind(2, '+p2_attack', '-p2_attack'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_JUMP])).Key1 := g_Console_FindBind(2, '+p2_jump', '-p2_jump'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_NEXT_WEAPON])).Key1 := g_Console_FindBind(2, '+p2_weapnext', '-p2_weapnext'); + TGUIKeyRead2(GetControl(_lc[I_MENU_CONTROL_PREV_WEAPON])).Key1 := g_Console_FindBind(2, '+p2_weapprev', '-p2_weapprev'); + 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'); end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP2MenuWeapons').GetControl('mOptionsControlsP2MenuWeapons')); - with menu, gGameControls.P2Control do + with menu do begin for i := WP_FIRST to WP_LAST do begin - TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key0 := KeyWeapon[i]; - TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key1 := KeyWeapon2[i]; + TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key0 := g_Console_FindBind(1, 'p2_weapon ' + IntToStr(i + 1)); + TGUIKeyRead2(GetControl(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)])).Key1 := g_Console_FindBind(2, 'p2_weapon ' + IntToStr(i + 1)); end; end; - if e_JoysticksAvailable > 0 then + if e_HasJoysticks then begin menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsJoystickMenu').GetControl('mOptionsControlsJoystickMenu')); with menu do begin - for i := 0 to e_JoysticksAvailable-1 do - TGUIScroll(menu.GetControl('scDeadzone' + IntToStr(i))).Value := e_JoystickDeadzones[i] div (32767 div 20); - end; + for i := 0 to e_MaxJoys - 1 do + if e_JoystickAvailable[i] then + TGUIScroll(menu.GetControl('scDeadzone' + IntToStr(i))).Value := e_JoystickDeadzones[i] div (32767 div 20) + end + end; + + if g_touch_enabled then + begin + menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsTouchMenu').GetControl('mOptionsControlsTouchMenu')); + with TGUISwitch(menu.GetControl('swTouchAlt')) do + if g_touch_alt then ItemIndex := 1 else ItemIndex := 0; + TGUIScroll(menu.GetControl('scTouchSize')).Value := Round((g_touch_size - 0.5) * 10); + with TGUISwitch(menu.GetControl('swTouchFire')) do + if g_touch_fire then ItemIndex := 1 else ItemIndex := 0; + TGUIScroll(menu.GetControl('scTouchOffset')).Value := Round(g_touch_offset / 5); end; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsMenu').GetControl('mOptionsControlsMenu')); - with menu, gGameControls.GameControls do + with menu do begin - TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_SCREENSHOT])).Key := TakeScreenshot; - TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_STAT])).Key := Stat; - TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_CHAT])).Key := Chat; - TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_TEAMCHAT])).Key := TeamChat; + 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_CHAT])).Key := g_Console_FindBind(1, 'togglechat'); + TGUIKeyRead(GetControl(_lc[I_MENU_CONTROL_TEAMCHAT])).Key := g_Console_FindBind(1, 'toggleteamchat'); end; menu := TGUIMenu(g_GUI_GetWindow('OptionsGameMenu').GetControl('mOptionsGameMenu')); @@ -478,6 +570,15 @@ begin with TGUISwitch(menu.GetControl('swChatBubble')) do ItemIndex := gChatBubble; + with TGUISwitch(menu.GetControl('swPlayerIndicator')) do + ItemIndex := gPlayerIndicator; + + with TGUISwitch(menu.GetControl('swPlayerIndicatorStyle')) do + ItemIndex := gPlayerIndicatorStyle; + + TempScale := Round(g_dbg_scale - 1); + TGUIScroll(menu.GetControl('scScaleFactor')).Value := TempScale; + menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1Menu').GetControl('mOptionsPlayersP1Menu')); TGUIListBox(menu.GetControl('lsP1Model')).SelectItem(gPlayer1Settings.Model); @@ -710,7 +811,7 @@ begin NetInitDone := True; end; - g_Net_Slist_Set(NetSlistIP, NetSlistPort); + g_Net_Slist_Set(NetSlistIP, NetSlistPort, NetSlistList); gState := STATE_SLIST; g_ActiveWindow := nil; @@ -718,7 +819,7 @@ begin slWaitStr := _lc[I_NET_SLIST_WAIT]; g_Game_Draw; - ReDrawWindow; + sys_Repaint; slReturnPressed := True; if g_Net_Slist_Fetch(slCurrent) then @@ -728,6 +829,7 @@ begin end else slWaitStr := _lc[I_NET_SLIST_ERROR]; + g_Serverlist_GenerateTable(slCurrent, slTable); end; procedure ProcStartCampaign(); @@ -976,6 +1078,7 @@ procedure MenuLoadData(); begin e_WriteLog('Loading menu data...', TMsgType.Notify); + g_Texture_CreateWADEx('MAINMENU_LOGO', GameWAD+':TEXTURES\MAINLOGO'); g_Texture_CreateWADEx('MAINMENU_MARKER1', GameWAD+':TEXTURES\MARKER1'); g_Texture_CreateWADEx('MAINMENU_MARKER2', GameWAD+':TEXTURES\MARKER2'); g_Texture_CreateWADEx('SCROLL_LEFT', GameWAD+':TEXTURES\SLEFT'); @@ -1015,6 +1118,7 @@ begin e_CharFont_Remove(gMenuFont); e_CharFont_Remove(gMenuSmallFont); + g_Texture_Delete('MAINMENU_LOGO'); g_Texture_Delete('MAINMENU_MARKER1'); g_Texture_Delete('MAINMENU_MARKER2'); g_Texture_Delete('SCROLL_LEFT'); @@ -1242,6 +1346,28 @@ begin ); end; +procedure ProcChangeGameSettings(Sender: TGUIControl); +var + menu: TGUIMenu; +begin + menu := TGUIMenu(g_GUI_GetWindow('OptionsGameMenu').GetControl('mOptionsGameMenu')); + if TGUIScroll(menu.GetControl('scScaleFactor')).Value <> TempScale then + begin + TempScale := TGUIScroll(menu.GetControl('scScaleFactor')).Value; + g_dbg_scale := TempScale + 1; + end; +end; + +procedure ProcChangeTouchSettings(Sender: TGUIControl); +var + menu: TGUIMenu; +begin + menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsTouchMenu').GetControl('mOptionsControlsTouchMenu')); + g_touch_alt := TGUISwitch(menu.GetControl('swTouchAlt')).ItemIndex = 1; + g_touch_size := TGUIScroll(menu.GetControl('scTouchSize')).Value / 10 + 0.5; + g_touch_offset := TGUIScroll(menu.GetControl('scTouchOffset')).Value * 5; +end; + procedure ProcOptionsPlayersMIMenu(); var s, a: string; @@ -1699,7 +1825,6 @@ procedure ProcVideoOptionsRes(); var menu: TGUIMenu; list: SSArray; - SR: DWORD; begin menu := TGUIMenu(g_GUI_GetWindow('OptionsVideoResMenu').GetControl('mOptionsVideoResMenu')); @@ -1710,15 +1835,16 @@ begin with TGUIListBox(menu.GetControl('lsResolution')) do begin - list := GetDisplayModes(gBPP, SR); - + list := sys_GetDispalyModes(gBPP); if list <> nil then - begin - Items := list; - ItemIndex := SR; - end + begin + Items := list; + ItemIndex := Length(list) + end else - Clear(); + begin + Clear + end end; with TGUISwitch(menu.GetControl('swFullScreen')) do @@ -1790,7 +1916,7 @@ var begin Menu := TGUIWindow.Create('FirstLanguageMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, ' '))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', ' '))) do begin Name := 'mmFirstLanguageMenu'; AddButton(@ProcSetFirstRussianLanguage, 'Ðóññêèé', ''); @@ -1883,7 +2009,7 @@ var //list: SSArray; begin Menu := TGUIWindow.Create('MainMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, 'MAINMENU_LOGO', _lc[I_MENU_MAIN_MENU]))) do begin Name := 'mmMainMenu'; AddButton(nil, _lc[I_MENU_NEW_GAME], 'NewGameMenu'); @@ -1904,7 +2030,7 @@ begin g_GUI_AddWindow(Menu); Menu := TGUIWindow.Create('NewGameMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_NEW_GAME]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_NEW_GAME]))) do begin Name := 'mmNewGameMenu'; AddButton(@ProcSingle1Player, _lc[I_MENU_1_PLAYER]); @@ -1916,7 +2042,7 @@ begin g_GUI_AddWindow(Menu); Menu := TGUIWindow.Create('NetGameMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MULTIPLAYER]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MULTIPLAYER]))) do begin Name := 'mmNetGameMenu'; AddButton(@ProcRecallAddress, _lc[I_MENU_START_CLIENT], 'NetClientMenu'); @@ -2310,7 +2436,7 @@ begin Sort := True; Dirs := True; - FileMask := '*.wad|*.pk3|*.zip'; + FileMask := '*.wad|*.pk3|*.zip|*.dfz'; SetBase(MapsDir+'megawads/'); end; @@ -2365,7 +2491,7 @@ begin Sort := True; Dirs := True; - FileMask := '*.wad|*.pk3|*.zip'; + FileMask := '*.wad|*.pk3|*.zip|*.dfz'; SetBase(MapsDir); end; with AddList(_lc[I_MENU_MAP_RESOURCE], 12, 4) do @@ -2423,7 +2549,7 @@ begin g_GUI_AddWindow(Menu); Menu := TGUIWindow.Create('OptionsMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_OPTIONS]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_OPTIONS]))) do begin Name := 'mmOptionsMenu'; AddButton(nil, _lc[I_MENU_VIDEO_OPTIONS], 'OptionsVideoMenu'); @@ -2544,6 +2670,13 @@ begin AddItem(_lc[I_MENU_COMPAT_DOOM2]); AddItem(_lc[I_MENU_COMPAT_DF]); end; + // Ïåðåêëþ÷àòåëü çâóêîâ ÷àòà + with AddSwitch (_lc[I_MENU_SOUND_CHAT]) do + begin; + Name := 'swChatSpeech'; + AddItem(_lc[I_MENU_YES]); + AddItem(_lc[I_MENU_NO]); + end; with AddSwitch(_lc[I_MENU_SOUND_INACTIVE_SOUNDS]) do begin Name := 'swInactiveSounds'; @@ -2649,6 +2782,25 @@ begin AddItem(_lc[I_MENU_GAME_CHAT_TYPE_COLOR]); AddItem(_lc[I_MENU_GAME_CHAT_TYPE_TEXTURE]); end; + with AddSwitch(_lc[I_MENU_GAME_PLAYER_INDICATOR]) do + begin + Name := 'swPlayerIndicator'; + AddItem(_lc[I_MENU_GAME_INDICATOR_NONE]); + AddItem(_lc[I_MENU_GAME_INDICATOR_OWN]); + AddItem(_lc[I_MENU_GAME_INDICATOR_ALL]); + end; + with AddSwitch(_lc[I_MENU_GAME_INDICATOR_STYLE]) do + begin + Name := 'swPlayerIndicatorStyle'; + AddItem(_lc[I_MENU_GAME_INDICATOR_ARROW]); + AddItem(_lc[I_MENU_GAME_INDICATOR_NAME]); + end; + with AddScroll(_lc[I_MENU_GAME_SCALE_FACTOR]) do + begin + Name := 'scScaleFactor'; + Max := 10; + OnChange := ProcChangeGameSettings; + end; ReAlign(); end; Menu.DefControl := 'mOptionsGameMenu'; @@ -2670,9 +2822,16 @@ begin AddButton(nil, _lc[I_MENU_PLAYER_2_KBD], 'OptionsControlsP2Menu'); {AddButton(nil, _lc[I_MENU_PLAYER_2_ALT], 'OptionsControlsP2MenuAlt');} AddButton(nil, _lc[I_MENU_PLAYER_2_WEAPONS], 'OptionsControlsP2MenuWeapons'); - AddSpace(); - if e_JoysticksAvailable <> 0 then + if e_HasJoysticks then + begin + AddSpace(); AddButton(nil, _lc[I_MENU_CONTROL_JOYSTICKS], 'OptionsControlsJoystickMenu'); + end; + if g_touch_enabled then + begin + AddSpace(); + AddButton(nil, _lc[I_MENU_CONTROL_TOUCH], 'OptionsControlsTouchMenu'); + end; end; Menu.DefControl := 'mOptionsControlsMenu'; g_GUI_AddWindow(Menu); @@ -2739,16 +2898,49 @@ begin with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_CONTROL_JOYSTICKS]))) do begin Name := 'mOptionsControlsJoystickMenu'; - for i := 0 to e_JoysticksAvailable-1 do + for i := 0 to e_MaxJoys - 1 do with AddScroll(Format(_lc[I_MENU_CONTROL_DEADZONE], [i + 1])) do begin Name := 'scDeadzone' + IntToStr(i); - Max := 20; - end; + Max := 20 + end end; Menu.DefControl := 'mOptionsControlsJoystickMenu'; g_GUI_AddWindow(Menu); + Menu := TGUIWindow.Create('OptionsControlsTouchMenu'); + with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_CONTROL_TOUCH]))) do + begin + Name := 'mOptionsControlsTouchMenu'; + with AddSwitch(_lc[I_MENU_CONTROL_TOUCH_ALT]) do + begin + Name := 'swTouchAlt'; + AddItem(_lc[I_MENU_NO]); + AddItem(_lc[I_MENU_YES]); + OnChange := ProcChangeTouchSettings; + end; + with AddScroll(_lc[I_MENU_CONTROL_TOUCH_SIZE]) do + begin + Name := 'scTouchSize'; + Max := 20; + OnChange := ProcChangeTouchSettings; + end; + with AddSwitch(_lc[I_MENU_CONTROL_TOUCH_FIRE]) do + begin + Name := 'swTouchFire'; + AddItem(_lc[I_MENU_NO]); + AddItem(_lc[I_MENU_YES]); + end; + with AddScroll(_lc[I_MENU_CONTROL_TOUCH_OFFSET]) do + begin + Name := 'scTouchOffset'; + Max := 20; + OnChange := ProcChangeTouchSettings; + end; + end; + Menu.DefControl := 'mOptionsControlsTouchMenu'; + g_GUI_AddWindow(Menu); + Menu := TGUIWindow.Create('OptionsPlayersMenu'); with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_PLAYER_OPTIONS]))) do begin @@ -2934,7 +3126,7 @@ begin g_GUI_AddWindow(Menu); Menu := TGUIWindow.Create('GameSingleMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MAIN_MENU]))) do begin Name := 'mmGameSingleMenu'; AddButton(nil, _lc[I_MENU_LOAD_GAME], 'LoadMenu'); @@ -2959,7 +3151,7 @@ begin g_GUI_AddWindow(Menu); Menu := TGUIWindow.Create('GameCustomMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MAIN_MENU]))) do begin Name := 'mmGameCustomMenu'; AddButton(nil, _lc[I_MENU_CHANGE_PLAYERS], 'TeamMenu'); @@ -2977,7 +3169,7 @@ begin g_GUI_AddWindow(Menu); Menu := TGUIWindow.Create('GameServerMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MAIN_MENU]))) do begin Name := 'mmGameServerMenu'; AddButton(nil, _lc[I_MENU_CHANGE_PLAYERS], 'TeamMenu'); @@ -2993,7 +3185,7 @@ begin g_GUI_AddWindow(Menu); Menu := TGUIWindow.Create('GameClientMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MAIN_MENU]))) do begin Name := 'mmGameClientMenu'; AddButton(nil, _lc[I_MENU_CHANGE_PLAYERS], 'TeamMenu'); @@ -3072,7 +3264,7 @@ begin g_GUI_AddWindow(Menu); Menu := TGUIWindow.Create('TeamMenu'); - with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_CHANGE_PLAYERS]))) do + with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_CHANGE_PLAYERS]))) do begin Name := 'mmTeamMenu'; AddButton(@ProcJoinRed, _lc[I_MENU_JOIN_RED], '').Name := 'tmJoinRed';