aboutsummaryrefslogtreecommitdiff
path: root/webAO/packets/handlers/handleRMC.ts
blob: ada1ad2b005a6604ae73671db294f8e5904c603c (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
import { client } from '../../client'
// TODO BUG:
// this.viewport.music is an array. Therefore you must access elements
/**
 * Handles a music change to an arbitrary resource, with an offset in seconds.
 * @param {Array} args packet arguments
 */
export const handleRMC = (args: string[]) => {
    client.viewport.music.pause();
    const { music } = client.viewport;
    // Music offset + drift from song loading
    music.totime = args[1];
    music.offset = new Date().getTime() / 1000;
    music.addEventListener(
        "loadedmetadata",
        () => {
            music.currentTime += parseFloat(
                music.totime + (new Date().getTime() / 1000 - music.offset)
            ).toFixed(3);
            music.play();
        },
        false
    );
}