-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
106 lines (89 loc) · 2.33 KB
/
index.ts
File metadata and controls
106 lines (89 loc) · 2.33 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env node
import { CommandHandler } from "./commandsHandler";
import { checkVersion, emojis, setupJSON } from "./utils";
import { WebScraper } from "./WebScraper";
import { terminal } from "terminal-kit";
import { drawFriendsMenu, registerFriendBinds } from "./menus/friends";
import { MenuTracker } from "./MenuTracker";
import { drawServers, registerServerBinds } from "./menus/servers";
import { BindHandler } from "./BindHandler";
export type ServerData = {
servers: Server[];
};
export type Server = {
addresses: string[];
location: string;
info: {
name: string;
map: { name: string };
clients: {
name: string;
clan: string;
team: number;
skin: { name: string; color_body?: number; color_feet?: number };
}[];
game_type: string;
};
};
export type DataTypes = ServerData;
let commands = [
"find",
"friends",
"repl",
"notifier",
"player",
"import",
"skin",
];
let serverUrl = "https://master1.ddnet.org/ddnet/15/servers.json";
export let friends = setupJSON();
export let commandHandler = new CommandHandler();
export let webScraper = new WebScraper();
export let menuTracker = new MenuTracker();
export let bindHandler = new BindHandler();
terminal.on("key", (name: string, _m: string, _d: string) => {
if (name == "CTRL_C") {
terminal.eraseDisplayAbove();
process.exit();
}
bindHandler.runBind(menuTracker.getMenu(), name);
});
async function main() {
// await checkVersion();
// Register binds through functions to prevent circular dependancy funny shit
registerFriendBinds();
registerServerBinds();
drawMainMenu();
}
export async function drawMainMenu() {
menuTracker.setMenu("main").setPreviousMenu("menu");
terminal.brightBlue("\n\nTeeworlds TUI\n\n");
let resp = await terminal.singleColumnMenu([
"Friends",
"Find",
"Servers",
"Quit",
]).promise;
switch (resp.selectedText) {
case "Quit": {
terminal.eraseDisplayAbove();
process.exit();
}
case "Friends": {
drawFriendsMenu();
break;
}
case "Servers": {
drawServers();
break;
}
}
}
// Turn dtype into an enum??
export async function getData(
dType: "server" | "NOT_IMPLEMENTED"
): Promise<DataTypes | undefined> {
if (dType == "server")
return (await (await fetch(serverUrl)).json()) as ServerData;
}
main();