node-insim
Version:
An InSim library for NodeJS with TypeScript support
148 lines (147 loc) • 3.06 kB
JavaScript
;
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);
}