mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 00:54:14 +02:00
add encoder for voiceData
This commit is contained in:
parent
7f2d702ab0
commit
f360011ef4
3 changed files with 47 additions and 6 deletions
|
|
@ -15,7 +15,7 @@ import {EncodeSetConVar, ParseSetConVar} from '../Packet/SetConVar';
|
||||||
import {ParseTempEntities} from '../Packet/TempEntities';
|
import {ParseTempEntities} from '../Packet/TempEntities';
|
||||||
import {EncodeUpdateStringTable, ParseUpdateStringTable} from '../Packet/UpdateStringTable';
|
import {EncodeUpdateStringTable, ParseUpdateStringTable} from '../Packet/UpdateStringTable';
|
||||||
import {ParseUserMessage} from '../Packet/UserMessage';
|
import {ParseUserMessage} from '../Packet/UserMessage';
|
||||||
import {ParseVoiceData} from '../Packet/VoiceData';
|
import {EncodeVoiceData, ParseVoiceData} from '../Packet/VoiceData';
|
||||||
import {EncodeVoiceInit, ParseVoiceInit} from '../Packet/VoiceInit';
|
import {EncodeVoiceInit, ParseVoiceInit} from '../Packet/VoiceInit';
|
||||||
import {Parser} from './Parser';
|
import {Parser} from './Parser';
|
||||||
|
|
||||||
|
|
@ -44,7 +44,7 @@ export class Packet extends Parser {
|
||||||
12: {parser: ParseCreateStringTable, encoder: EncodeCreateStringTable},
|
12: {parser: ParseCreateStringTable, encoder: EncodeCreateStringTable},
|
||||||
13: {parser: ParseUpdateStringTable, encoder: EncodeUpdateStringTable},
|
13: {parser: ParseUpdateStringTable, encoder: EncodeUpdateStringTable},
|
||||||
14: {parser: ParseVoiceInit, encoder: EncodeVoiceInit},
|
14: {parser: ParseVoiceInit, encoder: EncodeVoiceInit},
|
||||||
15: {parser: ParseVoiceData, encoder: voidEncoder},
|
15: {parser: ParseVoiceData, encoder: EncodeVoiceData},
|
||||||
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
||||||
18: make('setView', 'index{11}'),
|
18: make('setView', 'index{11}'),
|
||||||
19: make('fixAngle', 'relative{b}x{16}y{16}z{16}'),
|
19: make('fixAngle', 'relative{b}x{16}y{16}z{16}'),
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@ import {BitStream} from 'bit-buffer';
|
||||||
import {VoiceDataPacket} from '../../Data/Packet';
|
import {VoiceDataPacket} from '../../Data/Packet';
|
||||||
|
|
||||||
export function ParseVoiceData(stream: BitStream): VoiceDataPacket {
|
export function ParseVoiceData(stream: BitStream): VoiceDataPacket {
|
||||||
// 'client{8}proximity{8}length{16}_{$length}'
|
const client = stream.readUint8();
|
||||||
const client = stream.readUint8();
|
|
||||||
const proximity = stream.readUint8();
|
const proximity = stream.readUint8();
|
||||||
const length = stream.readUint16();
|
const length = stream.readUint16();
|
||||||
const data = stream.readBitStream(length);
|
const data = stream.readBitStream(length);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
packetType: 'voiceData',
|
packetType: 'voiceData',
|
||||||
client,
|
client,
|
||||||
|
|
@ -15,3 +15,17 @@ export function ParseVoiceData(stream: BitStream): VoiceDataPacket {
|
||||||
data,
|
data,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function EncodeVoiceData(packet: VoiceDataPacket, stream: BitStream) {
|
||||||
|
stream.writeUint8(packet.client);
|
||||||
|
stream.writeUint8(packet.proximity);
|
||||||
|
stream.writeUint16(packet.length);
|
||||||
|
packet.data.index = 0;
|
||||||
|
stream.writeBitStream(packet.data, packet.length);
|
||||||
|
packet.data.index = 0;
|
||||||
|
|
||||||
|
const length = stream.index;
|
||||||
|
|
||||||
|
stream.index = 0;
|
||||||
|
console.log(stream.readArrayBuffer(Math.ceil(length / 8)));
|
||||||
|
}
|
||||||
|
|
|
||||||
27
src/tests/unit/Parser/Packet/VoiceDataTest.ts
Normal file
27
src/tests/unit/Parser/Packet/VoiceDataTest.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
import {BitStream} from 'bit-buffer';
|
||||||
|
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
||||||
|
import {EncodeVoiceData, ParseVoiceData} from '../../../../Parser/Packet/VoiceData';
|
||||||
|
|
||||||
|
const data = [5, 18, 24, 0, 123, 219, 1];
|
||||||
|
|
||||||
|
suite('VoiceInit', () => {
|
||||||
|
test('Parse voiceInit', () => {
|
||||||
|
assertParser(ParseVoiceData, getStream(data), {
|
||||||
|
packetType: 'voiceData',
|
||||||
|
client: '5',
|
||||||
|
proximity: 18,
|
||||||
|
length: 24,
|
||||||
|
data: getStream([123, 219, 1])
|
||||||
|
}, 56);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Encode voiceInit', () => {
|
||||||
|
assertEncoder(ParseVoiceData, EncodeVoiceData, {
|
||||||
|
packetType: 'voiceData',
|
||||||
|
client: '5',
|
||||||
|
proximity: 18,
|
||||||
|
length: 24,
|
||||||
|
data: getStream([123, 219, 1])
|
||||||
|
}, 56);
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue