diff options
Diffstat (limited to 'src/engine/sound.cpp')
| -rw-r--r-- | src/engine/sound.cpp | 77 |
1 files changed, 8 insertions, 69 deletions
diff --git a/src/engine/sound.cpp b/src/engine/sound.cpp index 62cab3e..d9b2473 100644 --- a/src/engine/sound.cpp +++ b/src/engine/sound.cpp @@ -58,7 +58,7 @@ struct soundchannel { vector<soundchannel> channels; int maxchannels = 0; -soundchannel &newchannel(int n, soundslot *slot, const vec *loc = NULL, extentity *ent = NULL, int flags = 0, int radius = 0) { +soundchannel &newchannel(int n, soundslot *slot, const vec *loc = NULL, extentity *ent = NULL, int radius = 0) { if(ent) { loc = &ent->o; ent->flags |= EF_SOUND; @@ -443,33 +443,21 @@ static struct soundtype { bool playing(const soundchannel &chan, const soundconfig &config) const { return chan.inuse && config.hasslot(chan.slot, slots); } -} gamesounds, mapsounds; +} gamesounds; void registersound(char *name, int *vol) { intret(gamesounds.addsound(name, *vol, 0)); } COMMAND(registersound, "si"); -void mapsound(char *name, int *vol, int *maxuses) { intret(mapsounds.addsound(name, *vol, *maxuses < 0 ? 0 : max(1, *maxuses))); } -COMMAND(mapsound, "sii"); - void altsound(char *name, int *vol) { gamesounds.addalt(name, *vol); } COMMAND(altsound, "si"); -void altmapsound(char *name, int *vol) { mapsounds.addalt(name, *vol); } -COMMAND(altmapsound, "si"); - ICOMMAND(numsounds, "", (), intret(gamesounds.configs.length())); -ICOMMAND(nummapsounds, "", (), intret(mapsounds.configs.length())); void soundreset() { gamesounds.reset(); } COMMAND(soundreset, ""); -void mapsoundreset() { - mapsounds.reset(); -} -COMMAND(mapsoundreset, ""); - void resetchannels() { loopv(channels) if(channels[i].inuse) freechannel(i); channels.shrink(0); @@ -480,46 +468,11 @@ void clear_sound() { stopmusic(); cleanupsamples(); gamesounds.clear(); - mapsounds.clear(); samples.clear(); Mix_CloseAudio(); resetchannels(); } -void stopmapsounds() { - loopv(channels) if(channels[i].inuse && channels[i].ent) { - Mix_HaltChannel(i); - freechannel(i); - } -} - -void clearmapsounds() { - stopmapsounds(); - mapsounds.clear(); -} - -void stopmapsound(extentity *e) { - loopv(channels) { - soundchannel &chan = channels[i]; - if(chan.inuse && chan.ent == e) { - Mix_HaltChannel(i); - freechannel(i); - } - } -} - -void checkmapsounds() { - const vector<extentity *> &ents = entities::getents(); - loopv(ents) { - extentity &e = *ents[i]; - if(e.type!=ET_SOUND) continue; - if(camera1->o.dist(e.o) < e.attr2) { - if(!(e.flags&EF_SOUND)) playsound(e.attr1, NULL, &e, SND_MAP, -1); - } - else if(e.flags&EF_SOUND) stopmapsound(&e); - } -} - VAR(stereo, 0, 1, 1); bool updatechannel(soundchannel &chan) { @@ -573,8 +526,6 @@ void updatesounds() { if(minimized && !minimizedsounds) stopsounds(); else { reclaimchannels(); - if(mainmenu) stopmapsounds(); - else checkmapsounds(); syncchannels(); } if(music) { @@ -589,21 +540,9 @@ void preloadsound(int n) { gamesounds.preloadsound(n); } -void preloadmapsound(int n) { - mapsounds.preloadsound(n); -} - -void preloadmapsounds() { - const vector<extentity *> &ents = entities::getents(); - loopv(ents) { - extentity &e = *ents[i]; - if(e.type==ET_SOUND) mapsounds.preloadsound(e.attr1); - } -} - -int playsound(int n, const vec *loc, extentity *ent, int flags, int loops, int fade, int chanid, int radius, int expire) { +int playsound(int n, const vec *loc, extentity *ent, int loops, int fade, int chanid, int radius, int expire) { if(nosound || !soundvol || (minimized && !minimizedsounds)) return -1; - soundtype &sounds = ent || flags&SND_MAP ? mapsounds : gamesounds; + soundtype &sounds = gamesounds; if(!sounds.configs.inrange(n)) { conoutf(CON_WARN, "unregistered sound: %d", n); return -1; } soundconfig &config = sounds.configs[n]; if(loc) { @@ -638,14 +577,14 @@ int playsound(int n, const vec *loc, extentity *ent, int flags, int loops, int f } } if(fade < 0) return -1; - soundslot &slot = sounds.slots[config.chooseslot(flags)]; + soundslot &slot = sounds.slots[config.chooseslot(0)]; if(!slot.sample->chunk && !slot.sample->load()) return -1; chanid = -1; loopv(channels) if(!channels[i].inuse) { chanid = i; break; } if(chanid < 0 && channels.length() < maxchannels) chanid = channels.length(); if(chanid < 0) loopv(channels) if(!channels[i].volume) { chanid = i; break; } if(chanid < 0) return -1; - soundchannel &chan = newchannel(chanid, &slot, loc, ent, flags, radius); + soundchannel &chan = newchannel(chanid, &slot, loc, ent, radius); updatechannel(chan); int playing = -1; if(fade) { @@ -674,11 +613,11 @@ bool stopsound(int n, int chanid, int fade) { return true; } -int playsoundname(const char *s, const vec *loc, int vol, int flags, int loops, int fade, int chanid, int radius, int expire) { +int playsoundname(const char *s, const vec *loc, int vol, int loops, int fade, int chanid, int radius, int expire) { if(!vol) vol = 100; int id = gamesounds.findsound(s, vol); if(id < 0) id = gamesounds.addsound(s, vol); - return playsound(id, loc, NULL, flags, loops, fade, chanid, radius, expire); + return playsound(id, loc, NULL, loops, fade, chanid, radius, expire); } ICOMMAND(sound, "i", (int *n), playsound(*n)); |
