From 92a8eb610f40c9770569ca63ca1bd705a6d3497d Mon Sep 17 00:00:00 2001 From: pryazha Date: Thu, 27 Mar 2025 08:27:46 +0500 Subject: audio, renaming --- prge_audio.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 prge_audio.c (limited to 'prge_audio.c') diff --git a/prge_audio.c b/prge_audio.c new file mode 100644 index 0000000..08fb67c --- /dev/null +++ b/prge_audio.c @@ -0,0 +1,75 @@ +S32 find_sound(PRGEContext *ctx, const char *name) +{ + S32 i; + Sound *snd; + + for (i = 0; i < PRGE_MAX_SOUNDS_LOADED; i++) { + snd = ctx->snds+i; + if (snd->name && (strcmp(snd->name, name) == 0)) + return i; + } + + return -1; +} + +S32 load_sound(PRGEContext *ctx, Sound newsnd) +{ + S32 i; + Sound *snd; + + for (i = 0; i < PRGE_MAX_SOUNDS_LOADED; i++) { + snd = ctx->snds+i; + if (!snd->data) + break; + } + + if (i == PRGE_MAX_SOUNDS_LOADED) { + sys_printf("[WARNING] : PRGE : Max sounds loaded\n"); + pop_arena(ctx->pa, newsnd.size); + return -1; + } + + *snd = newsnd; + + return i; +} + +B32 enqueue_sound(PRGEContext *ctx, Sound *snd) +{ + SoundQueueNode *node; + SoundQueue *sndq; + S32 i; + + ASSERT(snd); + + sndq = &ctx->sndq; + + if (sndq->cnt == PRGE_MAX_SOUNDS_PLAYING) + return 0; + + for (i = 0; i < PRGE_MAX_SOUNDS_PLAYING; i++) { + node = ctx->nodes+i; + if (!node->snd) + break; + } + + node->snd = snd; + + DLLPUSHFRONT(sndq->first, sndq->last, node); + + sndq->cnt++; + + return 1; +} + +Sound *dequeue_sound(SoundQueue *sndq) +{ + Sound *snd; + if (sndq->cnt == 0) + return 0; + snd = sndq->first->snd; + sndq->first->snd = 0; + DLLREMOVE(sndq->first, sndq->last, sndq->first); + sndq->cnt--; + return snd; +} -- cgit v1.2.3-70-g09d2