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 {ParseBSPDecal} from '../Packet/BSPDecal';
|
||||||
import {ParseClassInfo} from '../Packet/ClassInfo';
|
import {ParseClassInfo} from '../Packet/ClassInfo';
|
||||||
|
|
@ -29,35 +29,35 @@ import {Packet as IPacket} from '../../Data/Packet';
|
||||||
|
|
||||||
export class Packet extends Parser {
|
export class Packet extends Parser {
|
||||||
private static parsers: PacketParserMap = {
|
private static parsers: PacketParserMap = {
|
||||||
2: ParserGenerator.make('file', 'transferId{32}fileName{s}requested{b}'),
|
2: make('file', 'transferId{32}fileName{s}requested{b}'),
|
||||||
3: ParserGenerator.make('netTick', 'tick{32}frameTime{16}stdDev{16}'),
|
3: make('netTick', 'tick{32}frameTime{16}stdDev{16}'),
|
||||||
4: ParserGenerator.make('stringCmd', 'command{s}'),
|
4: make('stringCmd', 'command{s}'),
|
||||||
5: {parser: ParseSetConVar, encoder: voidEncoder},
|
5: {parser: ParseSetConVar, encoder: voidEncoder},
|
||||||
6: ParserGenerator.make('sigOnState', 'state{8}count{32}'),
|
6: make('sigOnState', 'state{8}count{32}'),
|
||||||
7: ParserGenerator.make('print', 'value{s}'),
|
7: make('print', 'value{s}'),
|
||||||
8: ParserGenerator.make('serverInfo',
|
8: make('serverInfo',
|
||||||
'version{16}serverCount{32}stv{b}dedicated{b}maxCrc{32}maxClasses{16}' +
|
'version{16}serverCount{32}stv{b}dedicated{b}maxCrc{32}maxClasses{16}' +
|
||||||
'mapHash{128}playerCount{8}maxPlayerCount{8}intervalPerTick{f32}platform{s1}' +
|
'mapHash{128}playerCount{8}maxPlayerCount{8}intervalPerTick{f32}platform{s1}' +
|
||||||
'game{s}map{s}skybox{s}serverName{s}replay{b}'),
|
'game{s}map{s}skybox{s}serverName{s}replay{b}'),
|
||||||
10: {parser: ParseClassInfo, encoder: voidEncoder},
|
10: {parser: ParseClassInfo, encoder: voidEncoder},
|
||||||
11: ParserGenerator.make('setPause', 'paused{b}'),
|
11: make('setPause', 'paused{b}'),
|
||||||
12: {parser: ParseCreateStringTable, encoder: voidEncoder},
|
12: {parser: ParseCreateStringTable, encoder: voidEncoder},
|
||||||
13: {parser: ParseUpdateStringTable, encoder: voidEncoder},
|
13: {parser: ParseUpdateStringTable, encoder: voidEncoder},
|
||||||
14: {parser: ParseVoiceInit, encoder: voidEncoder},
|
14: {parser: ParseVoiceInit, encoder: voidEncoder},
|
||||||
15: {parser: ParseVoiceData, encoder: voidEncoder},
|
15: {parser: ParseVoiceData, encoder: voidEncoder},
|
||||||
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
||||||
18: ParserGenerator.make('setView', 'index{11}'),
|
18: make('setView', 'index{11}'),
|
||||||
19: ParserGenerator.make('fixAngle', 'relative{b}x{16}y{16}z{16}'),
|
19: make('fixAngle', 'relative{b}x{16}y{16}z{16}'),
|
||||||
21: {parser: ParseBSPDecal, encoder: voidEncoder},
|
21: {parser: ParseBSPDecal, encoder: voidEncoder},
|
||||||
23: {parser: ParseUserMessage, encoder: voidEncoder},
|
23: {parser: ParseUserMessage, encoder: voidEncoder},
|
||||||
24: {parser: ParseEntityMessage, encoder: voidEncoder},
|
24: {parser: ParseEntityMessage, encoder: voidEncoder},
|
||||||
25: {parser: ParseGameEvent, encoder: voidEncoder},
|
25: {parser: ParseGameEvent, encoder: voidEncoder},
|
||||||
26: {parser: ParsePacketEntities, encoder: voidEncoder},
|
26: {parser: ParsePacketEntities, encoder: voidEncoder},
|
||||||
27: {parser: ParseTempEntities, encoder: voidEncoder},
|
27: {parser: ParseTempEntities, encoder: voidEncoder},
|
||||||
28: ParserGenerator.make('preFetch', 'index{14}'),
|
28: make('preFetch', 'index{14}'),
|
||||||
29: {parser: ParseMenu, encoder: voidEncoder},
|
29: {parser: ParseMenu, encoder: voidEncoder},
|
||||||
30: {parser: ParseGameEventList, 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},
|
32: {parser: ParseCmdKeyValues, encoder: voidEncoder},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ import {Packet} from '../../Data/Packet';
|
||||||
import {PacketHandler, Parser} from './Parser';
|
import {PacketHandler, Parser} from './Parser';
|
||||||
|
|
||||||
export function make(name: string, definition: string): PacketHandler {
|
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) => {
|
const items = parts.map((part) => {
|
||||||
return part.split('{');
|
return part.split('{');
|
||||||
});
|
}).filter(part => part[0]);
|
||||||
return {
|
return {
|
||||||
parser: (stream) => {
|
parser: (stream) => {
|
||||||
const result = {
|
const result = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue