]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/target_music.qc
Make most server includes order insensitive
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / target_music.qc
index c5b7d181ed4481a43de310336816bf5b15e01f3c..12ee04ad22ba1567f1281360ac04002f285b3b24 100644 (file)
@@ -1,40 +1,64 @@
+#include "_.qh"
+
+.float volume;
+.float lifetime;
 // values:
 //   volume
 //   noise
 //   targetname
-//   timeout
+//   lifetime
 //   fade_time
-// when triggered, the music is overridden for activator until timeout (or forever, if timeout is 0)
+//   fade_rate
+// when triggered, the music is overridden for activator until lifetime (or forever, if lifetime is 0)
 // when targetname is not set, THIS ONE is default
-void target_music_sendto(float to)
+void target_music_sendto(float to, float is)
 {
+       WriteByte(to, SVC_TEMPENTITY);
        WriteByte(to, TE_CSQC_TARGET_MUSIC);
-       WriteByte(to, self.volume * 255.0);
+       WriteShort(to, num_for_edict(self));
+       WriteByte(to, self.volume * 255.0 * is);
        WriteByte(to, self.fade_time * 16.0);
-       WriteByte(to, self.timeout);
+       WriteByte(to, self.fade_rate * 16.0);
+       WriteByte(to, self.lifetime);
        WriteString(to, self.noise);
 }
 void target_music_reset()
 {
        if(self.targetname == "")
-               target_music_sendto(MSG_ALL);
+               target_music_sendto(MSG_ALL, 1);
 }
 void target_music_use()
 {
        if(!activator)
                return;
-       msg_entity = activator;
-       target_music_sendto(MSG_ONE);
+       if(IS_REAL_CLIENT(activator))
+       {
+               msg_entity = activator;
+               target_music_sendto(MSG_ONE, 1);
+       }
+       entity head;
+       FOR_EACH_SPEC(head) if(head.enemy == activator) { msg_entity = head; target_music_sendto(MSG_ONE, 1); }
 }
 void spawnfunc_target_music()
 {
        self.use = target_music_use;
        self.reset = target_music_reset;
-       precache_sound(self.noise);
        if(!self.volume)
                self.volume = 1;
        if(self.targetname == "")
-               target_music_sendto(MSG_INIT);
+               target_music_sendto(MSG_INIT, 1);
+       else
+               target_music_sendto(MSG_INIT, 0);
+}
+void TargetMusic_RestoreGame()
+{
+       for(self = world; (self = find(self, classname, "target_music")); )
+       {
+               if(self.targetname == "")
+                       target_music_sendto(MSG_INIT, 1);
+               else
+                       target_music_sendto(MSG_INIT, 0);
+       }
 }
 // values:
 //   volume
@@ -44,40 +68,41 @@ void spawnfunc_target_music()
 // spawnflags:
 //   1 = START_OFF
 // when triggered, it is disabled/enabled for everyone
-float trigger_music_SendEntity(entity to, float sf)
+float trigger_music_SendEntity(entity to, int sf)
 {
-       WriteByte(MSG_ENTITY, TE_CSQC_TARGET_MUSIC);
-       sf &~= 0x80;
+       WriteByte(MSG_ENTITY, ENT_CLIENT_TRIGGER_MUSIC);
+       sf &= ~0x80;
        if(self.cnt)
                sf |= 0x80;
        WriteByte(MSG_ENTITY, sf);
        if(sf & 4)
        {
-               WriteCoord(MSG_ENTITY, self.origin_x);
-               WriteCoord(MSG_ENTITY, self.origin_y);
-               WriteCoord(MSG_ENTITY, self.origin_z);
+               WriteCoord(MSG_ENTITY, self.origin.x);
+               WriteCoord(MSG_ENTITY, self.origin.y);
+               WriteCoord(MSG_ENTITY, self.origin.z);
        }
        if(sf & 1)
        {
                if(self.model != "null")
                {
                        WriteShort(MSG_ENTITY, self.modelindex);
-                       WriteCoord(MSG_ENTITY, self.mins_x);
-                       WriteCoord(MSG_ENTITY, self.mins_y);
-                       WriteCoord(MSG_ENTITY, self.mins_z);
-                       WriteCoord(MSG_ENTITY, self.maxs_x);
-                       WriteCoord(MSG_ENTITY, self.maxs_y);
-                       WriteCoord(MSG_ENTITY, self.maxs_z);
+                       WriteCoord(MSG_ENTITY, self.mins.x);
+                       WriteCoord(MSG_ENTITY, self.mins.y);
+                       WriteCoord(MSG_ENTITY, self.mins.z);
+                       WriteCoord(MSG_ENTITY, self.maxs.x);
+                       WriteCoord(MSG_ENTITY, self.maxs.y);
+                       WriteCoord(MSG_ENTITY, self.maxs.z);
                }
                else
                {
                        WriteShort(MSG_ENTITY, 0);
-                       WriteCoord(MSG_ENTITY, self.maxs_x);
-                       WriteCoord(MSG_ENTITY, self.maxs_y);
-                       WriteCoord(MSG_ENTITY, self.maxs_z);
+                       WriteCoord(MSG_ENTITY, self.maxs.x);
+                       WriteCoord(MSG_ENTITY, self.maxs.y);
+                       WriteCoord(MSG_ENTITY, self.maxs.z);
                }
                WriteByte(MSG_ENTITY, self.volume * 255.0);
                WriteByte(MSG_ENTITY, self.fade_time * 16.0);
+               WriteByte(MSG_ENTITY, self.fade_rate * 16.0);
                WriteString(MSG_ENTITY, self.noise);
        }
        return 1;
@@ -96,7 +121,6 @@ void spawnfunc_trigger_music()
 {
        if(self.model != "")
                setmodel(self, self.model);
-       precache_sound (self.noise);
        if(!self.volume)
                self.volume = 1;
        if(!self.modelindex)
@@ -109,5 +133,5 @@ void spawnfunc_trigger_music()
        self.use = trigger_music_use;
        self.reset = trigger_music_reset;
 
-       Net_LinkEntity(self, FALSE, 0, trigger_music_SendEntity);
+       Net_LinkEntity(self, false, 0, trigger_music_SendEntity);
 }