DEADSOFTWARE

render: hide panel textures into render
[d2df-sdl.git] / src / game / g_game.pas
index f7aed54523e41c6a4f133426fdd73404165a2746..48b713c6a645f0a2fd997e839636f9bfcbf933ba 100644 (file)
@@ -87,7 +87,6 @@ procedure g_Game_Update();
 procedure g_Game_PreUpdate();
 procedure g_Game_Quit();
 procedure g_Game_SetupScreenSize();
-procedure g_Game_ChangeResolution(newWidth, newHeight: Word; nowFull, nowMax: Boolean);
 function  g_Game_ModeToText(Mode: Byte): string;
 function  g_Game_TextToMode(Mode: string): Byte;
 procedure g_Game_ExecuteEvent(Name: String);
@@ -440,7 +439,7 @@ uses
 {$IFDEF ENABLE_HOLMES}
   g_holmes,
 {$ENDIF}
-  e_res, g_textures, g_window, g_menu,
+  e_res, g_window, g_menu, r_render, r_textures, r_animations, r_gfx, r_map,
   e_input, e_log, g_console, r_console, g_items, g_map, g_panel,
   g_playermodel, g_gfx, g_options, Math,
   g_triggers, g_monsters, e_sound, CONFIG,
@@ -1262,7 +1261,7 @@ begin
   gDelayedEvents[n].DENum := Num;
   gDelayedEvents[n].DEStr := Str;
   if DEType = DE_GLOBEVENT then
-    gDelayedEvents[n].Time := (sys_GetTicks() {div 1000}) + Time
+    gDelayedEvents[n].Time := (GetTickCount64() {div 1000}) + Time
   else
     gDelayedEvents[n].Time := gTime + Time;
   Result := n;
@@ -1440,12 +1439,6 @@ begin
 end;
 
 procedure g_Game_Init();
-var
-  SR: TSearchRec;
-  knownFiles: array of AnsiString = nil;
-  found: Boolean;
-  wext, s: AnsiString;
-  f: Integer;
 begin
   gExit := 0;
   gMapToDelete := '';
@@ -1467,49 +1460,7 @@ begin
     g_Game_SetLoadingText(Format('Doom 2D: Forever %s', [GAME_VERSION]), 0, False);
     g_Game_SetLoadingText('', 0, False);
 
-    g_Game_SetLoadingText(_lc[I_LOAD_CONSOLE], 0, False);
-    r_Console_Init;
-    g_Console_Init();
-
-    g_Game_SetLoadingText(_lc[I_LOAD_MODELS], 0, False);
-    r_PlayerModel_Initialize;
-
-    // load models from all possible wad types, in all known directories
-    // this does a loosy job (linear search, ooph!), but meh
-    for wext in wadExtensions do
-    begin
-      for f := High(ModelDirs) downto Low(ModelDirs) do
-      begin
-        if (FindFirst(ModelDirs[f]+DirectorySeparator+'*'+wext, faAnyFile, SR) = 0) then
-        begin
-          repeat
-            found := false;
-            for s in knownFiles do
-            begin
-              if (strEquCI1251(forceFilenameExt(SR.Name, ''), forceFilenameExt(ExtractFileName(s), ''))) then
-              begin
-                found := true;
-                break;
-              end;
-            end;
-            if not found then
-            begin
-              SetLength(knownFiles, length(knownFiles)+1);
-              knownFiles[High(knownFiles)] := ModelDirs[f]+DirectorySeparator+SR.Name;
-            end;
-          until (FindNext(SR) <> 0);
-        end;
-        FindClose(SR);
-      end;
-    end;
-
-    if (length(knownFiles) = 0) then raise Exception.Create('no player models found!');
-
-    if (length(knownFiles) = 1) then e_LogWriteln('1 player model found.', TMsgType.Notify) else e_LogWritefln('%d player models found.', [Integer(length(knownFiles))], TMsgType.Notify);
-    for s in knownFiles do
-    begin
-      if not g_PlayerModel_Load(s) then e_LogWritefln('Error loading model "%s"', [s], TMsgType.Warning);
-    end;
+//    g_Game_SetLoadingText(_lc[I_LOAD_MODELS], 0, False);
 
     gGameOn := false;
     gPauseMain := false;
@@ -1527,11 +1478,6 @@ begin
     g_Sound_CreateWADEx('MUSIC_ROUNDMUS', GameWAD+':MUSIC\ROUNDMUS', True, True);
     g_Sound_CreateWADEx('MUSIC_STDENDMUS', GameWAD+':MUSIC\ENDMUS', True);
 
-{$IFNDEF HEADLESS}
-    g_Game_SetLoadingText(_lc[I_LOAD_MENUS], 0, False);
-    g_Menu_Init();
-{$ENDIF}
-
     gMusic := TMusic.Create();
     gMusic.SetByName('MUSIC_MENU');
     gMusic.Play();
@@ -2246,6 +2192,7 @@ begin
     g_Weapon_Update();
     g_Monsters_Update();
     g_GFX_Update();
+    r_GFX_Update;
     g_Player_UpdateAll();
     g_Player_UpdatePhysicalObjects();
 
@@ -2345,7 +2292,7 @@ begin
     if gResolutionChange then
     begin
       e_WriteLog('Changing resolution', TMsgType.Notify);
-      g_Game_ChangeResolution(gRC_Width, gRC_Height, gRC_FullScreen, gRC_Maximized);
+      r_Render_Apply;
       gResolutionChange := False;
       g_ActiveWindow := nil;
     end;
@@ -2372,7 +2319,7 @@ begin
     KeyPress(IK_F10);
   end;
 
-  Time := sys_GetTicks() {div 1000};
+  Time := GetTickCount64() {div 1000};
 
 // Обработка отложенных событий:
   if gDelayedEvents <> nil then
@@ -2525,7 +2472,6 @@ begin
     end;
   end;
 
-  g_Frames_CreateWAD(nil, 'FRAMES_TELEPORT', GameWAD+':TEXTURES\TELEPORT', 64, 64, 10, False);
   g_Frames_CreateWAD(nil, 'FRAMES_PUNCH', GameWAD+':WEAPONS\PUNCH', 64, 64, 4, False);
   g_Frames_CreateWAD(nil, 'FRAMES_PUNCH_UP', GameWAD+':WEAPONS\PUNCH_UP', 64, 64, 4, False);
   g_Frames_CreateWAD(nil, 'FRAMES_PUNCH_DN', GameWAD+':WEAPONS\PUNCH_DN', 64, 64, 4, False);
@@ -2629,7 +2575,6 @@ begin
   g_Game_StopAllSounds(True);
   gMusic.Free();
   g_Game_FreeData();
-  r_PlayerModel_Finalize;
   g_PlayerModel_FreeData();
   g_Texture_DeleteAll();
   g_Frames_DeleteAll();
@@ -2669,7 +2614,6 @@ begin
   g_Texture_Delete('TEXTURE_PLAYER_BLUEFLAG_D');
   g_Texture_Delete('TEXTURE_PLAYER_TALKBUBBLE');
   g_Texture_Delete('TEXTURE_PLAYER_INVULPENTA');
-  g_Frames_DeleteByName('FRAMES_TELEPORT');
   g_Frames_DeleteByName('FRAMES_PUNCH');
   g_Frames_DeleteByName('FRAMES_PUNCH_UP');
   g_Frames_DeleteByName('FRAMES_PUNCH_DN');
@@ -2794,11 +2738,6 @@ begin
   end;
 end;
 
-procedure g_Game_ChangeResolution(newWidth, newHeight: Word; nowFull, nowMax: Boolean);
-begin
-  sys_SetDisplayMode(newWidth, newHeight, gBPP, nowFull, nowMax);
-end;
-
 procedure g_Game_AddPlayer(Team: Byte = TEAM_NONE);
 begin
   if ((not gGameOn) and (gState <> STATE_INTERCUSTOM))
@@ -3533,6 +3472,7 @@ begin
   begin
     //result := g_Map_Load(gGameSettings.WAD + ':\' + ResName);
     result := g_Map_Load(NewWAD+':\'+ResName);
+    r_Map_LoadTextures;
   end;
   if Result then
     begin
@@ -5940,16 +5880,7 @@ begin
         g_Game_Quit();
       end;
     'r_reset':
-      begin
-        gRC_Width := Max(1, gRC_Width);
-        gRC_Height := Max(1, gRC_Height);
-        gBPP := Max(1, gBPP);
-        if sys_SetDisplayMode(gRC_Width, gRC_Height, gBPP, gRC_FullScreen, gRC_Maximized) = True then
-          e_LogWriteln('resolution changed')
-        else
-          e_LogWriteln('resolution not changed');
-        sys_EnableVSync(gVSync);
-      end;
+       r_Render_Apply;
     'r_maxfps':
       begin
         if Length(p) = 2 then