[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