lfs-akairo
Version:
LFS Akairo is a framework designed to simplify the creation of InSim applications.
171 lines (170 loc) • 7.15 kB
JavaScript
;
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
});