node-insim
Version:
An InSim library for NodeJS with TypeScript support
75 lines (74 loc) • 2.3 kB
JavaScript
import { __decorate } from "tslib";
import { byte, getFormat, stringNull } from '../decorators';
import { InSimError } from '../errors';
import { unpack } from '../lfspack';
import { Packet } from './base';
import { PacketType } from './enums';
/**
* Admin Command Report - a user typed an admin command - variable size
*/
export class IS_ACR extends Packet {
constructor() {
super(...arguments);
/** 12, 16, 20... 72 depending on Text */
this.Size = 12;
this.Type = PacketType.ISP_ACR;
this.ReqI = 0;
this.Zero = 0;
/** Connection's unique id (0 = host) */
this.UCID = 0;
/** Set if user is an admin */
this.Admin = 0;
/** 1 - processed / 2 - rejected / 3 - unknown command */
this.Result = 0;
this.Sp3 = 0;
/** 4, 8, 12... 64 characters - last byte is zero */
this.Text = '';
}
unpack(buffer) {
const data = unpack(`<${getFormat(this, 'Size')}`, buffer.buffer);
if (!data || data.length === 0) {
throw new InSimError('IS_ACR - Unpacked no data from buffer');
}
const size = data[0] * this.SIZE_MULTIPLIER;
const textLength = size - IS_ACR.FIXED_DATA_SIZE;
super.unpack(buffer, {
Text: `${textLength}s`,
});
return this;
}
}
IS_ACR.FIXED_DATA_SIZE = 8;
__decorate([
byte()
], IS_ACR.prototype, "Size", void 0);
__decorate([
byte()
], IS_ACR.prototype, "Type", void 0);
__decorate([
byte()
], IS_ACR.prototype, "ReqI", void 0);
__decorate([
byte()
], IS_ACR.prototype, "Zero", void 0);
__decorate([
byte()
], IS_ACR.prototype, "UCID", void 0);
__decorate([
byte()
], IS_ACR.prototype, "Admin", void 0);
__decorate([
byte()
], IS_ACR.prototype, "Result", void 0);
__decorate([
byte()
], IS_ACR.prototype, "Sp3", void 0);
__decorate([
stringNull(64)
], IS_ACR.prototype, "Text", void 0);
export var AdminCommandResult;
(function (AdminCommandResult) {
AdminCommandResult[AdminCommandResult["PROCESSED"] = 1] = "PROCESSED";
AdminCommandResult[AdminCommandResult["REJECTED"] = 2] = "REJECTED";
AdminCommandResult[AdminCommandResult["UNKNOWN_COMMAND"] = 3] = "UNKNOWN_COMMAND";
})(AdminCommandResult || (AdminCommandResult = {}));