X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_menu.pas;h=a84251949474de22ad1a163b41c767f5eb2d52e0;hb=254041134b399e948e554ae99171174a7087ae40;hp=8bd768d150d67a71881b7fc9c1299fcf3327e1c1;hpb=a3604376ba8cd78ec94dae67758fafaa94197eb2;p=d2df-sdl.git diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas index 8bd768d..a842519 100644 --- a/src/game/g_menu.pas +++ b/src/game/g_menu.pas @@ -13,7 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *) -{$MODE DELPHI} +{$INCLUDE ../shared/a_modes.inc} unit g_menu; interface @@ -26,7 +26,7 @@ procedure LoadFont(txtres, fntres: string; var FontID: DWORD); procedure g_Menu_AskLanguage(); procedure g_Menu_Show_SaveMenu(); -procedure g_Menu_Show_LoadMenu(); +procedure g_Menu_Show_LoadMenu(standalone: Boolean=false); procedure g_Menu_Show_GameSetGame(); procedure g_Menu_Show_OptionsVideo(); procedure g_Menu_Show_OptionsSound(); @@ -43,10 +43,10 @@ implementation uses 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_basic, g_console, g_sound, g_gfx, g_player, g_options, g_weapons, e_log, SysUtils, CONFIG, g_playermodel, DateUtils, - MAPSTRUCT, wadreader, Math, g_saveload, - e_textures, GL, GLExt, g_language, + MAPDEF, wadreader, Math, g_saveload, + e_texture, GL, GLExt, g_language, g_net, g_netmsg, g_netmaster, g_items, e_input; @@ -192,7 +192,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP1MenuWeapons').GetControl('mOptionsControlsP1MenuWeapons')); with menu, gGameControls.P1Control do begin - for i := 0 to 9 do + 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; @@ -228,7 +228,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP2MenuWeapons').GetControl('mOptionsControlsP2MenuWeapons')); with menu, gGameControls.P2Control do begin - for i := 0 to 9 do + 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; @@ -374,7 +374,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP1MenuWeapons').GetControl('mOptionsControlsP1MenuWeapons')); with menu, gGameControls.P1Control do begin - for i := 0 to 9 do + 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]; @@ -410,7 +410,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsControlsP2MenuWeapons').GetControl('mOptionsControlsP2MenuWeapons')); with menu, gGameControls.P2Control do begin - for i := 0 to 9 do + 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]; @@ -506,20 +506,38 @@ end; procedure ProcSwitchMonstersCustom(Sender: TGUIControl); begin + // don't turn off monsters in DM + { with TGUIMenu(g_ActiveWindow.GetControl('mCustomGameMenu')) do - if TGUISwitch(GetControl('swGameMode')).GetText = _lc[I_MENU_GAME_TYPE_COOP] then + if TGUISwitch(GetControl('swGameMode')).GetText <> _lc[I_MENU_GAME_TYPE_CTF] then TGUISwitch(GetControl('swMonsters')).ItemIndex := 0 else TGUISwitch(GetControl('swMonsters')).ItemIndex := 1; + } + { + if TGUISwitch(GetControl('swGameMode')).GetText = _lc[I_MENU_GAME_TYPE_COOP] then + TGUISwitch(GetControl('swMonsters')).ItemIndex := 0 + else if TGUISwitch(GetControl('swGameMode')).GetText = _lc[I_MENU_GAME_TYPE_CTF] then + TGUISwitch(GetControl('swMonsters')).ItemIndex := 1; + } end; procedure ProcSwitchMonstersNet(Sender: TGUIControl); begin + // don't turn off monsters in DM + { with TGUIMenu(g_ActiveWindow.GetControl('mNetServerMenu')) do - if TGUISwitch(GetControl('swGameMode')).GetText = _lc[I_MENU_GAME_TYPE_COOP] then + if TGUISwitch(GetControl('swGameMode')).GetText <> _lc[I_MENU_GAME_TYPE_CTF] then TGUISwitch(GetControl('swMonsters')).ItemIndex := 0 else TGUISwitch(GetControl('swMonsters')).ItemIndex := 1; + } + { + if TGUISwitch(GetControl('swGameMode')).GetText = _lc[I_MENU_GAME_TYPE_COOP] then + TGUISwitch(GetControl('swMonsters')).ItemIndex := 0 + else if TGUISwitch(GetControl('swGameMode')).GetText = _lc[I_MENU_GAME_TYPE_CTF] then + TGUISwitch(GetControl('swMonsters')).ItemIndex := 1; + } end; procedure ProcStartCustomGame(); @@ -1124,12 +1142,12 @@ end; procedure ProcSingle1Player(); begin - g_Game_StartSingle('megawads/DOOM2D.WAD:\MAP01', False, 1); + g_Game_StartSingle(gDefaultMegawadStart, False, 1); end; procedure ProcSingle2Players(); begin - g_Game_StartSingle('megawads/DOOM2D.WAD:\MAP01', True, 2); + g_Game_StartSingle(gDefaultMegawadStart, True, 2); end; procedure ProcSelectMapMenu(); @@ -1309,8 +1327,8 @@ var begin Enabled := True; if (gGameSettings.GameType = GT_SINGLE) and - ((gPlayer1 = nil) or (not gPlayer1.Live)) and - ((gPlayer2 = nil) or (not gPlayer2.Live)) then + ((gPlayer1 = nil) or (not gPlayer1.alive)) and + ((gPlayer2 = nil) or (not gPlayer2.alive)) then Enabled := False; // Îäèí èç èãðîêîâ ïîãèá â ñèíãëå if not gGameOn then Enabled := False; // Çàïðåòèòü ñîõðàíåíèå â èíòåðìèññèè (íå ðåàëèçîâàíî) @@ -2663,7 +2681,7 @@ begin with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_PLAYER_1_WEAPONS]))) do begin Name := 'mOptionsControlsP1MenuWeapons'; - for i := 0 to 9 do + for i := WP_FIRST to WP_LAST do AddKeyRead2(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)]).Name := _lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)]; end; @@ -2692,7 +2710,7 @@ begin with TGUIMenu(Menu.AddChild(TGUIMenu.Create(gMenuFont, gMenuSmallFont, _lc[I_MENU_PLAYER_2_WEAPONS]))) do begin Name := 'mOptionsControlsP2MenuWeapons'; - for i := 0 to 9 do + for i := WP_FIRST to WP_LAST do AddKeyRead2(_lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)]).Name := _lc[TStrings_Locale(Cardinal(I_GAME_WEAPON0) + i)]; end; @@ -3070,19 +3088,18 @@ begin g_Sound_PlayEx('MENU_OPEN'); end; -procedure g_Menu_Show_LoadMenu(); +procedure g_Menu_Show_LoadMenu (standalone: Boolean=false); begin + if (g_ActiveWindow <> nil) and (g_ActiveWindow.name = 'LoadMenu') then exit; // nothing to do if gGameSettings.GameType = GT_SINGLE then - g_GUI_ShowWindow('GameSingleMenu') + begin + if not standalone then g_GUI_ShowWindow('GameSingleMenu') + end else begin - if g_Game_IsClient then - Exit - else - if g_Game_IsNet then - Exit - else - g_GUI_ShowWindow('GameCustomMenu'); + if g_Game_IsClient then exit; + if g_Game_IsNet then exit; + if not standalone then g_GUI_ShowWindow('GameCustomMenu'); end; g_GUI_ShowWindow('LoadMenu'); g_Sound_PlayEx('MENU_OPEN');