diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index 302b952af4b10f88b81c89e2537faf706921b2b9..a7f5a48d198af886852aae7361f3972b88fa39b9 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
function g_Game_IsServer(): Boolean;
function g_Game_IsClient(): Boolean;
procedure g_Game_Init();
-procedure g_Game_Free();
+procedure g_Game_Free (freeTextures: Boolean=true);
procedure g_Game_LoadData();
procedure g_Game_FreeData();
procedure g_Game_Update();
procedure g_Game_RestartRound(NoMapRestart: Boolean = False);
procedure g_Game_ClientWAD(NewWAD: String; WHash: TMD5Digest);
procedure g_Game_SaveOptions();
-function g_Game_StartMap(Map: String; Force: Boolean = False): Boolean;
+function g_Game_StartMap(Map: String; Force: Boolean = False; const oldMapPath: AnsiString=''): Boolean;
procedure g_Game_ChangeMap(MapPath: String);
procedure g_Game_ExitLevel(Map: Char16);
function g_Game_GetFirstMap(WAD: String): String;
end;
end;
-procedure g_Game_Free();
+procedure g_Game_Free(freeTextures: Boolean=true);
begin
if NetMode = NET_CLIENT then g_Net_Disconnect();
if NetMode = NET_SERVER then g_Net_Host_Die();
- g_Map_Free();
+ g_Map_Free(freeTextures);
g_Player_Free();
g_Player_RemoveAllCorpses();
end;
end;
- ProcessLoading();
+ ProcessLoading(true);
e_PollInput();
MessageTime := 0;
gGameOn := False;
g_Game_ClearLoading();
- g_Game_StartMap(Map, True);
+ g_Game_StartMap(Map, True, gCurrentMapFileName);
end;
-function g_Game_StartMap(Map: String; Force: Boolean = False): Boolean;
+function g_Game_StartMap(Map: String; Force: Boolean = False; const oldMapPath: AnsiString=''): Boolean;
var
NewWAD, ResName: String;
I: Integer;
begin
- g_Map_Free();
+ g_Map_Free((Map <> gCurrentMapFileName) and (oldMapPath <> gCurrentMapFileName));
g_Player_RemoveAllCorpses();
if (not g_Game_IsClient) and
g_ActiveWindow := nil;
- ProcessLoading;
+ ProcessLoading(true);
end;
procedure g_Game_StepLoading();
if (ShowCount > LOADING_SHOW_STEP) then
begin
ShowCount := 0;
- ProcessLoading;
+ ProcessLoading();
end;
end;
end;