DEADSOFTWARE

Add sounds for flamethrower
[d2df-sdl.git] / src / game / g_weapons.pas
index 97d127a46519fbf1a9c9589247cd468047e43b8b..5505731729eb497613804cd78aa72d00886d96c8 100644 (file)
@@ -20,7 +20,7 @@ unit g_weapons;
 interface
 
 uses
-  SysUtils, Classes,
+  SysUtils, Classes, mempool,
   g_textures, g_basic, e_graphics, g_phys, xprofiler;
 
 
@@ -1126,6 +1126,9 @@ begin
   g_Sound_CreateWADEx('SOUND_WEAPON_FIREBALL', GameWAD+':SOUNDS\FIREBALL');
   g_Sound_CreateWADEx('SOUND_WEAPON_EXPLODEBALL', GameWAD+':SOUNDS\EXPLODEBALL');
   g_Sound_CreateWADEx('SOUND_WEAPON_FIREREV', GameWAD+':SOUNDS\FIREREV');
+  g_Sound_CreateWADEx('SOUND_WEAPON_FLAMEON', GameWAD+':SOUNDS\STARTFLM');
+  g_Sound_CreateWADEx('SOUND_WEAPON_FLAMEOFF', GameWAD+':SOUNDS\STOPFLM');
+  g_Sound_CreateWADEx('SOUND_WEAPON_FLAMEWORK', GameWAD+':SOUNDS\WORKFLM');
   g_Sound_CreateWADEx('SOUND_PLAYER_JETFLY', GameWAD+':SOUNDS\WORKJETPACK');
   g_Sound_CreateWADEx('SOUND_PLAYER_JETON', GameWAD+':SOUNDS\STARTJETPACK');
   g_Sound_CreateWADEx('SOUND_PLAYER_JETOFF', GameWAD+':SOUNDS\STOPJETPACK');
@@ -1192,6 +1195,9 @@ begin
   g_Sound_Delete('SOUND_WEAPON_FIREBALL');
   g_Sound_Delete('SOUND_WEAPON_EXPLODEBALL');
   g_Sound_Delete('SOUND_WEAPON_FIREREV');
+  g_Sound_Delete('SOUND_WEAPON_FLAMEON');
+  g_Sound_Delete('SOUND_WEAPON_FLAMEOFF');
+  g_Sound_Delete('SOUND_WEAPON_FLAMEWORK');
   g_Sound_Delete('SOUND_PLAYER_JETFLY');
   g_Sound_Delete('SOUND_PLAYER_JETON');
   g_Sound_Delete('SOUND_PLAYER_JETOFF');
@@ -1440,13 +1446,12 @@ var
     end;
   end;
 
-  function sqchecker (mon: TMonster; tag: Integer): Boolean;
+  procedure sqchecker (mon: TMonster);
   var
     mx, my, mw, mh: Integer;
     inx, iny: Integer;
     distSq: Integer;
   begin
-    result := false; // don't stop
     mon.getMapBox(mx, my, mw, mh);
     if lineAABBIntersects(x0, y0, x2, y2, mx, my, mw, mh, inx, iny) then
     begin
@@ -1468,6 +1473,8 @@ var
   {$IF DEFINED(D2F_DEBUG)}
   stt: UInt64;
   {$ENDIF}
+  mit: PMonster;
+  it: TMonsterGrid.Iter;
 begin
   (*
   if not gwep_debug_fast_trace then
@@ -1522,7 +1529,11 @@ begin
   if playerPossibleHit() then exit; // instant hit
 
   // collect monsters
-  g_Mons_AlongLine(x, y, x2, y2, sqchecker);
+  //g_Mons_AlongLine(x, y, x2, y2, sqchecker);
+
+  it := monsGrid.forEachAlongLine(x, y, x2, y2, -1);
+  for mit in it do sqchecker(mit^);
+  it.release();
 
   // here, we collected all monsters and players in `wgunHitHeap` and `wgunHitTime`
   // also, if `wallWasHit` is `true`, then `wallHitX` and `wallHitY` contains spark coords
@@ -2146,7 +2157,7 @@ begin
 
       if Stopped = 0 then
       begin
-        st := g_Obj_Move(@Obj, False, spl);
+        st := g_Obj_Move_Projectile(@Obj, False, spl);
       end
       else
       begin