X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_game.pas;h=3f56489a15cc2caecb77bd8a3a0441fbb103a93a;hb=44103c4d02f0720ffd6fa801e2d2b09f596d6b6e;hp=302b952af4b10f88b81c89e2537faf706921b2b9;hpb=923fa980434e55419f35422119af2faae2bf68d7;p=d2df-sdl.git diff --git a/src/game/g_game.pas b/src/game/g_game.pas index 302b952..3f56489 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -70,7 +70,7 @@ function g_Game_IsNet(): Boolean; 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(); @@ -95,7 +95,7 @@ procedure g_Game_RestartLevel(); 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; @@ -324,7 +324,7 @@ var g_rlayer_water: Boolean = true; g_rlayer_fore: Boolean = true; - g_dbg_scale_05: Boolean = false; + g_dbg_scale: Single = 1.0; procedure g_ResetDynlights (); @@ -1299,12 +1299,12 @@ begin 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(); @@ -2796,9 +2796,9 @@ begin profileFrameDraw.sectionBegin('collect'); if gdbg_map_use_accel_render then begin - if g_dbg_scale_05 then + if (g_dbg_scale <> 1.0) then begin - g_Map_CollectDrawPanels(sX, sY, sWidth*2, sHeight*2); + g_Map_CollectDrawPanels(sX, sY, round(sWidth/g_dbg_scale)+1, round(sHeight/g_dbg_scale)+1); end else begin @@ -2811,17 +2811,10 @@ begin g_Map_DrawBack(backXOfs, backYOfs); profileFrameDraw.sectionEnd(); - if (setTransMatrix) then + if setTransMatrix then begin - if g_dbg_scale_05 then - begin - glScalef(0.5, 0.5, 1.0); - glTranslatef(transX, transY, 0); - end - else - begin - glTranslatef(transX, transY, 0); - end; + glScalef(g_dbg_scale, g_dbg_scale, 1.0); + glTranslatef(transX, transY, 0); end; drawPanelType('*back', PANEL_BACK, g_rlayer_back); @@ -3990,7 +3983,7 @@ begin end; end; - ProcessLoading(); + ProcessLoading(true); e_PollInput(); @@ -4050,15 +4043,15 @@ begin 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 @@ -6758,7 +6751,7 @@ begin g_ActiveWindow := nil; - ProcessLoading; + ProcessLoading(true); end; procedure g_Game_StepLoading(); @@ -6770,7 +6763,7 @@ begin if (ShowCount > LOADING_SHOW_STEP) then begin ShowCount := 0; - ProcessLoading; + ProcessLoading(); end; end; end; @@ -7033,5 +7026,5 @@ begin conRegVar('dbg_holmes', @g_holmes_enabled, 'enable/disable Holmes', 'Holmes', true); - conRegVar('dbg_scale_half', @g_dbg_scale_05, 'experimental deBUG scale*0.5 mode', 'Scale0.5', true); + conRegVar('dbg_scale', @g_dbg_scale, 0.01, 5.0, 'experimental deBUG scale mode', '', true); end.