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

use map for setconvar

This commit is contained in:
Robin Appelman 2017-09-02 16:17:25 +02:00
commit b3e69f1af4
3 changed files with 16 additions and 15 deletions

View file

@ -96,7 +96,7 @@ export interface ParseSoundsPacket extends BasePacket {
export interface SetConVarPacket extends BasePacket { export interface SetConVarPacket extends BasePacket {
packetType: 'setConVar'; packetType: 'setConVar';
vars: {[key: string]: string}; vars: Map<string, string>;
} }
export interface TempEntitiesPacket extends BasePacket { export interface TempEntitiesPacket extends BasePacket {

View file

@ -3,9 +3,11 @@ import {SetConVarPacket} from '../../Data/Packet';
export function ParseSetConVar(stream: BitStream): SetConVarPacket { // 5: setconvar export function ParseSetConVar(stream: BitStream): SetConVarPacket { // 5: setconvar
const count = stream.readUint8(); const count = stream.readUint8();
const vars: { [key: string]: string } = {}; const vars: Map<string, string> = new Map();
for (let i = 0; i < count; i++) { for (let i = 0; i < count; i++) {
vars[stream.readUTF8String()] = stream.readUTF8String(); const key = stream.readUTF8String();
const value = stream.readUTF8String();
vars.set(key, value);
} }
return { return {
packetType: 'setConVar', packetType: 'setConVar',
@ -14,10 +16,9 @@ export function ParseSetConVar(stream: BitStream): SetConVarPacket { // 5: setco
} }
export function EncodeSetConVar(packet: SetConVarPacket, stream: BitStream) { export function EncodeSetConVar(packet: SetConVarPacket, stream: BitStream) {
const keys = Object.keys(packet.vars); stream.writeUint8(packet.vars.size);
stream.writeUint8(keys.length); for (const [key, value] of packet.vars.entries()) {
for (const key of keys) {
stream.writeUTF8String(key); stream.writeUTF8String(key);
stream.writeUTF8String(packet.vars[key]); stream.writeUTF8String(value);
} }
} }

View file

@ -6,20 +6,20 @@ suite('SetConVar', () => {
test('Parse setConVar', () => { test('Parse setConVar', () => {
assertParser(ParseSetConVar, getStream(String.fromCharCode(2) + 'foo\0bar\0second\0value\0'), { assertParser(ParseSetConVar, getStream(String.fromCharCode(2) + 'foo\0bar\0second\0value\0'), {
packetType: 'setConVar', packetType: 'setConVar',
vars: { vars: new Map([
foo: 'bar', ['foo', 'bar'],
second: 'value' ['second', 'value']
} ])
}, 8 + ('foo\0bar\0second\0value\0'.length * 8)); }, 8 + ('foo\0bar\0second\0value\0'.length * 8));
}); });
test('Encode setConVar', () => { test('Encode setConVar', () => {
assertEncoder(ParseSetConVar, EncodeSetConVar, { assertEncoder(ParseSetConVar, EncodeSetConVar, {
packetType: 'setConVar', packetType: 'setConVar',
vars: { vars: new Map([
foo: 'bar', ['foo', 'bar'],
second: 'value' ['second', 'value']
} ])
}, 8 + ('foo\0bar\0second\0value\0'.length * 8)); }, 8 + ('foo\0bar\0second\0value\0'.length * 8));
}); });
}); });