mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 00:54:14 +02:00
handle utf8 text
This commit is contained in:
parent
aaef2d237e
commit
58347be247
6 changed files with 16 additions and 17 deletions
|
|
@ -6,7 +6,7 @@ var ConsoleCmd = function (type, tick, stream, length) {
|
||||||
};
|
};
|
||||||
|
|
||||||
ConsoleCmd.prototype.parse = function () {
|
ConsoleCmd.prototype.parse = function () {
|
||||||
var cmd = this.stream.readASCIIString();
|
var cmd = this.stream.readUTF8String();
|
||||||
//console.log("cmd " + cmd);
|
//console.log("cmd " + cmd);
|
||||||
return cmd;
|
return cmd;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bit-buffer": "0.0.3",
|
"bit-buffer": "icewind1991/bit-buffer"
|
||||||
"buffer": "^3.0.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
18
packet.js
18
packet.js
|
|
@ -63,7 +63,7 @@ Packet.parseGameEvent = function (eventId, stream) {
|
||||||
Packet.getGameEventValue = function (stream, entry) {
|
Packet.getGameEventValue = function (stream, entry) {
|
||||||
switch (entry.type) {
|
switch (entry.type) {
|
||||||
case 1:
|
case 1:
|
||||||
return stream.readASCIIString();
|
return stream.readUTF8String();
|
||||||
case 2:
|
case 2:
|
||||||
return stream.readFloat32();
|
return stream.readFloat32();
|
||||||
case 3:
|
case 3:
|
||||||
|
|
@ -91,7 +91,7 @@ Packet.parsers = {
|
||||||
var count = stream.readBits(8);
|
var count = stream.readBits(8);
|
||||||
var vars = {};
|
var vars = {};
|
||||||
for (var i = 0; i < count; i++) {
|
for (var i = 0; i < count; i++) {
|
||||||
vars[stream.readASCIIString()] = stream.readASCIIString();
|
vars[stream.readUTF8String()] = stream.readUTF8String();
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
packetType: 'setConVar',
|
packetType: 'setConVar',
|
||||||
|
|
@ -294,8 +294,8 @@ Packet.parsers = {
|
||||||
type : type
|
type : type
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(result);
|
//console.log(result);
|
||||||
console.log(((pos + length) - stream._index) + ' bits left');
|
//console.log(((pos + length) - stream._index) + ' bits left');
|
||||||
stream._index = pos + length;
|
stream._index = pos + length;
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
@ -383,11 +383,11 @@ Packet.userMessageParsers = {
|
||||||
if (stream.readBits(8) === 1) {
|
if (stream.readBits(8) === 1) {
|
||||||
var first = stream.readBits(8);
|
var first = stream.readBits(8);
|
||||||
if (first === 7) {
|
if (first === 7) {
|
||||||
var color = stream.readASCIIString(6);
|
var color = stream.readUTF8String(6);
|
||||||
} else {
|
} else {
|
||||||
stream._index = pos + 8;
|
stream._index = pos + 8;
|
||||||
}
|
}
|
||||||
text = stream.readASCIIString();
|
text = stream.readUTF8String();
|
||||||
if (text.substr(0, 6) === '*DEAD*') {
|
if (text.substr(0, 6) === '*DEAD*') {
|
||||||
// grave talk is in the format '*DEAD* \u0003$from\u0001: $text'
|
// grave talk is in the format '*DEAD* \u0003$from\u0001: $text'
|
||||||
var start = text.indexOf('\u0003');
|
var start = text.indexOf('\u0003');
|
||||||
|
|
@ -398,9 +398,9 @@ Packet.userMessageParsers = {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
stream._index = pos;
|
stream._index = pos;
|
||||||
kind = stream.readASCIIString();
|
kind = stream.readUTF8String();
|
||||||
from = stream.readASCIIString();
|
from = stream.readUTF8String();
|
||||||
text = stream.readASCIIString();
|
text = stream.readUTF8String();
|
||||||
stream.readASCIIString();
|
stream.readASCIIString();
|
||||||
stream.readASCIIString();
|
stream.readASCIIString();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ Generator.readItem = function (stream, description, data) {
|
||||||
return !!stream.readBits(1);
|
return !!stream.readBits(1);
|
||||||
} else if (description[0] === 's') {
|
} else if (description[0] === 's') {
|
||||||
if (description.length === 1) {
|
if (description.length === 1) {
|
||||||
return stream.readASCIIString();
|
return stream.readUTF8String();
|
||||||
} else {
|
} else {
|
||||||
length = parseInt(description.substr(1), 10);
|
length = parseInt(description.substr(1), 10);
|
||||||
return stream.readASCIIString(length);
|
return stream.readASCIIString(length);
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,11 @@ StringTable.prototype.parse = function () {
|
||||||
var entryCount = this.stream.readBits(16);
|
var entryCount = this.stream.readBits(16);
|
||||||
for (var j = 0; j < entryCount; j++) {
|
for (var j = 0; j < entryCount; j++) {
|
||||||
var entry = {
|
var entry = {
|
||||||
text: this.stream.readASCIIString()
|
text: this.stream.readUTF8String()
|
||||||
};
|
};
|
||||||
if (this.stream.readBits(1)) {
|
if (this.stream.readBits(1)) {
|
||||||
var extraDataLength = this.stream.readBits(16);
|
var extraDataLength = this.stream.readBits(16);
|
||||||
entry.extraData = this.stream.readASCIIString(extraDataLength);
|
entry.extraData = this.stream.readUTF8String(extraDataLength);
|
||||||
//console.log(entry.extraData.length-extraDataLength);
|
//console.log(entry.extraData.length-extraDataLength);
|
||||||
}
|
}
|
||||||
entries.push(entry);
|
entries.push(entry);
|
||||||
|
|
|
||||||
4
test.js
4
test.js
|
|
@ -7,6 +7,6 @@ fs.readFile("gully.dem", function (err, data) {
|
||||||
var parser = demo.getParser();
|
var parser = demo.getParser();
|
||||||
var head = parser.readHeader();
|
var head = parser.readHeader();
|
||||||
//console.log(parser.readHeader());
|
//console.log(parser.readHeader());
|
||||||
parser.parseBody()
|
//parser.parseBody()
|
||||||
//console.log(parser.parseBody());
|
console.log(parser.parseBody());
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue