1
0
Fork 0
mirror of https://github.com/demostf/demo.js synced 2026-06-04 00:54:14 +02:00
demo.js/handlers/packet/gameEvent.js
2015-04-01 20:56:04 +02:00

50 lines
1.1 KiB
JavaScript

var parseGameEvent = function (eventId, stream, events) {
if (!events[eventId]) {
return 'unknown';
}
var eventDescription = events[eventId];
var values = {};
for (var i = 0; i < eventDescription.entries.length; i++) {
var entry = eventDescription.entries[i];
values[entry.name] = getGameEventValue(stream, entry);
}
return {
name : eventDescription.name,
type : eventDescription.type,
values: values
};
};
var getGameEventValue = function (stream, entry) {
switch (entry.type) {
case 1:
return stream.readUTF8String();
case 2:
return stream.readFloat32();
case 3:
return stream.readInt32();
case 4:
return stream.readBits(16);
case 5:
return stream.readBits(8);
case 6:
return !!stream.readBits(1);
case 7:
return 'local value';
default:
throw 'invalid game event type';
}
};
module.exports = function (stream, events) { // 25: game event
var length = stream.readBits(11);
var end = stream._index + length;
var eventId = stream.readBits(9);
var event = parseGameEvent(eventId, stream, events);
stream._index = end;
return {
packetType: 'gameEvent',
event : event
}
};