aboutsummaryrefslogtreecommitdiff
path: root/webAO/packets/handlers/handleARUP.ts
blob: 7f72b156f1004a048a8c8e72146348c938c8147b (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}`;
    }
  }
};