UNPKG

node-insim

Version:

An InSim library for NodeJS with TypeScript support

148 lines (147 loc) 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.string = string; exports.stringNull = stringNull; exports.char = char; exports.byte = byte; exports.byteArray = byteArray; exports.word = word; exports.short = short; exports.unsigned = unsigned; exports.int = int; exports.float = float; exports.double = double; exports.Vector = Vector; exports.Vec = Vec; exports.array = array; exports.struct = struct; exports.carName = carName; exports.getFormat = getFormat; require("reflect-metadata"); var formatMetadataKey = Symbol('format'); /** * String of 1-byte characters * @internal */ function string(count) { return Reflect.metadata(formatMetadataKey, count === 1 ? 'c' : "".concat(count, "s")); } /** * String of 1-byte characters ending with a NULL byte * @internal */ function stringNull(count) { return Reflect.metadata(formatMetadataKey, "".concat(count, "S")); } /** * 1-byte signed integer * @internal */ function char() { return Reflect.metadata(formatMetadataKey, 'b'); } /** * 1-byte unsigned integer * @internal */ function byte() { return Reflect.metadata(formatMetadataKey, 'B'); } /** * Array of bytes * @internal */ function byteArray(count) { return Reflect.metadata(formatMetadataKey, "".concat(count, "A")); } /** * 2-byte unsigned integer * @internal */ function word() { return Reflect.metadata(formatMetadataKey, 'H'); } /** * 2-byte signed integer * @internal */ function short() { return Reflect.metadata(formatMetadataKey, 'h'); } /** * 4-byte unsigned integer * @internal */ function unsigned() { return Reflect.metadata(formatMetadataKey, 'L'); } /** * 4-byte signed integer * @internal */ function int() { return Reflect.metadata(formatMetadataKey, 'l'); } /** * 4-byte float * @internal */ function float() { return Reflect.metadata(formatMetadataKey, 'f'); } /** * 8-byte double * @internal */ function double() { return Reflect.metadata(formatMetadataKey, 'd'); } /** * 12-byte vector of 3 floats * @internal */ function Vector() { return Reflect.metadata(formatMetadataKey, 'fff'); } /** * 12-byte vector of 3 ints * @internal */ function Vec() { return Reflect.metadata(formatMetadataKey, 'lll'); } /** * Array * @internal */ function array(str, cnt) { var format = new str().getFormat(); var res = []; for (var i = 0; i < cnt; i++) { res.push(format); } return Reflect.metadata(formatMetadataKey, res.join('')); } /** * Struct * @internal */ function struct(str) { return Reflect.metadata(formatMetadataKey, new str().getFormat()); } /** * LFS car name * * The value can be one of these: * - a 3-character abbreviation of an official LFS car (e.g. XRT) * - a hexadecimal string representation of a car mod's SkinID (e.g. 5882E6) * * @internal */ function carName() { return Reflect.metadata(formatMetadataKey, 'C'); } /** @internal */ function getFormat(target, propertyKey) { return Reflect.getMetadata(formatMetadataKey, target, propertyKey); }