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;
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)
{
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();
{
e = spawn();
e.enttype = ENT_CLIENT_TRIGGER_MUSIC;
+ e.count = id;
}
- s = e.noise;
- if(e.noise)
- strunzone(e.noise);
- e.noise = strzone(noi);
- if(e.noise != s)
+ if(e.noise != noi)
{
+ if(e.noise)
+ 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;
}
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;
}