diff options
Diffstat (limited to 'webAO/packets/handlers/handleEM.ts')
| -rw-r--r-- | webAO/packets/handlers/handleEM.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/webAO/packets/handlers/handleEM.ts b/webAO/packets/handlers/handleEM.ts new file mode 100644 index 0000000..5e49ea4 --- /dev/null +++ b/webAO/packets/handlers/handleEM.ts @@ -0,0 +1,43 @@ +import { client } from '../../client' +import { addTrack } from '../../client/addTrack'; +import { createArea } from '../../client/createArea'; +import { fix_last_area } from '../../client/fixLastArea'; +import { isAudio } from '../../client/isAudio'; +import { safeTags } from '../../encoding'; + +/** + * Handles incoming music information, containing multiple entries + * per packet. + * @param {Array} args packet arguments + */ +export const handleEM = (args: string[]) => { + document.getElementById("client_loadingtext")!.innerHTML = "Loading Music"; + if (args[1] === "0") { + client.resetMusicList(); + client.resetAreaList(); + client.musics_time = false; + } + + for (let i = 2; i < args.length - 1; i++) { + if (i % 2 === 0) { + const trackname = safeTags(args[i]); + const trackindex = Number(args[i - 1]); + (<HTMLProgressElement>( + document.getElementById("client_loadingbar") + )).value = + client.char_list_length + client.evidence_list_length + trackindex; + if (client.musics_time) { + addTrack(trackname); + } else if (isAudio(trackname)) { + client.musics_time = true; + fix_last_area(); + addTrack(trackname); + } else { + createArea(trackindex, trackname); + } + } + } + + // get the next batch of tracks + client.sender.sendServer(`AM#${Number(args[1]) / 10 + 1}#%`); +}
\ No newline at end of file |
