diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index daec002afce309a4120acfbfcb4c574e38689d30..b0f64563e8cfd2ecb1a3ad1ef39aaebde48a7469 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
function g_Game_GetNextMap(): String;
procedure g_Game_NextLevel();
procedure g_Game_Pause(Enable: Boolean);
+procedure g_Game_HolmesPause(Enable: Boolean);
procedure g_Game_InGameMenu(Show: Boolean);
function g_Game_IsWatchedPlayer(UID: Word): Boolean;
function g_Game_IsWatchedTeam(Team: Byte): Boolean;
gServInterTime: Byte = 0;
gGameStartTime: LongWord = 0;
gTotalMonsters: Integer = 0;
- gPause: Boolean;
+ gPauseMain: Boolean = false;
+ gPauseHolmes: Boolean = false;
gShowTime: Boolean = True;
gShowFPS: Boolean = False;
gShowGoals: Boolean = True;
procedure g_AddDynLight (x, y, radius: Integer; r, g, b, a: Single);
procedure g_DynLightExplosion (x, y, radius: Integer; r, g, b: Single);
-function conIsCheatsEnabled (): Boolean;
+function conIsCheatsEnabled (): Boolean; inline;
+function gPause (): Boolean; inline;
implementation
// ////////////////////////////////////////////////////////////////////////// //
-function conIsCheatsEnabled (): Boolean;
+function gPause (): Boolean; inline; begin result := gPauseMain or gPauseHolmes; end;
+
+
+// ////////////////////////////////////////////////////////////////////////// //
+function conIsCheatsEnabled (): Boolean; inline;
begin
result := false;
- if (not gGameOn) or (not gCheats) or ((gGameSettings.GameType <> GT_SINGLE) and
- (gGameSettings.GameMode <> GM_COOP) and (not gDebugMode)) or g_Game_IsNet then exit;
+ if g_Game_IsNet then exit;
+ if not gDebugMode then
+ begin
+ if not gCheats then exit;
+ if not (gGameSettings.GameType in [GT_SINGLE, GT_CUSTOM]) then exit;
+ if (gGameSettings.GameMode <> GM_COOP) then exit;
+ end;
result := true;
end;
MH_SEND_GameEvent(NET_EV_MAPEND, Byte(gMissionFailed));
// Ñòîï èãðà:
- gPause := False;
- gGameOn := False;
+ gPauseMain := false;
+ gPauseHolmes := false;
+ gGameOn := false;
g_Game_StopAllSounds(False);
until FindNext(SR) <> 0;
FindClose(SR);
- gGameOn := False;
- gPause := False;
+ gGameOn := false;
+ gPauseMain := false;
+ gPauseHolmes := false;
gTime := 0;
LastScreenShot := 0;
end;
end;
- if gPause and gGameOn and (g_ActiveWindow = nil) then
+ if gPauseMain and gGameOn and (g_ActiveWindow = nil) then
begin
//e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
end;
gExit := 0;
- gPause := False;
+ gPauseMain := false;
+ gPauseHolmes := false;
gTime := 0;
NetTimeToUpdate := 1;
NetTimeToReliable := 0;
else if cmd = 'pause' then
begin
if (g_ActiveWindow = nil) then
- g_Game_Pause(not gPause);
+ g_Game_Pause(not gPauseMain);
end
else if cmd = 'endgame' then
gExit := EXIT_SIMPLE
end;
end;
-procedure g_Game_Pause(Enable: Boolean);
+procedure g_Game_Pause (Enable: Boolean);
+var
+ oldPause: Boolean;
begin
- if not gGameOn then
- Exit;
+ if not gGameOn then exit;
- if gPause = Enable then
- Exit;
+ if not (gGameSettings.GameType in [GT_SINGLE, GT_CUSTOM]) then exit;
- if not (gGameSettings.GameType in [GT_SINGLE, GT_CUSTOM]) then
- Exit;
+ oldPause := gPause;
+ gPauseMain := Enable;
+
+ if (gPause <> oldPause) then g_Game_PauseAllSounds(gPause);
+end;
+
+procedure g_Game_HolmesPause (Enable: Boolean);
+var
+ oldPause: Boolean;
+begin
+ if not gGameOn then exit;
+ if not (gGameSettings.GameType in [GT_SINGLE, GT_CUSTOM]) then exit;
+
+ oldPause := gPause;
+ gPauseHolmes := Enable;
- gPause := Enable;
- g_Game_PauseAllSounds(Enable);
+ if (gPause <> oldPause) then g_Game_PauseAllSounds(gPause);
end;
procedure g_Game_PauseAllSounds(Enable: Boolean);