]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/target_music.qc
Merge remote-tracking branch 'origin/divVerent/allow-override-item-model'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / target_music.qc
index d23fc01a95585a8bca9b203b132196dd8684c7bb..c4573296a6bb0af9f35dedf39ae177855fc847bb 100644 (file)
@@ -4,12 +4,13 @@ entity music_target;
 entity music_trigger;
 
 .float state;
+.float lastvol;
 
 void TargetMusic_Advance()
 {
        // run AFTER all the thinks!
        entity best, e;
-       float s0;
+       float vol, vol0;
        best = music_default;
        if(music_target && time < music_target.lifetime)
                best = music_target;
@@ -17,10 +18,10 @@ void TargetMusic_Advance()
                best = music_trigger;
        for(e = world; (e = findfloat(e, enttype, ENT_CLIENT_TRIGGER_MUSIC)); ) if(e.noise)
        {
-               s0 = e.state;
-               if(getsoundtime(e, CHAN_VOICE) < 0)
+               vol0 = e.lastvol;
+               if(getsoundtime(e, CH_BGM_SINGLE) < 0)
                {
-                       s0 = -1;
+                       vol0 = -1;
                }
                if(e == best)
                {
@@ -38,21 +39,28 @@ void TargetMusic_Advance()
                        else
                                e.state = 0;
                }
-               if(e.state != s0)
+               vol = e.state * e.volume * autocvar_bgmvolume;
+               if(vol != vol0)
                {
-                       if(s0 < 0)
-                               sound(e, CHAN_VOICE, e.noise, e.volume * e.state * cvar("bgmvolume"), ATTN_NONE); // restart
+                       if(vol0 < 0)
+                               sound(e, CH_BGM_SINGLE, e.noise, vol, ATTN_NONE); // restart
                        else
-                               sound(e, CHAN_VOICE, "", e.volume * e.state * cvar("bgmvolume"), ATTN_NONE);
+                               sound(e, CH_BGM_SINGLE, "", vol, ATTN_NONE);
+                       e.lastvol = vol;
                }
        }
        music_trigger = world;
+
+       if(best)
+               bgmtime = getsoundtime(best, CH_BGM_SINGLE);
+       else
+               bgmtime = gettime(GETTIME_CDTRACK);
 }
 
 void Net_TargetMusic()
 {
        float vol, fai, fao, tim, id;
-       string noi, s;
+       string noi;
        entity e;
 
        id = ReadShort();
@@ -79,10 +87,10 @@ void Net_TargetMusic()
                        strunzone(e.noise);
                e.noise = strzone(noi);
                precache_sound(e.noise);
-               sound(e, CHAN_VOICE, e.noise, 0, ATTN_NONE);
-               if(getsoundtime(e, CHAN_VOICE) < 0)
+               sound(e, CH_BGM_SINGLE, e.noise, 0, ATTN_NONE);
+               if(getsoundtime(e, CH_BGM_SINGLE) < 0)
                {
-                       print("Cannot initialize sound ", e.noise, "\n");
+                       print(sprintf(_("Cannot initialize sound %s\n"), e.noise));
                        strunzone(e.noise);
                        e.noise = string_null;
                }
@@ -167,10 +175,10 @@ void Ent_ReadTriggerMusic()
                if(self.noise != s)
                {
                        precache_sound(self.noise);
-                       sound(self, CHAN_VOICE, self.noise, 0, ATTN_NONE);
-                       if(getsoundtime(self, CHAN_VOICE) < 0)
+                       sound(self, CH_BGM_SINGLE, self.noise, 0, ATTN_NONE);
+                       if(getsoundtime(self, CH_BGM_SINGLE) < 0)
                        {
-                               print("Cannot initialize sound ", self.noise, "\n");
+                               print(sprintf(_("Cannot initialize sound %s\n"), self.noise));
                                strunzone(self.noise);
                                self.noise = string_null;
                        }