node-insim
Version:
An InSim library for NodeJS with TypeScript support
120 lines (119 loc) • 3.46 kB
JavaScript
import { __decorate } from "tslib";
import { byte, stringNull, word } from '../decorators';
import { Packet } from './base';
import { PacketType } from './enums';
/**
* Race STart
*/
export class IS_RST extends Packet {
constructor() {
super(...arguments);
this.Size = 28;
this.Type = PacketType.ISP_RST;
/** 0 unless this is a reply to an {@link TINY_RST} request */
this.ReqI = 0;
this.Zero = 0;
/** 0 if qualifying */
this.RaceLaps = 0;
/** 0 if race */
this.QualMins = 0;
/** Number of players in race */
this.NumP = 0;
/**
* Lap timing
*
* Bits 6 and 7 (Timing & 0xc0):
*
* - 0x40: standard lap timing is being used
* - 0x80: custom timing - user checkpoints have been placed
* - 0xc0: no lap timing - e.g. open config with no user checkpoints
*
* Bits 0 and 1 (Timing & 0x03): number of checkpoints if lap timing is enabled
*/
this.Timing = 0;
/** Short track name */
this.Track = '';
this.Weather = 0;
this.Wind = 0;
/** Race flags (must pit, can reset, etc.) */
this.Flags = 0;
/** Total number of nodes in the path */
this.NumNodes = 0;
/** Node index - finish line */
this.Finish = 0;
/** Node index - split 1 */
this.Split1 = 0;
/** Node index - split 2 */
this.Split2 = 0;
/** Node index - split 3 */
this.Split3 = 0;
}
}
__decorate([
byte()
], IS_RST.prototype, "Size", void 0);
__decorate([
byte()
], IS_RST.prototype, "Type", void 0);
__decorate([
byte()
], IS_RST.prototype, "ReqI", void 0);
__decorate([
byte()
], IS_RST.prototype, "Zero", void 0);
__decorate([
byte()
], IS_RST.prototype, "RaceLaps", void 0);
__decorate([
byte()
], IS_RST.prototype, "QualMins", void 0);
__decorate([
byte()
], IS_RST.prototype, "NumP", void 0);
__decorate([
byte()
], IS_RST.prototype, "Timing", void 0);
__decorate([
stringNull(6)
], IS_RST.prototype, "Track", void 0);
__decorate([
byte()
], IS_RST.prototype, "Weather", void 0);
__decorate([
byte()
], IS_RST.prototype, "Wind", void 0);
__decorate([
word()
], IS_RST.prototype, "Flags", void 0);
__decorate([
word()
], IS_RST.prototype, "NumNodes", void 0);
__decorate([
word()
], IS_RST.prototype, "Finish", void 0);
__decorate([
word()
], IS_RST.prototype, "Split1", void 0);
__decorate([
word()
], IS_RST.prototype, "Split2", void 0);
__decorate([
word()
], IS_RST.prototype, "Split3", void 0);
export var RaceFlags;
(function (RaceFlags) {
/** Vote kick/ban allowed */
RaceFlags[RaceFlags["HOSTF_CAN_VOTE"] = 1] = "HOSTF_CAN_VOTE";
/** Guest are allowed to select tracks */
RaceFlags[RaceFlags["HOSTF_CAN_SELECT"] = 2] = "HOSTF_CAN_SELECT";
/** Mid-race join allowed */
RaceFlags[RaceFlags["HOSTF_MID_RACE"] = 32] = "HOSTF_MID_RACE";
/** Pit stop required */
RaceFlags[RaceFlags["HOSTF_MUST_PIT"] = 64] = "HOSTF_MUST_PIT";
/** Car reset allowed */
RaceFlags[RaceFlags["HOSTF_CAN_RESET"] = 128] = "HOSTF_CAN_RESET";
/** Forced cockpit view */
RaceFlags[RaceFlags["HOSTF_FCV"] = 256] = "HOSTF_FCV";
/** Cruise mode (wrong way allowed) */
RaceFlags[RaceFlags["HOSTF_CRUISE"] = 512] = "HOSTF_CRUISE";
})(RaceFlags || (RaceFlags = {}));