1
0
Fork 0
mirror of https://github.com/demostf/demo.js synced 2026-06-04 00:54:14 +02:00

add encoder for gameEvent

This commit is contained in:
Robin Appelman 2017-09-04 00:42:11 +02:00
commit 2e43f5bb7f
9 changed files with 802 additions and 118 deletions

View file

@ -30,7 +30,9 @@ fs.readFile(argv._[0], function (err, data) {
.map(createEventDefinition)
.join('\n\n')
+ '\n\n' + createEventDefinitionUnion(definitions) + '\n\n'
+ createEventTpeMap(definitions) + '\n';
+ 'export type GameEventType = GameEvent[\'name\'];\n\n'
+ createEventTypeMap(definitions) + '\n\n'
+ createEventTypeIdMap(parser.match.eventDefinitions) + '\n';
console.log(definition);
} else if (argv['event-list']) {
echo(Array.from(parser.match.eventDefinitions.values()));
@ -108,12 +110,21 @@ function createEventDefinitionUnion(definitions) {
+ ';';
}
function createEventTpeMap(definitions) {
function createEventTypeMap(definitions) {
return `export type GameEventTypeMap = {
${definitions.map(definition => ` ${definition.name}: ${getEventTypeName(definition.name)}Event;`).join('\n')}
${definitions.map(definition => ` ${definition.name}: ${getEventTypeName(definition.name)}Event;`).join('\n')}
};`;
}
function createEventTypeIdMap(definitionMap) {
const definitionEntries = Array.from(definitionMap.entries());
return `export type GameEventTypeId = number;
export const GameEventTypeIdMap: Map<GameEventType, GameEventTypeId> = new Map<GameEventType, GameEventTypeId>([
${definitionEntries.map(([typeId, definition]) => ` ['${definition.name}', ${typeId}],`).join('\n')}
]);`;
}
const EventNameReplace = new Map([
['ReplayReplaysavailable', 'ReplayReplaysAvailable'],
['ServerAddban', 'ServerAddBan'],