sound for mortar
authorkoda
Wed, 15 Jul 2009 00:35:59 +0000
changeset 2262 0dc94341bf42
parent 2261 57e99c908e7c
child 2263 94432985558a
sound for mortar
hedgewars/GSHandlers.inc
hedgewars/HHHandlers.inc
hedgewars/uConsts.pas
hedgewars/uSound.pas
share/hedgewars/Data/Sounds/mortar.ogg
--- a/hedgewars/GSHandlers.inc	Tue Jul 14 20:02:07 2009 +0000
+++ b/hedgewars/GSHandlers.inc	Wed Jul 15 00:35:59 2009 +0000
@@ -1613,6 +1613,7 @@
 if (Gear^.State and gstCollision) <> 0 then
 	begin
 	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
+	soundFadeOut(sndMortar,10,nil);
 
 	Gear^.dX.isNegative:= not dxn;
 	Gear^.dY.isNegative:= not dyn;
--- a/hedgewars/HHHandlers.inc	Tue Jul 14 20:02:07 2009 +0000
+++ b/hedgewars/HHHandlers.inc	Wed Jul 15 00:35:59 2009 +0000
@@ -174,7 +174,10 @@
                        amGirder: CurAmmoGear:= AddGear(0, 0, gtGirder, Ammo^[CurSlot, CurAmmo].Pos, _0, _0, 0);
                      amTeleport: CurAmmoGear:= AddGear(0, 0, gtTeleport, 0, _0, _0, 0);
                        amSwitch: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtSwitcher, 0, _0, _0, 0);
-                       amMortar: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
+                       amMortar: begin
+				playSound(sndMortar, false, nil);
+				FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
+				 end;
                       amRCPlane: begin
                                  CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtRCPlane,  0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0);
                                  PlaySound(sndRCPlane, true, nil)
--- a/hedgewars/uConsts.pas	Tue Jul 14 20:02:07 2009 +0000
+++ b/hedgewars/uConsts.pas	Wed Jul 15 00:35:59 2009 +0000
@@ -93,15 +93,15 @@
 			sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6,
 			sndMelon, sndHellish, sndYoohoo, sndRCPlane, sndWhipCrack,
 			sndRideOfTheValkyries, sndDenied, sndPlaced, sndBaseballBat, 
-			sndVaporize, sndWarp, sndSuddenDeath);
+			sndVaporize, sndWarp, sndSuddenDeath, sndMortar);
 
 	TAmmoType  = (amGrenade, amClusterBomb, amBazooka, amUFO, amShotgun, amPickHammer,
 			amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip,
 			amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch,
 			amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake,
 			amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, 
-            amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime,
-            amLaserSight, amVampiric, amSniperRifle, amJetpack);
+            		amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime,
+            		amLaserSight, amVampiric, amSniperRifle, amJetpack);
 
 	THWFont = (fnt16, fntBig, fntSmall);
 
@@ -663,7 +663,8 @@
 			(FileName:          'baseballbat.ogg'; Path: ptSounds),// sndBaseballBat
 			(FileName:                'steam.ogg'; Path: ptSounds),// sndVaporize
 			(FileName:                 'warp.ogg'; Path: ptSounds),// sndWarp
-			(FileName:          'suddendeath.ogg'; Path: ptSounds) // sndSuddenDeath
+			(FileName:          'suddendeath.ogg'; Path: ptSounds),// sndSuddenDeath
+			(FileName:               'mortar.ogg'; Path: ptSounds) // sndMortar
 			);
 
 	Ammoz: array [TAmmoType] of record
--- a/hedgewars/uSound.pas	Tue Jul 14 20:02:07 2009 +0000
+++ b/hedgewars/uSound.pas	Wed Jul 15 00:35:59 2009 +0000
@@ -55,6 +55,8 @@
 procedure StopSound(snd: TSound);
 function  ChangeVolume(voldelta: LongInt): LongInt;
 function  AskForVoicepack(name: shortstring): Pointer;
+function  soundFadeOut(snd: TSound; qt: LongInt; voicepack: PVoicepack): LongInt;
+
 
 {*remember: LongInt = 32bit; integer = 16bit; byte = 8bit*}
 function openal_init		(memsize: LongInt)                      : boolean; cdecl; external OpenALBridge;
@@ -65,7 +67,7 @@
 function openal_setglobalvolume	(percentage: byte)			: boolean; cdecl; external OpenALBridge;
 function openal_fadeout		(index: LongInt; quantity: integer)	: boolean; cdecl; external OpenALBridge;
 function openal_fadein		(index: LongInt; quantity: integer)	: boolean; cdecl; external OpenALBridge;
-function openal_fade		(index: LongInt; quantity: integer; direction: byte)	: boolean; cdecl; external OpenALBridge;
+function openal_fade		(index: LongInt; quantity: integer; direction: boolean)	: boolean; cdecl; external OpenALBridge;
 function openal_playsound	(index: LongInt)			: boolean; cdecl; external OpenALBridge;
 function openal_pausesound	(index: LongInt)			: boolean; cdecl; external OpenALBridge;
 function openal_stopsound	(index: LongInt)			: boolean; cdecl; external OpenALBridge;
@@ -150,21 +152,34 @@
 				end;
 end;
 
+function soundFadeOut(snd: TSound; qt: LongInt; voicepack: PVoicepack): LongInt;
+begin
+if not isSoundEnabled then exit(0);
+if (voicepack <> nil) and (voicepack^.chunks[snd] >= 0) then openal_fadeout(defVoicepack^.chunks[snd], qt)
+else if (defVoicepack^.chunks[snd] >= 0) then openal_fadeout(defVoicepack^.chunks[snd], qt);
+end;
+
 procedure PlaySound(snd: TSound; infinite: boolean; voicepack: PVoicepack);
 begin
 if (not isSoundEnabled) or fastUntilLag then exit;
 
-if (voicepack <> nil) and (voicepack^.chunks[snd] >= 0) then
+if (voicepack <> nil) then
 begin
+if voicepack^.chunks[snd] >= 0 then
+	begin
 	if infinite then openal_toggleloop(voicepack^.chunks[snd]);
 	openal_playsound(voicepack^.chunks[snd]);
 	lastChan[snd]:=voicepack^.chunks[snd];
+	end
 end
 else
 begin
+if (defVoicepack^.chunks[snd] >= 0) then
+	begin
 	if infinite then openal_toggleloop(defVoicepack^.chunks[snd]);
 	openal_playsound(defVoicepack^.chunks[snd]);
 	lastChan[snd]:=defVoicepack^.chunks[snd];
+	end
 end
 end;
 
Binary file share/hedgewars/Data/Sounds/mortar.ogg has changed