aboutsummaryrefslogtreecommitdiff
path: root/webAO/packets/handlers/handleSC.ts
blob: b42a4cd710ca35cf655e1d3ccc66c1db321ef437 (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
import queryParser from "../../utils/queryParser";

import { client } from '../../client'
import { handleCharacterInfo } from "../../client/handleCharacterInfo";
let { mode } = queryParser();

/**
 * Handles incoming character information, containing all characters
 * in one packet.
 * @param {Array} args packet arguments
 */
export const handleSC = async (args: string[]) => {
    const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));

    if (mode === "watch") {
        // Spectators don't need to pick a character
        document.getElementById("client_charselect")!.style.display = "none";
    } else {
        document.getElementById("client_charselect")!.style.display = "block";
    }

    document.getElementById("client_loadingtext")!.innerHTML =
        "Loading Characters";
    for (let i = 1; i < args.length - 1; i++) {
        document.getElementById(
            "client_loadingtext"
        )!.innerHTML = `Loading Character ${i}/${client.char_list_length}`;
        const chargs = args[i].split("&");
        const charid = i - 1;
        (<HTMLProgressElement>(
            document.getElementById("client_loadingbar")
        )).value = charid;
        await sleep(0.1); // TODO: Too many network calls without this. net::ERR_INSUFFICIENT_RESOURCES
        handleCharacterInfo(chargs, charid);
    }
    // We're done with the characters, request the music
    client.sender.sendServer("RM#%");
}