aboutsummaryrefslogtreecommitdiff
path: root/webAO/packets/handlers/handleARUP.ts
blob: 9d09648a0be1e9a97625edfb1c18078084fcbd5b (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
import { client } from "../../client";
import { safeTags } from "../../encoding";

/**
   * Handle the change of players in an area.
   * @param {Array} args packet arguments
   */
export const handleARUP = (args: string[]) => {
    args = args.slice(1);
    for (let i = 0; i < args.length - 1; i++) {
        if (client.areas[i]) {
            // the server sends us ARUP before we even get the area list
            const thisarea = document.getElementById(`area${i}`)!;
            switch (Number(args[0])) {
                case 0: // playercount
                    client.areas[i].players = Number(args[i + 1]);
                    break;
                case 1: // status
                    client.areas[i].status = safeTags(args[i + 1]);
                    break;
                case 2:
                    client.areas[i].cm = safeTags(args[i + 1]);
                    break;
                case 3:
                    client.areas[i].locked = safeTags(args[i + 1]);
                    break;
            }

            thisarea.className = `area-button area-${client.areas[
                i
            ].status.toLowerCase()}`;

            thisarea.innerText = `${client.areas[i].name} (${client.areas[i].players}) [${client.areas[i].status}]`;

            thisarea.title =
                `Players: ${client.areas[i].players}\n` +
                `Status: ${client.areas[i].status}\n` +
                `CM: ${client.areas[i].cm}\n` +
                `Area lock: ${client.areas[i].locked}`;
        }
    }
}