4 #define SND(id) (SND_##id.sound_str())
7 const int MAX_SOUNDS = 128;
8 entity SOUNDS[MAX_SOUNDS], SOUNDS_first, SOUNDS_last;
12 ATTRIB(Sound, m_id, int, 0)
13 ATTRIB(Sound, sound_str, string(), func_null)
14 CONSTRUCTOR(Sound, string() path)
17 this.sound_str = path;
19 METHOD(Sound, sound_precache, void(entity this)) {
20 string s = this.sound_str();
21 if (s && s != "" && !fexists(strcat("sound/", s))) {
22 LOG_WARNINGF("Missing sound: \"%s\"\n", s);
25 LOG_TRACEF("precache_sound(\"%s\")\n", s);
30 #define SOUND(name, path) \
31 string SND_##name##_get() { return path; } \
32 REGISTER(RegisterSounds, SND, SOUNDS, SOUNDS_COUNT, name, m_id, NEW(Sound, SND_##name##_get))
33 REGISTER_REGISTRY(RegisterSounds)
35 STATIC_INIT(RegisterSounds_precache) {
36 FOREACH(SOUNDS, true, LAMBDA({
37 it.sound_precache(it);
41 SOUND(Null, "misc/null.wav");