DEADSOFTWARE

render: separate animation drawing from game code
[d2df-sdl.git] / src / game / opengl / r_player.pas
index 25a2dd7bfe6ea22e51efe94dc9a5ecc84bc3d286..32e7ca871dc1b279f36f4f8a308784a031449d5b 100644 (file)
@@ -17,7 +17,7 @@ unit r_player;
 
 interface
 
-  uses g_player, e_graphics; // TPlayer, TRGB
+  uses g_player, g_base; // TPlayer, TRGB
 
   procedure r_Player_DrawAll;
   procedure r_Player_DrawDebug (p: TPlayer);
@@ -43,7 +43,10 @@ implementation
     SysUtils, Classes, Math,
     MAPDEF, utils,
     g_basic, g_game, g_phys, g_map, g_textures, g_menu, g_language, g_weapons, g_items, g_net, g_options,
-    r_playermodel
+{$IFDEF ENABLE_HOLMES}
+    g_holmes,
+{$ENDIF}
+    r_playermodel, r_graphics, r_animations
   ;
 
   procedure r_Player_DrawAll;
@@ -328,7 +331,7 @@ begin
 
     if p.PunchAnim <> nil then
     begin
-      p.PunchAnim.Draw(fX + IfThen(p.Direction = TDirection.D_LEFT, 15 - p.Obj.Rect.X, p.Obj.Rect.X - 15), fY + fSlope + p.Obj.Rect.Y - 11, Mirror);
+      r_Animation_Draw(p.PunchAnim, fX + IfThen(p.Direction = TDirection.D_LEFT, 15 - p.Obj.Rect.X, p.Obj.Rect.X - 15), fY + fSlope + p.Obj.Rect.Y - 11, Mirror);
       if p.PunchAnim.played then
       begin
         p.PunchAnim.Free;
@@ -396,7 +399,7 @@ procedure r_Player_DrawAim (p: TPlayer);
   begin
 
 {$IFDEF ENABLE_HOLMES}
-    if isValidViewPort and (self = gPlayer1) then
+    if p.isValidViewPort() and (p = gPlayer1) then
     begin
       g_Holmes_plrLaser(ax0, ay0, ax1, ay1);
     end;
@@ -792,12 +795,12 @@ begin
   p.Obj.lerp(gLerpFactor, fX, fY);
 
   if p.Animation <> nil then
-    p.Animation.Draw(fX, fY, TMirrorType.None);
+    r_Animation_Draw(p.Animation, fX, fY, TMirrorType.None);
 
   if p.AnimationMask <> nil then
   begin
     e_Colors := p.Color;
-    p.AnimationMask.Draw(fX, fY, TMirrorType.None);
+    r_Animation_Draw(p.AnimationMask, fX, fY, TMirrorType.None);
     e_Colors.R := 255;
     e_Colors.G := 255;
     e_Colors.B := 255;