UNPKG

lfs-akairo

Version:

LFS Akairo is a framework designed to simplify the creation of InSim applications.

171 lines (170 loc) 7.15 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var event_exports = {}; __export(event_exports, { Event: () => Event }); module.exports = __toCommonJS(event_exports); var import_player = require("#classes/player"); var import_logger = require("#utils/logger"); var import_packets = require("node-insim/packets"); class Event { constructor(akairo, exclude) { this.akairo = akairo; this.exclude = exclude; this.handlers = /* @__PURE__ */ new Map(); this.initialize(); import_logger.logger.info("Event listener was successfully loaded."); } initialize() { const bind = (type, handler) => { if (!this.exclude.includes(type)) { const bound = handler.bind(this); this.handlers.set(type, bound); this.akairo.insim.addListener(type, bound); } }; bind(import_packets.PacketType.ISP_NCN, this.onPlayerConnectHandler); bind(import_packets.PacketType.ISP_NCI, this.onPlayerDetailsHandler); bind(import_packets.PacketType.ISP_CNL, this.onPlayerLeftHandler); bind(import_packets.PacketType.ISP_NPL, this.onPlayerTrackHandler); bind(import_packets.PacketType.ISP_PLP, this.onPlayerPitHandler); bind(import_packets.PacketType.ISP_PLL, this.onPlayerSpectateHandler); bind(import_packets.PacketType.ISP_TOC, this.onPlayerChangeHandler); bind(import_packets.PacketType.ISP_CPR, this.onPlayerRenameHandler); bind(import_packets.PacketType.ISP_MCI, this.onCarMovementHandler); } destroy() { for (const [type, handler] of this.handlers) { this.akairo.insim.removeListener(type, handler); } this.handlers.clear(); import_logger.logger.info("Event listeners were successfully removed."); } onPlayerConnectHandler(packet) { var _a, _b; const exists = this.akairo.players.getByUniqueId(packet.UCID); if (!exists && packet.UName) { const player = new import_player.Player(this.akairo); const userName = ((_b = (_a = this.akairo.settings) == null ? void 0 : _a.filters) == null ? void 0 : _b.userNameLowerCase) ? packet.UName.toLowerCase() : packet.UName; player.uniqueId = packet.UCID; player.playerId = null; player.userName = userName; player.playerName = packet.PName; player.isAdministrator = !!packet.Admin; player.gameLanguage = null; this.akairo.players.list.set(packet.UCID, player); } } onPlayerDetailsHandler(packet) { const player = this.akairo.players.getByUniqueId(packet.UCID); if (player) { player.set("essentials.ip", packet.IPAddress); player.set("essentials.license", packet.License); player.gameLanguage = packet.Language; player.isReady = true; } } onPlayerLeftHandler(packet) { this.akairo.players.list.delete(packet.UCID); } onPlayerTrackHandler(packet) { var _a, _b; const player = (_b = (_a = this.akairo.players.getByUniqueId(packet.UCID)) != null ? _a : this.akairo.players.getByPlayerId(packet.PLID)) != null ? _b : this.akairo.players.getByPlayerName(packet.PName); if (player) { player.playerId = packet.PLID; player.set("essentials.plate", packet.Plate); player.set("essentials.player-type", packet.PType); player.set("essentials.player-flags", packet.Flags); player.set("essentials.car-name", packet.CName); player.set("essentials.skin-name", packet.SName); player.set("essentials.tyre-frontal-left", packet.TyreFL); player.set("essentials.tyre-frontal-right", packet.TyreFR); player.set("essentials.tyre-rear-left", packet.TyreRL); player.set("essentials.tyre-rear-right", packet.TyreRR); player.set("essentials.added-mass", packet.H_Mass); player.set("essentials.intake-restriction", packet.H_TRes); player.set("essentials.model", packet.Model); player.set("essentials.passenger-flags", packet.Pass); player.set("essentials.frontal-wheels-adjustment", packet.FWAdj); player.set("essentials.rear-wheels-adjustment", packet.RWAdj); player.set("essentials.race-number", packet.NumP); player.set("essentials.car-configuration", packet.Config); player.set("essentials.fuel", packet.Fuel); player.set("essentials.pit-status", "TRACK"); } } onPlayerPitHandler(packet) { const player = this.akairo.players.getByPlayerId(packet.PLID); if (player) { player.playerId = null; player.set("essentials.pit-status", "PIT"); } } onPlayerSpectateHandler(packet) { const player = this.akairo.players.getByPlayerId(packet.PLID); if (player) { player.playerId = null; player.set("essentials.pit-status", "SPECTATE"); } } onPlayerChangeHandler(packet) { const playerA = this.akairo.players.getByUniqueId(packet.OldUCID); const playerB = this.akairo.players.getByUniqueId(packet.NewUCID); if (playerA && playerB) { playerB.playerId = packet.PLID; playerA.playerId = null; playerA.set("essentials.pit-status", "SPECTATE"); playerB.set("essentials.pit-status", "TRACK"); } } onPlayerRenameHandler(packet) { const player = this.akairo.players.getByUniqueId(packet.UCID); if (player) { player.playerName = packet.PName; player.set("essentials.plate", packet.Plate); } } onCarMovementHandler(packet) { for (const info of packet.Info) { const player = this.akairo.players.getByPlayerId(info.PLID); if (player) { player.set("essentials.position.x", Math.floor(info.X / 65536)); player.set("essentials.position.y", Math.floor(info.Y / 65536)); player.set("essentials.position.z", Math.floor(info.Z / 65536)); player.set("essentials.position.raw.x", info.X); player.set("essentials.position.raw.y", info.Y); player.set("essentials.position.raw.z", info.Z); player.set( "essentials.heading.angle", Math.floor(info.Heading / 256 + 128) ); player.set("essentials.heading.raw", info.Heading); player.set("essentials.angle", Math.floor(info.AngVel / 16384)); player.set("essentials.speed.mph", Math.floor(info.Speed / 146.486067)); player.set("essentials.speed.kph", Math.floor(info.Speed / 91.02)); player.set("essentials.lap", info.Lap); } } } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Event });