deadem
Version:
JavaScript (Node.js & Browsers) parser for Deadlock (Valve Source 2 Engine) demo/replay files
101 lines (84 loc) • 2.28 kB
JavaScript
import Assert from '#core/Assert.js';
const registry = {
byCode: new Map()
};
class WorkerMessageType {
/**
* @constructor
* @param {String} code
* @param {String} description
*/
constructor(code, description) {
Assert.isTrue(typeof code === 'string' && code.length > 0);
Assert.isTrue(typeof description === 'string' && description.length > 0);
this._code = code;
this._description = description;
registry.byCode.set(code, this);
}
/**
* @returns {String}
*/
get code() {
return this._code;
}
/**
* @returns {String}
*/
get description() {
return this._description;
}
/**
* @static
* @param {String} code
* @returns {WorkerMessageType|null}
*/
static parse(code) {
return registry.byCode.get(code) || null;
}
/**
* @public
* @static
* @returns {WorkerMessageType}
*/
static get DEMO_HEAVY_PACKET_PARSE() {
return demoHeavyPacketParse;
}
/**
* @public
* @static
* @returns {WorkerMessageType}
*/
static get DEMO_PACKET_SYNC() {
return demoPacketSync;
}
/**
* @public
* @static
* @returns {WorkerMessageType}
*/
static get MESSAGE_PACKET_SYNC() {
return messagePacketSync;
}
/**
* @public
* @static
* @returns {WorkerMessageType}
*/
static get SVC_CREATED_ENTITIES() {
return svcCreatedEntities;
}
/**
* @public
* @static
* @returns {WorkerMessageType}
*/
static get SVC_UPDATED_ENTITIES() {
return svcUpdatedEntities;
}
}
const demoHeavyPacketParse = new WorkerMessageType('DEMO_HEAVY_PACKET_PARSE', 'Parsing heavy demo packets');
const demoPacketSync = new WorkerMessageType('DEMO_PACKET_SYNC', 'Synchronize demo packet');
const messagePacketSync = new WorkerMessageType('MESSAGE_PACKET_SYNC', 'Synchronize message packet');
const svcCreatedEntities = new WorkerMessageType('SVC_CREATED_ENTITIES', 'Parsing SVC_CREATED_ENTITIES message');
const svcUpdatedEntities = new WorkerMessageType('SVC_UPDATED_ENTITIES', 'Parsing SVC_UPDATED_ENTITIES message');
export default WorkerMessageType;