DEADSOFTWARE

render: draw menu via render
[d2df-sdl.git] / src / game / opengl / r_game.pas
index 75c3e2ee5e505cc63edb64cbb0622740f13fcf1d..daa4ca7b97ef2be485b0709597780f774b13a888 100644 (file)
@@ -42,16 +42,24 @@ implementation
       g_holmes,
     {$ENDIF}
     {$IFDEF ENABLE_MENU}
-      g_gui, g_menu,
+      g_gui, g_menu, r_gui,
+    {$ENDIF}
+    {$IFDEF ENABLE_GFX}
+      g_gfx, r_gfx,
+    {$ENDIF}
+    {$IFDEF ENABLE_CORPSES}
+      g_corpses,
+    {$ENDIF}
+    {$IFDEF ENABLE_SYSTEM}
+      g_system,
     {$ENDIF}
     SysUtils, Classes, Math,
     g_base, g_basic, r_graphics,
-    g_system, g_touch,
     MAPDEF, xprofiler, utils, wadreader, CONFIG,
     e_input, e_sound,
     g_language, g_console, g_triggers, g_player, g_options, g_monsters, g_map, g_panel,
-    g_items, g_weapons, g_gfx, g_phys, g_net, g_netmaster,
-    g_game, r_console, r_gfx, r_items, r_map, r_monsters, r_weapons, r_netmaster, r_player, r_textures,
+    g_items, g_weapons, g_phys, g_net, g_netmaster,
+    g_game, r_console, r_items, r_map, r_monsters, r_weapons, r_netmaster, r_player, r_textures,
     r_playermodel
   ;
 
@@ -204,6 +212,8 @@ end;
 
   procedure r_Game_Free;
   begin
+    e_CharFont_Remove(gMenuFont);
+    e_CharFont_Remove(gMenuSmallFont);
     g_Texture_Delete('NOTEXTURE');
     g_Texture_Delete('TEXTURE_PLAYER_HUD');
     g_Texture_Delete('TEXTURE_PLAYER_HUDBG');
@@ -569,7 +579,9 @@ var
 begin
   e_TextureFontGetSize(gStdFont, ww2, hh2);
 
-  sys_HandleInput;
+  {$IFDEF ENABLE_SYSTEM}
+    sys_HandleInput;
+  {$ENDIF}
 
   if g_Console_Action(ACTION_SCORES) then
   begin
@@ -800,9 +812,7 @@ begin
   // HACK: take stats screenshot immediately after the first frame of the stats showing
   if gScreenshotStats and (not StatShotDone) and (Length(CustomStat.PlayerStat) > 1) then
   begin
-{$IFNDEF HEADLESS}
     g_TakeScreenShot('stats/' + StatFilename);
-{$ENDIF}
     StatShotDone := True;
   end;
 end;
@@ -1544,15 +1554,23 @@ begin
   drawPanelType('*step', PANEL_STEP, g_rlayer_step);
   drawOther('items', @r_Items_Draw);
   drawOther('weapons', @r_Weapon_Draw);
-  drawOther('shells', @r_Player_DrawShells);
+  {$IFDEF ENABLE_SHELLS}
+    drawOther('shells', @r_Player_DrawShells);
+  {$ENDIF}
   drawOther('drawall', @r_Player_DrawAll);
-  drawOther('gibs', @r_PlayerModel_DrawGibs);
-  drawOther('corpses', @r_Player_DrawCorpses);
+  {$IFDEF ENABLE_GIBS}
+    drawOther('gibs', @r_PlayerModel_DrawGibs);
+  {$ENDIF}
+  {$IFDEF ENABLE_CORPSES}
+    drawOther('corpses', @r_Player_DrawCorpses);
+  {$ENDIF}
   drawPanelType('*wall', PANEL_WALL, g_rlayer_wall);
   drawOther('monsters', @r_Monsters_Draw);
   drawOther('itemdrop', @r_Items_DrawDrop);
   drawPanelType('*door', PANEL_CLOSEDOOR, g_rlayer_door);
-  drawOther('gfx', @r_GFX_Draw);
+  {$IFDEF ENABLE_GFX}
+    drawOther('gfx', @r_GFX_Draw);
+  {$ENDIF}
   drawOther('flags', @r_Map_DrawFlags);
   drawPanelType('*acid1', PANEL_ACID1, g_rlayer_acid1);
   drawPanelType('*acid2', PANEL_ACID2, g_rlayer_acid2);
@@ -1621,7 +1639,12 @@ begin
 
   glPushMatrix();
 
-  camObj := p.getCameraObj();
+  {$IFDEF ENABLE_CORPSES}
+    camObj := g_Corpses_GetCameraObj(p);
+  {$ELSE}
+    camObj := p.Obj;
+  {$ENDIF}
+
   camObj.lerp(gLerpFactor, fX, fY);
   px := fX + PLAYER_RECT_CX;
   py := fY + PLAYER_RECT_CY+nlerp(p.SlopeOld, camObj.slopeUpLeft, gLerpFactor);
@@ -2143,13 +2166,11 @@ begin
       //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
       e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
     end;
-    g_ActiveWindow.Draw();
+    r_GUI_Draw_Window(g_ActiveWindow);
   end;
 {$ENDIF}
 
-{$IFNDEF HEADLESS}
   r_Console_Draw();
-{$ENDIF}
 
   if g_debug_Sounds and gGameOn then
   begin
@@ -2180,10 +2201,6 @@ begin
   e_SetRendertarget(False);
   e_SetViewPort(0, 0, gWinSizeX, gWinSizeY);
   e_BlitFramebuffer(gWinSizeX, gWinSizeY);
-
-  // draw the overlay stuff on top of it
-
-  g_Touch_Draw;
 end;
 
 end.