From 18f3145c8cb1d73026741111785e0a6785899768 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Thu, 6 May 2010 09:17:40 +0200 Subject: [PATCH] handle the case that a sound cannot start --- qcsrc/client/target_music.qc | 14 +++++++++++++- qcsrc/server/g_world.qc | 3 +++ qcsrc/server/target_music.qc | 10 ++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/qcsrc/client/target_music.qc b/qcsrc/client/target_music.qc index 03cedcd810..0d8b106266 100644 --- a/qcsrc/client/target_music.qc +++ b/qcsrc/client/target_music.qc @@ -14,7 +14,7 @@ void TargetMusic_Advance() best = music_target; if(music_trigger) best = music_trigger; - for(e = world; (e = findfloat(e, enttype, ENT_CLIENT_TRIGGER_MUSIC)); ) + for(e = world; (e = findfloat(e, enttype, ENT_CLIENT_TRIGGER_MUSIC)); ) if(e.noise) { s0 = e.state; if(getsoundtime(e, CHAN_VOICE) < 0) @@ -79,6 +79,12 @@ void Net_TargetMusic() { precache_sound(e.noise); sound(e, CHAN_VOICE, e.noise, 0, ATTN_NONE); + if(getsoundtime(e, CHAN_VOICE) < 0) + { + print("Cannot initialize sound ", e.noise, "\n"); + strunzone(e.noise); + e.noise = string_null; + } } e.volume = vol; e.fade_time = fai; @@ -155,6 +161,12 @@ void Ent_ReadTriggerMusic() { precache_sound(self.noise); sound(self, CHAN_VOICE, self.noise, 0, ATTN_NONE); + if(getsoundtime(self, CHAN_VOICE) < 0) + { + print("Cannot initialize sound ", self.noise, "\n"); + strunzone(self.noise); + self.noise = string_null; + } } } diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 228782748d..c815b0815a 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -2697,6 +2697,7 @@ float RedirectionThink() return TRUE; } +void TargetMusic_RestoreGame(); void RestoreGame() { // Loaded from a save game @@ -2710,6 +2711,8 @@ void RestoreGame() MapInfo_Enumerate(); MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 1); WeaponStats_Init(); + + TargetMusic_RestoreGame(); } void SV_Shutdown() diff --git a/qcsrc/server/target_music.qc b/qcsrc/server/target_music.qc index 75f77acf53..daab646998 100644 --- a/qcsrc/server/target_music.qc +++ b/qcsrc/server/target_music.qc @@ -42,6 +42,16 @@ void spawnfunc_target_music() 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 // noise -- 2.39.2