diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas
index 60750aa8aa5b133a4f4441624e7f5821f63deaad..1af1a57336430d661b07faba3e378fb16d34bc2c 100644 (file)
--- a/src/game/g_menu.pas
+++ b/src/game/g_menu.pas
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();
e_log, SysUtils, CONFIG, g_playermodel, DateUtils,
MAPDEF, wadreader, Math, g_saveload,
e_texture, GL, GLExt, g_language,
- g_net, g_netmsg, g_netmaster, g_items, e_input;
+ g_net, g_netmsg, g_netmaster, g_items, e_input,
+ utils;
type TYNCallback = procedure (yes:Boolean);
procedure ProcSwitchMonstersCustom(Sender: TGUIControl);
begin
- // don't turn off monsters in DM
+ // don't turn off monsters in DM
+ {
with TGUIMenu(g_ActiveWindow.GetControl('mCustomGameMenu')) do
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
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_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
Map := TGUILabel(GetControl('lbMap')).Text;
if Map = '' then
Exit;
- if Pos(':\', Map) = 0 then
+ if not isWadPath(Map) then
Exit;
GameMode := TGUISwitch(GetControl('swGameMode')).ItemIndex+1;
Map := TGUILabel(GetControl('lbMap')).Text;
if Map = '' then
Exit;
- if Pos(':\', Map) = 0 then
+ if not isWadPath(Map) then
Exit;
GameMode := TGUISwitch(GetControl('swGameMode')).ItemIndex+1;
procedure ProcLoadMenu();
var
a: Integer;
+ valid: Boolean;
begin
for a := 1 to 8 do
- TGUIEdit(TGUIMenu(g_GUI_GetWindow('LoadMenu').GetControl('mmLoadMenu')).GetControl('edSlot'+IntToStr(a))).Text :=
- g_GetSaveName(a);
+ begin
+ TGUIEdit(TGUIMenu(g_GUI_GetWindow('LoadMenu').GetControl('mmLoadMenu')).GetControl('edSlot'+IntToStr(a))).Text := g_GetSaveName(a, valid);
+ TGUIEdit(TGUIMenu(g_GUI_GetWindow('LoadMenu').GetControl('mmLoadMenu')).GetControl('edSlot'+IntToStr(a))).Invalid := not valid;
+ TGUIMenu(g_GUI_GetWindow('LoadMenu').GetControl('mmLoadMenu')).GetControl('edSlot'+IntToStr(a)).Enabled := valid;
+ end;
end;
procedure ProcSaveMenu();
var
a: Integer;
+ valid: Boolean;
begin
for a := 1 to 8 do
- TGUIEdit(TGUIMenu(g_GUI_GetWindow('SaveMenu').GetControl('mmSaveMenu')).GetControl('edSlot'+IntToStr(a))).Text :=
- g_GetSaveName(a);
+ begin
+ TGUIEdit(TGUIMenu(g_GUI_GetWindow('SaveMenu').GetControl('mmSaveMenu')).GetControl('edSlot'+IntToStr(a))).Text := g_GetSaveName(a, valid);
+ TGUIEdit(TGUIMenu(g_GUI_GetWindow('SaveMenu').GetControl('mmSaveMenu')).GetControl('edSlot'+IntToStr(a))).Invalid := not valid;
+ end;
end;
procedure ProcSaveGame(Sender: TGUIControl);
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; // Çàïðåòèòü ñîõðàíåíèå â èíòåðìèññèè (íå ðåàëèçîâàíî)
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');