UNPKG

jsplanet

Version:

A controller for Trackmania 2020 dedicated server.

39 lines (38 loc) 1.47 kB
import { TypedEmitter } from "tiny-typed-emitter"; import { VERSION } from "./consts.js"; import GbxRemote from "./gbx/remote.js"; import { ChatManager, MapsManager, PlayersManager, ScoresManager, ServerManager, TeamsManager, } from "./managers/index.js"; class JsPlanet extends TypedEmitter { chatManager; mapsManager; playersManager; scoresManager; serverManager; teamsManager; remote; constructor(host, port, user, password) { super(); this.remote = new GbxRemote(host, port, user, password); this.mapsManager = new MapsManager(this.remote); this.serverManager = new ServerManager(this.remote); this.teamsManager = new TeamsManager(this.remote); this.playersManager = new PlayersManager(this, this.remote); this.chatManager = new ChatManager(this, this.remote, this.playersManager); this.scoresManager = new ScoresManager(this, this.remote, this.playersManager); this.forwardEvents(); this.once("ready", async () => { await this.chatManager.send(`$0F0JsPlanet v${VERSION} started.`); }); } async connect() { return await this.remote.connect(); } disconnect(reason) { this.remote.disconnect(reason); } forwardEvents() { this.remote.on("disconnect", this.emit.bind(this, "disconnect")); this.remote.on("ready", this.emit.bind(this, "ready")); } } export default JsPlanet;