mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 00:54:14 +02:00
better parsing of parserGenerator definitions
This commit is contained in:
parent
305937d8b0
commit
0f9d93b3b7
2 changed files with 14 additions and 14 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import * as ParserGenerator from '../Packet/ParserGenerator';
|
||||
import {make} from '../Packet/ParserGenerator';
|
||||
|
||||
import {ParseBSPDecal} from '../Packet/BSPDecal';
|
||||
import {ParseClassInfo} from '../Packet/ClassInfo';
|
||||
|
|
@ -29,35 +29,35 @@ import {Packet as IPacket} from '../../Data/Packet';
|
|||
|
||||
export class Packet extends Parser {
|
||||
private static parsers: PacketParserMap = {
|
||||
2: ParserGenerator.make('file', 'transferId{32}fileName{s}requested{b}'),
|
||||
3: ParserGenerator.make('netTick', 'tick{32}frameTime{16}stdDev{16}'),
|
||||
4: ParserGenerator.make('stringCmd', 'command{s}'),
|
||||
2: make('file', 'transferId{32}fileName{s}requested{b}'),
|
||||
3: make('netTick', 'tick{32}frameTime{16}stdDev{16}'),
|
||||
4: make('stringCmd', 'command{s}'),
|
||||
5: {parser: ParseSetConVar, encoder: voidEncoder},
|
||||
6: ParserGenerator.make('sigOnState', 'state{8}count{32}'),
|
||||
7: ParserGenerator.make('print', 'value{s}'),
|
||||
8: ParserGenerator.make('serverInfo',
|
||||
6: make('sigOnState', 'state{8}count{32}'),
|
||||
7: make('print', 'value{s}'),
|
||||
8: make('serverInfo',
|
||||
'version{16}serverCount{32}stv{b}dedicated{b}maxCrc{32}maxClasses{16}' +
|
||||
'mapHash{128}playerCount{8}maxPlayerCount{8}intervalPerTick{f32}platform{s1}' +
|
||||
'game{s}map{s}skybox{s}serverName{s}replay{b}'),
|
||||
10: {parser: ParseClassInfo, encoder: voidEncoder},
|
||||
11: ParserGenerator.make('setPause', 'paused{b}'),
|
||||
11: make('setPause', 'paused{b}'),
|
||||
12: {parser: ParseCreateStringTable, encoder: voidEncoder},
|
||||
13: {parser: ParseUpdateStringTable, encoder: voidEncoder},
|
||||
14: {parser: ParseVoiceInit, encoder: voidEncoder},
|
||||
15: {parser: ParseVoiceData, encoder: voidEncoder},
|
||||
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
||||
18: ParserGenerator.make('setView', 'index{11}'),
|
||||
19: ParserGenerator.make('fixAngle', 'relative{b}x{16}y{16}z{16}'),
|
||||
18: make('setView', 'index{11}'),
|
||||
19: make('fixAngle', 'relative{b}x{16}y{16}z{16}'),
|
||||
21: {parser: ParseBSPDecal, encoder: voidEncoder},
|
||||
23: {parser: ParseUserMessage, encoder: voidEncoder},
|
||||
24: {parser: ParseEntityMessage, encoder: voidEncoder},
|
||||
25: {parser: ParseGameEvent, encoder: voidEncoder},
|
||||
26: {parser: ParsePacketEntities, encoder: voidEncoder},
|
||||
27: {parser: ParseTempEntities, encoder: voidEncoder},
|
||||
28: ParserGenerator.make('preFetch', 'index{14}'),
|
||||
28: make('preFetch', 'index{14}'),
|
||||
29: {parser: ParseMenu, encoder: voidEncoder},
|
||||
30: {parser: ParseGameEventList, encoder: voidEncoder},
|
||||
31: ParserGenerator.make('getCvarValue', 'cookie{32}value{s}'),
|
||||
31: make('getCvarValue', 'cookie{32}value{s}'),
|
||||
32: {parser: ParseCmdKeyValues, encoder: voidEncoder},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@ import {Packet} from '../../Data/Packet';
|
|||
import {PacketHandler, Parser} from './Parser';
|
||||
|
||||
export function make(name: string, definition: string): PacketHandler {
|
||||
const parts = definition.substr(0, definition.length - 1).split('}'); // remove leading } to prevent empty part
|
||||
const parts = definition.split('}');
|
||||
const items = parts.map((part) => {
|
||||
return part.split('{');
|
||||
});
|
||||
}).filter(part => part[0]);
|
||||
return {
|
||||
parser: (stream) => {
|
||||
const result = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue