mirror of
https://github.com/demostf/demo.js
synced 2026-06-03 16:44:12 +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 {EncodeUpdateStringTable, ParseUpdateStringTable} from '../Packet/UpdateStringTable';
|
||||
import {ParseUserMessage} from '../Packet/UserMessage';
|
||||
import {ParseVoiceData} from '../Packet/VoiceData';
|
||||
import {EncodeVoiceData, ParseVoiceData} from '../Packet/VoiceData';
|
||||
import {EncodeVoiceInit, ParseVoiceInit} from '../Packet/VoiceInit';
|
||||
import {Parser} from './Parser';
|
||||
|
||||
|
|
@ -44,7 +44,7 @@ export class Packet extends Parser {
|
|||
12: {parser: ParseCreateStringTable, encoder: EncodeCreateStringTable},
|
||||
13: {parser: ParseUpdateStringTable, encoder: EncodeUpdateStringTable},
|
||||
14: {parser: ParseVoiceInit, encoder: EncodeVoiceInit},
|
||||
15: {parser: ParseVoiceData, encoder: voidEncoder},
|
||||
15: {parser: ParseVoiceData, encoder: EncodeVoiceData},
|
||||
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
||||
18: make('setView', 'index{11}'),
|
||||
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';
|
||||
|
||||
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 length = stream.readUint16();
|
||||
const data = stream.readBitStream(length);
|
||||
const length = stream.readUint16();
|
||||
const data = stream.readBitStream(length);
|
||||
|
||||
return {
|
||||
packetType: 'voiceData',
|
||||
client,
|
||||
|
|
@ -15,3 +15,17 @@ export function ParseVoiceData(stream: BitStream): VoiceDataPacket {
|
|||
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