mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 09:04:13 +02:00
move handlers for each packet to their own file
This commit is contained in:
parent
197dbb9fa5
commit
9d5e599f89
13 changed files with 431 additions and 392 deletions
50
handlers/packet/gameEvent.js
Normal file
50
handlers/packet/gameEvent.js
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
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
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue