[nexuiz-commits] r8289 - trunk/data/qcsrc/client
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Nov 15 16:04:15 EST 2009
Author: div0
Date: 2009-11-15 16:04:14 -0500 (Sun, 15 Nov 2009)
New Revision: 8289
Modified:
trunk/data/qcsrc/client/tuba.qc
Log:
tuba: great new code that can hold notes
Modified: trunk/data/qcsrc/client/tuba.qc
===================================================================
--- trunk/data/qcsrc/client/tuba.qc 2009-11-15 19:15:39 UTC (rev 8288)
+++ trunk/data/qcsrc/client/tuba.qc 2009-11-15 21:04:14 UTC (rev 8289)
@@ -1,20 +1,30 @@
-//#define TUBA_STARTNOTE(n) strcat("weapons/tuba_startnote", ftos(n), ".wav")
-//#define TUBA_STOPNOTE(n) strcat("weapons/tuba_stopnote", ftos(n), ".wav")
-#define TUBA_STARTNOTE(n) strcat("weapons/tuba_note", ftos(n), ".wav")
-#define TUBA_STOPNOTE(n) "" // this will be ignored (for actually stopping, use misc/null.wav)
+#define TUBA_STARTNOTE(n) strcat((checkextension("DP_SND_SETPARAMS") ? "weapons/tuba_loopnote" : "weapons/tuba_note"), ftos(n), ".wav")
.float cnt; // note
+void Ent_TubaNote_Think()
+{
+ self.cnt -= frametime * self.count * 3;
+ self.nextthink = time;
+ if(self.cnt <= 0)
+ {
+ sound(self, CHAN_PROJECTILE, "misc/null.wav", 0, 0);
+ remove(self);
+ }
+ else
+ sound(self, CHAN_PROJECTILE, "", self.cnt, cvar("g_balance_tuba_attenuation"));
+}
+
void Ent_TubaNote_UpdateSound()
{
- sound(self, CHAN_PROJECTILE, TUBA_STARTNOTE(self.cnt), bound(0, VOL_BASE * cvar("g_balance_tuba_volume"), 1), cvar("g_balance_tuba_attenuation"));
+ self.enemy.cnt = bound(0, VOL_BASE * cvar("g_balance_tuba_volume"), 1);
+ self.enemy.count = self.enemy.cnt;
+ sound(self.enemy, CHAN_PROJECTILE, TUBA_STARTNOTE(self.cnt), self.enemy.cnt, cvar("g_balance_tuba_attenuation"));
}
void Ent_TubaNote_StopSound()
{
- string s;
- s = TUBA_STOPNOTE(self.cnt);
- if(s != "")
- sound(self, CHAN_PROJECTILE, s, bound(0, VOL_BASE * cvar("g_balance_tuba_volume"), 1), cvar("g_balance_tuba_attenuation"));
+ self.enemy.nextthink = time;
+ self.enemy = world;
}
void Ent_TubaNote(float bIsNew)
@@ -22,17 +32,27 @@
float f, n;
f = ReadByte();
n = floor(f / 2) - 42;
+ if(n != self.cnt || bIsNew)
+ if(self.enemy)
+ Ent_TubaNote_StopSound();
+ if(!self.enemy)
+ {
+ self.enemy = spawn();
+ self.enemy.classname = "tuba_note";
+ bIsNew = TRUE;
+ }
if(f & 1)
{
- self.origin_x = ReadCoord();
- self.origin_y = ReadCoord();
- self.origin_z = ReadCoord();
- setorigin(self, self.origin);
+ self.enemy.origin_x = ReadCoord();
+ self.enemy.origin_y = ReadCoord();
+ self.enemy.origin_z = ReadCoord();
+ setorigin(self.enemy, self.enemy.origin);
}
self.think = Ent_TubaNote_StopSound;
self.entremove = Ent_TubaNote_StopSound;
- self.nextthink = time + 10;
- if(n != self.cnt || bIsNew)
+ self.enemy.think = Ent_TubaNote_Think;
+ self.enemy.nextthink = time + 10;
+ if(bIsNew)
{
self.cnt = n;
Ent_TubaNote_UpdateSound();
@@ -45,7 +65,6 @@
for(i = -18; i <= +27; ++i)
{
precache_sound(TUBA_STARTNOTE(i));
- if(TUBA_STOPNOTE(i) != "")
- precache_sound(TUBA_STOPNOTE(i));
}
+ //precache_sound(""); // we want to change volume of existing sounds
}
More information about the nexuiz-commits
mailing list