From: TimePath Date: Wed, 6 Jan 2016 21:53:51 +0000 (+1100) Subject: Sound_fixpath: reduce server load X-Git-Tag: xonotic-v0.8.2~1267 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=61f8aa37f6d1ba2c2710e5aaf6728ebe360877a0;p=xonotic%2Fxonotic-data.pk3dir.git Sound_fixpath: reduce server load --- diff --git a/qcsrc/common/sounds/all.qh b/qcsrc/common/sounds/all.qh index 8225db736..02098e875 100644 --- a/qcsrc/common/sounds/all.qh +++ b/qcsrc/common/sounds/all.qh @@ -11,7 +11,7 @@ REGISTER_REGISTRY(Sounds) string SND_##name##_get() { return path; } \ REGISTER(Sounds, SND, name, m_id, NEW(Sound, SND_##name##_get)) -// Used in places where a string is required +/** @deprecated Used in places where a string is required for legacy reasons, prefer using SND_id constants instead */ #define SND(id) Sound_fixpath(SND_##id) PRECACHE(Sounds) { diff --git a/qcsrc/common/sounds/sound.qh b/qcsrc/common/sounds/sound.qh index 7e9ba2632..53185b0fb 100644 --- a/qcsrc/common/sounds/sound.qh +++ b/qcsrc/common/sounds/sound.qh @@ -105,28 +105,20 @@ CLASS(Sound, Object) string _Sound_fixpath(string base) { if (base == "") return string_null; +#ifdef SVQC + return strcat(base, ".wav"); // let the client engine decide +#else #define extensions(x) \ x(wav) \ x(ogg) \ x(flac) \ /**/ - string relative; - #define tryext(ext) { if (fexists(strcat("sound/", relative = strcat(base, "." #ext)))) break; } - do - { - extensions(tryext); -#undef tryext -#undef extensions - LOG_WARNINGF("Missing sound: \"%s\"\n", strcat("sound/", base)); -#ifdef CSQC - return string_null; -#endif - } - while (0); -#ifdef SVQC - return strcat(base, ".wav"); // let the client engine decide -#else - return relative; + #define tryext(ext) { string s = strcat(base, "." #ext); if (fexists(strcat("sound/", s))) return s; } + extensions(tryext); + LOG_WARNINGF("Missing sound: \"%s\"\n", strcat("sound/", base)); + #undef tryext + #undef extensions + return string_null; #endif } METHOD(Sound, sound_precache, void(entity this)) diff --git a/qcsrc/common/t_items.qc b/qcsrc/common/t_items.qc index 72bfafd12..33ce76c02 100644 --- a/qcsrc/common/t_items.qc +++ b/qcsrc/common/t_items.qc @@ -1610,19 +1610,19 @@ float GiveWeapon(entity e, float wpn, float op, float val) return (v0 != v1); } -void GiveSound(entity e, float v0, float v1, float t, string snd_incr, string snd_decr) +void GiveSound(entity e, float v0, float v1, float t, Sound snd_incr, Sound snd_decr) { if(v1 == v0) return; if(v1 <= v0 - t) { - if(snd_decr != "") - _sound (e, CH_TRIGGER, snd_decr, VOL_BASE, ATTEN_NORM); + if(snd_decr != NULL) + sound (e, CH_TRIGGER, snd_decr, VOL_BASE, ATTEN_NORM); } else if(v0 >= v0 + t) { - if(snd_incr != "") - _sound (e, CH_TRIGGER, snd_incr, VOL_BASE, ATTEN_NORM); + if(snd_incr != NULL) + sound (e, CH_TRIGGER, snd_incr, VOL_BASE, ATTEN_NORM); } } @@ -1780,26 +1780,26 @@ float GiveItems(entity e, float beginarg, float endarg) op = OP_SET; } - POSTGIVE_BIT(e, items, ITEM_JetpackRegen.m_itemid, SND(ITEMPICKUP), string_null); - POSTGIVE_BIT(e, items, IT_UNLIMITED_SUPERWEAPONS, SND(POWERUP), SND(POWEROFF)); - POSTGIVE_BIT(e, items, IT_UNLIMITED_WEAPON_AMMO, SND(POWERUP), SND(POWEROFF)); - POSTGIVE_BIT(e, items, ITEM_Jetpack.m_itemid, SND(ITEMPICKUP), string_null); + POSTGIVE_BIT(e, items, ITEM_JetpackRegen.m_itemid, SND_ITEMPICKUP, SND_Null); + POSTGIVE_BIT(e, items, IT_UNLIMITED_SUPERWEAPONS, SND_POWERUP, SND_POWEROFF); + POSTGIVE_BIT(e, items, IT_UNLIMITED_WEAPON_AMMO, SND_POWERUP, SND_POWEROFF); + POSTGIVE_BIT(e, items, ITEM_Jetpack.m_itemid, SND_ITEMPICKUP, SND_Null); FOREACH(Weapons, it != WEP_Null, LAMBDA( - POSTGIVE_WEAPON(e, it, SND(WEAPONPICKUP), string_null); + POSTGIVE_WEAPON(e, it, SND_WEAPONPICKUP, SND_Null); if(!(save_weapons & (it.m_wepset))) if(e.weapons & (it.m_wepset)) it.wr_init(it); )); - POSTGIVE_VALUE(e, strength_finished, 1, SND(POWERUP), SND(POWEROFF)); - POSTGIVE_VALUE(e, invincible_finished, 1, "misc/powerup_shield.wav", SND(POWEROFF)); - POSTGIVE_VALUE(e, ammo_nails, 0, SND(ITEMPICKUP), string_null); - POSTGIVE_VALUE(e, ammo_cells, 0, SND(ITEMPICKUP), string_null); - POSTGIVE_VALUE(e, ammo_plasma, 0, SND(ITEMPICKUP), string_null); - POSTGIVE_VALUE(e, ammo_shells, 0, SND(ITEMPICKUP), string_null); - POSTGIVE_VALUE(e, ammo_rockets, 0, SND(ITEMPICKUP), string_null); - POSTGIVE_VALUE_ROT(e, ammo_fuel, 1, pauserotfuel_finished, autocvar_g_balance_pause_fuel_rot, pauseregen_finished, autocvar_g_balance_pause_fuel_regen, SND(ITEMPICKUP), string_null); - POSTGIVE_VALUE_ROT(e, armorvalue, 1, pauserotarmor_finished, autocvar_g_balance_pause_armor_rot, pauseregen_finished, autocvar_g_balance_pause_health_regen, SND(ARMOR25), string_null); - POSTGIVE_VALUE_ROT(e, health, 1, pauserothealth_finished, autocvar_g_balance_pause_health_rot, pauseregen_finished, autocvar_g_balance_pause_health_regen, SND(MEGAHEALTH), string_null); + POSTGIVE_VALUE(e, strength_finished, 1, SND_POWERUP, SND_POWEROFF); + POSTGIVE_VALUE(e, invincible_finished, 1, SND_Shield, SND_POWEROFF); + POSTGIVE_VALUE(e, ammo_nails, 0, SND_ITEMPICKUP, SND_Null); + POSTGIVE_VALUE(e, ammo_cells, 0, SND_ITEMPICKUP, SND_Null); + POSTGIVE_VALUE(e, ammo_plasma, 0, SND_ITEMPICKUP, SND_Null); + POSTGIVE_VALUE(e, ammo_shells, 0, SND_ITEMPICKUP, SND_Null); + POSTGIVE_VALUE(e, ammo_rockets, 0, SND_ITEMPICKUP, SND_Null); + POSTGIVE_VALUE_ROT(e, ammo_fuel, 1, pauserotfuel_finished, autocvar_g_balance_pause_fuel_rot, pauseregen_finished, autocvar_g_balance_pause_fuel_regen, SND_ITEMPICKUP, SND_Null); + POSTGIVE_VALUE_ROT(e, armorvalue, 1, pauserotarmor_finished, autocvar_g_balance_pause_armor_rot, pauseregen_finished, autocvar_g_balance_pause_health_regen, SND_ARMOR25, SND_Null); + POSTGIVE_VALUE_ROT(e, health, 1, pauserothealth_finished, autocvar_g_balance_pause_health_rot, pauseregen_finished, autocvar_g_balance_pause_health_regen, SND_MEGAHEALTH, SND_Null); if(e.superweapons_finished <= 0) if(self.weapons & WEPSET_SUPERWEAPONS) diff --git a/qcsrc/common/t_items.qh b/qcsrc/common/t_items.qh index 1dc79f8cc..86e5c7c8e 100644 --- a/qcsrc/common/t_items.qh +++ b/qcsrc/common/t_items.qh @@ -123,7 +123,7 @@ float GiveBit(entity e, .float fld, float bit, float op, float val); float GiveValue(entity e, .float fld, float op, float val); -void GiveSound(entity e, float v0, float v1, float t, string snd_incr, string snd_decr); +void GiveSound(entity e, float v0, float v1, float t, Sound snd_incr, Sound snd_decr); void GiveRot(entity e, float v0, float v1, .float rotfield, float rottime, .float regenfield, float regentime);