X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_menu.pas;h=2c3f85153e2ec850f69fade3f52fdda927f0272d;hb=4fd8798646bcb768e925ba667b0c4790e99e1e71;hp=e719b86d088f0c46fce0abb11c18139ad9d6f4db;hpb=cd1ca85acc0740e0f307782e2af54e5ba0a59507;p=d2df-sdl.git diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas index e719b86..2c3f851 100644 --- a/src/game/g_menu.pas +++ b/src/game/g_menu.pas @@ -1,4 +1,4 @@ -(* Copyright (C) DooM 2D:Forever Developers +(* Copyright (C) Doom 2D: Forever Developers * * 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 @@ -42,12 +42,13 @@ var implementation uses + {$INCLUDE ../nogl/noGLuses.inc} g_gui, g_textures, e_graphics, g_main, g_window, g_game, g_map, g_basic, g_console, g_sound, g_gfx, g_player, g_options, g_weapons, - e_log, SysUtils, CONFIG, g_playermodel, DateUtils, + e_log, SysUtils, CONFIG, g_playermodel, DateUtils, sdl2, MAPDEF, Math, g_saveload, - e_texture, GL, GLExt, g_language, - g_net, g_netmsg, g_netmaster, g_items, e_input, + e_texture, g_language, + g_net, g_netmsg, g_netmaster, g_items, e_input, g_touch, utils, wadreader; @@ -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,11 @@ begin gBPP := 16 else gBPP := 32; + + ovs := gVSync; gVSync := TGUISwitch(menu.GetControl('swVSync')).ItemIndex = 0; + if (ovs <> gVSync) then g_SetVSync(gVSync); + gTextureFilter := TGUISwitch(menu.GetControl('swTextureFilter')).ItemIndex = 0; glLegacyNPOT := not (TGUISwitch(menu.GetControl('swLegacyNPOT')).ItemIndex = 0); @@ -128,6 +134,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,6 +160,8 @@ 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 = 0; + g_dbg_scale := TGUIScroll(menu.GetControl('scScaleFactor')).Value + 1; menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsMenu').GetControl('mOptionsControlsMenu')); @@ -246,6 +255,15 @@ begin 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')); gPlayer1Settings.Name := b_Text_Unformat(TGUIEdit(menu.GetControl('edP1Name')).Text); @@ -269,8 +287,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 @@ -346,6 +364,12 @@ 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 @@ -428,6 +452,17 @@ begin 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 begin @@ -477,6 +512,11 @@ begin with TGUISwitch(menu.GetControl('swChatBubble')) do ItemIndex := gChatBubble; + + with TGUISwitch(menu.GetControl('swPlayerIndicator')) do + if gPlayerIndicator then ItemIndex := 0 else ItemIndex := 1; + + TGUIScroll(menu.GetControl('scScaleFactor')).Value := Round(g_dbg_scale - 1); menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1Menu').GetControl('mOptionsPlayersP1Menu')); @@ -728,6 +768,7 @@ begin end else slWaitStr := _lc[I_NET_SLIST_ERROR]; + g_Serverlist_GenerateTable(slCurrent, slTable); end; procedure ProcStartCampaign(); @@ -1242,6 +1283,24 @@ begin ); end; +procedure ProcChangeGameSettings(Sender: TGUIControl); +var + menu: TGUIMenu; +begin + menu := TGUIMenu(g_GUI_GetWindow('OptionsGameMenu').GetControl('mOptionsGameMenu')); + g_dbg_scale := TGUIScroll(menu.GetControl('scScaleFactor')).Value + 1; +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; @@ -2544,6 +2603,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 +2715,18 @@ 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_YES]); + AddItem(_lc[I_MENU_NO]); + 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 +2748,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 + 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); @@ -2749,6 +2834,39 @@ begin 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