blob: 965f5b1df1f80d671d073b008fb8605c0c53341a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#include <client/sound.h>
#include <client/generated/asset_sound_user_connected.c>
#include <client/generated/asset_sound_user_disconnected.c>
void
play_sound_update(PlaySound *ps, OSSoundBuffer *dest)
{
if (!dest) {
return;
}
i32 samples_readable = ps->sound->sample_count - ps->play_cursor;
i32 samples_writable = dest->sample_count;
i32 samples_to_play;
if (samples_readable > samples_writable) {
samples_to_play = samples_writable;
} else {
samples_to_play = samples_readable;
}
i16 *from = &ps->sound->samples[ps->play_cursor];
i16 *to = dest->samples;
for (i32 i = 0; i < samples_to_play; i++) {
to[i] = from[i];
}
ps->play_cursor += samples_to_play;
}
void
play_sound_init(PlaySound *ps, Sound *sound)
{
ps->play_cursor = 0;
ps->sound = sound;
}
Sound *
sound_load(SoundId id)
{
if (id == 0) {
Sound *sound = (Sound*)(g_asset_sound_user_connected);
sound->samples = (i16*)(sound + 1);
return sound;
} else {
Sound *sound = (Sound*)(g_asset_sound_user_disconnected);
sound->samples = (i16*)(sound + 1);
return sound;
}
}
|