func_breakable: Use sound shaders for impact sounds.

This commit is contained in:
Marco Cawthorne 2020-09-10 05:35:52 +02:00
parent 1b6e5985a4
commit 3025ffbf16
2 changed files with 124 additions and 23 deletions

View File

@ -0,0 +1,73 @@
func_breakable.impact_glassunbreakable
{
sample debris/glass1.wav
sample debris/glass2.wav
sample debris/glass3.wav
sample debris/glass4.wav
}
func_breakable.impact_computer
{
sample debris/glass1.wav
sample debris/glass2.wav
sample debris/glass3.wav
sample debris/glass4.wav
}
func_breakable.impact_glass
{
sample debris/glass1.wav
sample debris/glass2.wav
sample debris/glass3.wav
sample debris/glass4.wav
}
func_breakable.impact_wood
{
sample debris/wood1.wav
sample debris/wood2.wav
sample debris/wood3.wav
sample debris/wood4.wav
}
func_breakable.impact_metal
{
sample debris/metal1.wav
sample debris/metal2.wav
sample debris/metal3.wav
sample debris/metal4.wav
}
func_breakable.impact_flesh
{
sample debris/flesh1.wav
sample debris/flesh2.wav
sample debris/flesh3.wav
sample debris/flesh5.wav
sample debris/flesh6.wav
sample debris/flesh7.wav
}
func_breakable.impact_cinder
{
sample debris/concrete1.wav
sample debris/concrete2.wav
sample debris/concrete3.wav
sample debris/concrete4.wav
}
func_breakable.impact_concrete
{
sample debris/concrete1.wav
sample debris/concrete2.wav
sample debris/concrete3.wav
sample debris/concrete4.wav
}
func_breakable.impact_rock
{
sample debris/concrete1.wav
sample debris/concrete2.wav
sample debris/concrete3.wav
sample debris/concrete4.wav
}

View File

@ -133,29 +133,30 @@ func_breakable::Pain(void)
}
switch (m_iMaterial) {
case BREAKMT_GLASS:
case BREAKMT_COMPUTER:
case BREAKMT_GLASS_UNBREAKABLE:
sound(self, CHAN_VOICE, sprintf("debris/glass%d.wav", random(1, 4)), 1.0, ATTN_NORM);
break;
case BREAKMT_WOOD:
sound(self, CHAN_VOICE, sprintf("debris/wood%d.wav", random(1, 4)), 1.0, ATTN_NORM);
break;
case BREAKMT_METAL:
sound(self, CHAN_VOICE, sprintf("debris/metal%d.wav", random(1, 4)), 1.0, ATTN_NORM);
break;
case BREAKMT_FLESH:
float fRand = floor(random(1, 8));
/* There never was a flesh4.wav */
if (fRand == 4) {
fRand = 5;
}
sound(self, CHAN_VOICE, sprintf("debris/flesh%d.wav", fRand), 1.0, ATTN_NORM);
break;
case BREAKMT_CINDER:
case BREAKMT_ROCK:
sound(self, CHAN_VOICE, sprintf("debris/concrete%d.wav", random(1, 4)), 1.0, ATTN_NORM);
break;
case BREAKMT_GLASS:
Sound_Play(this, CHAN_VOICE, "func_breakable.impact_glass");
break;
case BREAKMT_COMPUTER:
Sound_Play(this, CHAN_VOICE, "func_breakable.impact_computer");
break;
case BREAKMT_GLASS_UNBREAKABLE:
Sound_Play(this, CHAN_VOICE, "func_breakable.impact_glassunreakable");
break;
case BREAKMT_WOOD:
Sound_Play(this, CHAN_VOICE, "func_breakable.impact_wood");
break;
case BREAKMT_METAL:
Sound_Play(this, CHAN_VOICE, "func_breakable.impact_metal");
break;
case BREAKMT_FLESH:
Sound_Play(this, CHAN_VOICE, "func_breakable.impact_flesh");
break;
case BREAKMT_CINDER:
Sound_Play(this, CHAN_VOICE, "func_breakable.impact_cinder");
break;
case BREAKMT_ROCK:
Sound_Play(this, CHAN_VOICE, "func_breakable.impact_rock");
break;
}
}
@ -335,4 +336,31 @@ void
func_breakable::func_breakable(void)
{
CBaseTrigger::CBaseTrigger();
switch (m_iMaterial) {
case BREAKMT_GLASS:
Sound_Precache("func_breakable.impact_glass");
break;
case BREAKMT_COMPUTER:
Sound_Precache("func_breakable.impact_computer");
break;
case BREAKMT_GLASS_UNBREAKABLE:
Sound_Precache("func_breakable.impact_glassunreakable");
break;
case BREAKMT_WOOD:
Sound_Precache("func_breakable.impact_wood");
break;
case BREAKMT_METAL:
Sound_Precache("func_breakable.impact_metal");
break;
case BREAKMT_FLESH:
Sound_Precache("func_breakable.impact_flesh");
break;
case BREAKMT_CINDER:
Sound_Precache("func_breakable.impact_cinder");
break;
case BREAKMT_ROCK:
Sound_Precache("func_breakable.impact_rock");
break;
}
}