1
0
Fork 0
mirror of https://github.com/demostf/demo.js synced 2026-06-03 16:44:12 +02:00

add encoder for voiceInit

This commit is contained in:
Robin Appelman 2017-08-16 21:55:00 +02:00
commit 7f2d702ab0
3 changed files with 39 additions and 4 deletions

View file

@ -16,7 +16,7 @@ import {ParseTempEntities} from '../Packet/TempEntities';
import {EncodeUpdateStringTable, ParseUpdateStringTable} from '../Packet/UpdateStringTable';
import {ParseUserMessage} from '../Packet/UserMessage';
import {ParseVoiceData} from '../Packet/VoiceData';
import {ParseVoiceInit} from '../Packet/VoiceInit';
import {EncodeVoiceInit, ParseVoiceInit} from '../Packet/VoiceInit';
import {Parser} from './Parser';
import {Packet as IPacket} from '../../Data/Packet';
@ -43,7 +43,7 @@ export class Packet extends Parser {
11: make('setPause', 'paused{b}'),
12: {parser: ParseCreateStringTable, encoder: EncodeCreateStringTable},
13: {parser: ParseUpdateStringTable, encoder: EncodeUpdateStringTable},
14: {parser: ParseVoiceInit, encoder: voidEncoder},
14: {parser: ParseVoiceInit, encoder: EncodeVoiceInit},
15: {parser: ParseVoiceData, encoder: voidEncoder},
17: {parser: ParseParseSounds, encoder: voidEncoder},
18: make('setView', 'index{11}'),

View file

@ -2,10 +2,12 @@ import {BitStream} from 'bit-buffer';
import {VoiceInitPacket} from '../../Data/Packet';
export function ParseVoiceInit(stream: BitStream): VoiceInitPacket {
const codec = stream.readASCIIString();
const quality = stream.readUint8();
const codec = stream.readASCIIString();
const quality = stream.readUint8();
// no clue, from 2017-2-14 update
const extraData = (codec === 'vaudio_celt' && quality === 255) ? stream.readUint16() : 0;
return {
packetType: 'voiceInit',
codec,
@ -13,3 +15,11 @@ export function ParseVoiceInit(stream: BitStream): VoiceInitPacket {
extraData,
};
}
export function EncodeVoiceInit(packet: VoiceInitPacket, stream: BitStream) {
stream.writeASCIIString(packet.codec);
stream.writeUint8(packet.quality);
if (packet.extraData) {
stream.writeUint16(packet.extraData);
}
}

View file

@ -0,0 +1,25 @@
import {BitStream} from 'bit-buffer';
import {assertEncoder, assertParser, getStream} from './PacketTest';
import {EncodeVoiceInit, ParseVoiceInit} from '../../../../Parser/Packet/VoiceInit';
const data = [118, 97, 117, 100, 105, 111, 95, 99, 101, 108, 116, 0, 255, 34, 86];
suite('VoiceInit', () => {
test('Parse voiceInit', () => {
assertParser(ParseVoiceInit, getStream(data), {
packetType: 'voiceInit',
codec: 'vaudio_celt',
quality: 255,
extraData: 22050
}, 120);
});
test('Encode voiceInit', () => {
assertEncoder(ParseVoiceInit, EncodeVoiceInit, {
packetType: 'voiceInit',
codec: 'vaudio_celt',
quality: 255,
extraData: 22050
}, 120);
});
});