summaryrefslogtreecommitdiff
path: root/src/engine/sound.cpp
diff options
context:
space:
mode:
authorxolatile2025-08-10 00:19:46 +0200
committerxolatile2025-08-10 00:19:46 +0200
commit757096e7df15c14b9b10352fa91663483f9e34f8 (patch)
treedcad789d0abd8be76463277dc01bf32c4e6a527b /src/engine/sound.cpp
parentb2c89d7060e99a36c8c7ac897b7386686c74deac (diff)
downloadxolatile-badassbug-757096e7df15c14b9b10352fa91663483f9e34f8.tar.xz
xolatile-badassbug-757096e7df15c14b9b10352fa91663483f9e34f8.tar.zst
all
Diffstat (limited to 'src/engine/sound.cpp')
-rw-r--r--src/engine/sound.cpp77
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));