DEADSOFTWARE

render: move textures loaders to render
[d2df-sdl.git] / src / game / g_weapons.pas
index 6e65496ee606b7b1a207c95905ee72042be409f2..44d6a932ad94b7ddc1a22249f2fce0d7a5fdafe5 100644 (file)
@@ -20,7 +20,7 @@ interface
 
 uses
   SysUtils, Classes, mempool,
-  g_textures, g_basic, e_graphics, g_phys, xprofiler;
+  g_textures, g_basic, g_phys, xprofiler;
 
 
 type
@@ -74,7 +74,6 @@ function g_Weapon_Explode(X, Y: Integer; rad: Integer; SpawnerUID: Word): Boolea
 procedure g_Weapon_BFG9000(X, Y: Integer; SpawnerUID: Word);
 procedure g_Weapon_PreUpdate();
 procedure g_Weapon_Update();
-procedure g_Weapon_Draw();
 function g_Weapon_Danger(UID: Word; X, Y: Integer; Width, Height: Word; Time: Byte): Boolean;
 procedure g_Weapon_DestroyShot(I: Integer; X, Y: Integer; Loud: Boolean = True);
 
@@ -114,8 +113,8 @@ var
 implementation
 
 uses
-  Math, g_map, g_player, g_gfx, g_sound, g_main, g_panel,
-  g_console, g_options, g_game,
+  Math, g_map, g_player, g_gfx, g_sound, g_panel,
+  g_console, g_options, g_game, r_textures, r_animations,
   g_triggers, MAPDEF, e_log, g_monsters, g_saveload,
   g_language, g_netmsg, g_grid,
   geom, binheap, hashtable, utils, xstreams;
@@ -2277,19 +2276,20 @@ begin
 
           // Â âîäå øëåéô - ïóçûðè, â âîçäóõå øëåéô - äûì:
             if WordBool(st and MOVE_INWATER) then
-              g_GFX_Bubbles(Obj.X+(Obj.Rect.Width div 2),
-                            Obj.Y+(Obj.Rect.Height div 2),
-                            1+Random(3), 16, 16)
-            else
-              if g_Frames_Get(_id, 'FRAMES_SMOKE') then
-              begin
-                Anim := TAnimation.Create(_id, False, 3);
-                Anim.Alpha := 150;
-                g_GFX_OnceAnim(Obj.X-14+Random(9),
-                               Obj.Y+(Obj.Rect.Height div 2)-20+Random(9),
-                               Anim, ONCEANIM_SMOKE);
-                Anim.Free();
-              end;
+            begin
+              g_GFX_Bubbles(cx, cy, 1+Random(3), 16, 16);
+              if Random(2) = 0
+                then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', cx, cy)
+                else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', cx, cy);
+            end
+            else if g_Frames_Get(_id, 'FRAMES_SMOKE') then
+            begin
+              Anim := TAnimation.Create(_id, False, 3);
+              Anim.Alpha := 150;
+              g_GFX_OnceAnim(Obj.X-14+Random(9), cy-20+Random(9),
+                             Anim, ONCEANIM_SMOKE);
+              Anim.Free();
+            end;
 
           // Ïîïàëè â êîãî-òî èëè â ñòåíó:
             if WordBool(st and (MOVE_HITWALL or MOVE_HITLAND or MOVE_HITCEIL)) or
@@ -2412,7 +2412,12 @@ begin
                 end;
               end
               else
+              begin
                 g_GFX_Bubbles(cx, cy, 1+Random(3), 16, 16);
+                if Random(2) = 0
+                  then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', cx, cy)
+                  else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', cx, cy);
+              end;
               ShotType := 0;
               Continue;
             end;
@@ -2589,65 +2594,6 @@ begin
   end;
 end;
 
-procedure g_Weapon_Draw();
-var
-  i, fX, fY: Integer;
-  a: SmallInt;
-  p: TDFPoint;
-begin
-  if Shots = nil then
-    Exit;
-
-  for i := 0 to High(Shots) do
-    if Shots[i].ShotType <> 0 then
-      with Shots[i] do
-      begin
-        if (Shots[i].ShotType = WEAPON_ROCKETLAUNCHER) or
-           (Shots[i].ShotType = WEAPON_BARON_FIRE) or
-           (Shots[i].ShotType = WEAPON_MANCUB_FIRE) or
-           (Shots[i].ShotType = WEAPON_SKEL_FIRE) then
-          a := -GetAngle2(Obj.Vel.X, Obj.Vel.Y)
-        else
-          a := 0;
-
-        Obj.lerp(gLerpFactor, fX, fY);
-        p.X := Obj.Rect.Width div 2;
-        p.Y := Obj.Rect.Height div 2;
-
-        if Shots[i].ShotType = WEAPON_BFG then
-        begin
-          DEC(fX, 6);
-          DEC(fY, 7);
-        end;
-
-        if Animation <> nil then
-          begin
-            if (Shots[i].ShotType = WEAPON_BARON_FIRE) or
-               (Shots[i].ShotType = WEAPON_MANCUB_FIRE) or
-               (Shots[i].ShotType = WEAPON_SKEL_FIRE) then
-              Animation.DrawEx(fX, fY, TMirrorType.None, p, a)
-            else
-              Animation.Draw(fX, fY, TMirrorType.None);
-          end
-        else if TextureID <> 0 then
-          begin
-            if (Shots[i].ShotType = WEAPON_ROCKETLAUNCHER) then
-              e_DrawAdv(TextureID, fX, fY, 0, True, False, a, @p, TMirrorType.None)
-            else if (Shots[i].ShotType <> WEAPON_FLAMETHROWER) then
-              e_Draw(TextureID, fX, fY, 0, True, False);
-          end;
-
-          if g_debug_Frames then
-          begin
-            e_DrawQuad(Obj.X+Obj.Rect.X,
-                       Obj.Y+Obj.Rect.Y,
-                       Obj.X+Obj.Rect.X+Obj.Rect.Width-1,
-                       Obj.Y+Obj.Rect.Y+Obj.Rect.Height-1,
-                       0, 255, 0);
-          end;
-      end;
-end;
-
 function g_Weapon_Danger(UID: Word; X, Y: Integer; Width, Height: Word; Time: Byte): Boolean;
 var
   a: Integer;