teeworlds 2.0.5 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/huffman.js DELETED
@@ -1,236 +0,0 @@
1
- "use strict";
2
- // from Ryozuki, found on ddnet discord ( 11.10.2018 )
3
- // from typing import List
4
- // from sys import argv
5
- var FREQ_TABLE = [
6
- 1 << 30, 4545, 2657, 431, 1950, 919, 444, 482, 2244, 617, 838, 542, 715, 1814, 304, 240, 754, 212, 647, 186,
7
- 283, 131, 146, 166, 543, 164, 167, 136, 179, 859, 363, 113, 157, 154, 204, 108, 137, 180, 202, 176,
8
- 872, 404, 168, 134, 151, 111, 113, 109, 120, 126, 129, 100, 41, 20, 16, 22, 18, 18, 17, 19,
9
- 16, 37, 13, 21, 362, 166, 99, 78, 95, 88, 81, 70, 83, 284, 91, 187, 77, 68, 52, 68,
10
- 59, 66, 61, 638, 71, 157, 50, 46, 69, 43, 11, 24, 13, 19, 10, 12, 12, 20, 14, 9,
11
- 20, 20, 10, 10, 15, 15, 12, 12, 7, 19, 15, 14, 13, 18, 35, 19, 17, 14, 8, 5,
12
- 15, 17, 9, 15, 14, 18, 8, 10, 2173, 134, 157, 68, 188, 60, 170, 60, 194, 62, 175, 71,
13
- 148, 67, 167, 78, 211, 67, 156, 69, 1674, 90, 174, 53, 147, 89, 181, 51, 174, 63, 163, 80,
14
- 167, 94, 128, 122, 223, 153, 218, 77, 200, 110, 190, 73, 174, 69, 145, 66, 277, 143, 141, 60,
15
- 136, 53, 180, 57, 142, 57, 158, 61, 166, 112, 152, 92, 26, 22, 21, 28, 20, 26, 30, 21,
16
- 32, 27, 20, 17, 23, 21, 30, 22, 22, 21, 27, 25, 17, 27, 23, 18, 39, 26, 15, 21,
17
- 12, 18, 18, 27, 20, 18, 15, 19, 11, 17, 33, 12, 18, 15, 19, 18, 16, 26, 17, 18,
18
- 9, 10, 25, 22, 22, 17, 20, 16, 6, 16, 15, 20, 14, 18, 24, 335, 1517
19
- ], HUFFMAN_EOF_SYMBOL = 256, HUFFMAN_MAX_SYMBOLS = HUFFMAN_EOF_SYMBOL + 1, HUFFMAN_MAX_NODES = HUFFMAN_MAX_SYMBOLS * 2 - 1, HUFFMAN_LUTBITS = 10, HUFFMAN_LUTSIZE = 1 << HUFFMAN_LUTBITS, HUFFMAN_LUTMASK = HUFFMAN_LUTSIZE - 1;
20
- // class HuffmanConstructNode {
21
- // node_id: number;
22
- // frequency: number;
23
- // constructor(node_id: number, frequency: number) {
24
- // this.node_id = node_id;
25
- // this.frequency = frequency;
26
- // }
27
- // }
28
- // class HuffmanConstructNode:
29
- // def __init__(self):
30
- // self.node_id: int = None
31
- // self.frequency: int = None
32
- var Huffman = /** @class */ (function () {
33
- function Huffman(frequencies) {
34
- if (frequencies === void 0) { frequencies = FREQ_TABLE; }
35
- // this.frequencies = frequencies;
36
- this.nodes = new Array(HUFFMAN_MAX_NODES);
37
- for (var i = 0; i < HUFFMAN_MAX_NODES; i++) {
38
- this.nodes[i] = {};
39
- }
40
- this.decode_lut = new Array(HUFFMAN_LUTSIZE);
41
- this.num_nodes = 0;
42
- this.start_node_index = 0;
43
- this.construct_tree(frequencies);
44
- var xx = 0;
45
- for (var i = 0; i < HUFFMAN_LUTSIZE; i++) {
46
- var bits = i;
47
- var broke = false;
48
- var index = this.start_node_index;
49
- for (var x = 0; x < HUFFMAN_LUTBITS; x++) {
50
- if (bits & 1)
51
- index = this.nodes[index].right;
52
- else
53
- index = this.nodes[index].left;
54
- bits >>= 1;
55
- if (this.nodes[index].numbits) {
56
- this.decode_lut[i] = index;
57
- broke = true;
58
- break;
59
- }
60
- }
61
- if (!broke) {
62
- this.decode_lut[i] = index;
63
- }
64
- }
65
- }
66
- Huffman.prototype.set_bits_r = function (node_index, bits, depth) {
67
- if (this.nodes[node_index].right != 0xffff)
68
- this.set_bits_r(this.nodes[node_index].right, bits | (1 << depth), depth + 1);
69
- if (this.nodes[node_index].left != 0xffff)
70
- this.set_bits_r(this.nodes[node_index].left, bits, depth + 1);
71
- if (this.nodes[node_index].numbits) {
72
- this.nodes[node_index].bits = bits;
73
- this.nodes[node_index].numbits = depth;
74
- }
75
- };
76
- Huffman.prototype.bubble_sort = function (index_list, node_list, size) {
77
- var changed = true;
78
- while (changed) {
79
- changed = false;
80
- for (var i = 0; i < size - 1; i++) {
81
- if (node_list[index_list[i]].frequency < node_list[index_list[i + 1]].frequency) {
82
- var temp = index_list[i];
83
- index_list[i] = index_list[i + 1];
84
- index_list[i + 1] = temp;
85
- changed = true;
86
- }
87
- }
88
- size--;
89
- }
90
- return index_list;
91
- };
92
- Huffman.prototype.construct_tree = function (frequencies) {
93
- if (frequencies === void 0) { frequencies = FREQ_TABLE; }
94
- var nodes_left_storage = new Array(HUFFMAN_MAX_SYMBOLS);
95
- for (var i = 0; i < HUFFMAN_MAX_SYMBOLS; i++) {
96
- nodes_left_storage[i] = {};
97
- }
98
- var nodes_left = new Array(HUFFMAN_MAX_SYMBOLS);
99
- var num_nodes_left = HUFFMAN_MAX_SYMBOLS;
100
- for (var i = 0; i < HUFFMAN_MAX_SYMBOLS; i++) {
101
- this.nodes[i].numbits = 0xFFFFFFFF;
102
- this.nodes[i].symbol = i;
103
- this.nodes[i].left = 0xFFFF;
104
- this.nodes[i].right = 0xFFFF;
105
- if (i == HUFFMAN_EOF_SYMBOL) {
106
- nodes_left_storage[i].frequency = 1;
107
- }
108
- else
109
- nodes_left_storage[i].frequency = frequencies[i];
110
- nodes_left_storage[i].node_id = i;
111
- nodes_left[i] = i;
112
- }
113
- this.num_nodes = HUFFMAN_MAX_SYMBOLS;
114
- while (num_nodes_left > 1) {
115
- nodes_left = this.bubble_sort(nodes_left, nodes_left_storage, num_nodes_left);
116
- this.nodes[this.num_nodes].numbits = 0;
117
- this.nodes[this.num_nodes].left = nodes_left_storage[nodes_left[num_nodes_left - 1]].node_id;
118
- this.nodes[this.num_nodes].right = nodes_left_storage[nodes_left[num_nodes_left - 2]].node_id;
119
- nodes_left_storage[nodes_left[num_nodes_left - 2]].node_id = this.num_nodes;
120
- nodes_left_storage[nodes_left[num_nodes_left - 2]].frequency = nodes_left_storage[nodes_left[num_nodes_left - 1]].frequency
121
- + nodes_left_storage[nodes_left[num_nodes_left - 2]].frequency;
122
- this.num_nodes++;
123
- num_nodes_left--;
124
- }
125
- this.start_node_index = this.num_nodes - 1;
126
- this.set_bits_r(this.start_node_index, 0, 0);
127
- };
128
- Huffman.prototype.compress = function (inp_buffer, start_index, size) {
129
- if (start_index === void 0) { start_index = 0; }
130
- if (size === void 0) { size = 0; }
131
- var output = [];
132
- var bits = 0;
133
- var bitcount = 0;
134
- if (size == 0)
135
- size = inp_buffer.byteLength;
136
- inp_buffer = inp_buffer.slice(start_index, start_index + size);
137
- for (var i = 0; i < size; i++) {
138
- var x = inp_buffer[i];
139
- bits |= this.nodes[x].bits << bitcount;
140
- bitcount += this.nodes[x].numbits;
141
- while (bitcount >= 8) {
142
- output.push(bits & 0xff);
143
- bits >>= 8;
144
- bitcount -= 8;
145
- }
146
- }
147
- bits |= this.nodes[HUFFMAN_EOF_SYMBOL].bits << bitcount;
148
- bitcount += this.nodes[HUFFMAN_EOF_SYMBOL].numbits;
149
- while (bitcount >= 8) {
150
- output.push(bits & 0xff);
151
- bits >>= 8;
152
- bitcount -= 8;
153
- }
154
- output.push(bits);
155
- return Buffer.from(output);
156
- /* output = bytearray()
157
- bits = 0
158
- bitcount = 0
159
-
160
- if size is None:
161
- size = len(inp_buffer)
162
-
163
- for x in inp_buffer[start_index:size:]:
164
- bits |= self.nodes[x].bits << bitcount
165
- bitcount += self.nodes[x].numbits
166
-
167
- while bitcount >= 8:
168
- output.append(bits & 0xff)
169
- bits >>= 8
170
- bitcount -= 8
171
-
172
- bits |= self.nodes[HUFFMAN_EOF_SYMBOL].bits << bitcount
173
- bitcount += self.nodes[HUFFMAN_EOF_SYMBOL].numbits
174
-
175
- while bitcount >= 8:
176
- output.append(bits & 0xff)
177
- bits >>= 8
178
- bitcount -= 8
179
-
180
- # write out last bits
181
- output.append(bits)
182
- return output
183
- */
184
- };
185
- Huffman.prototype.decompress = function (inp_buffer, size) {
186
- if (size === void 0) { size = 0; }
187
- var bits = 0;
188
- var bitcount = 0;
189
- var eof = this.nodes[HUFFMAN_EOF_SYMBOL];
190
- var output = [];
191
- if (size == 0)
192
- size = inp_buffer.byteLength;
193
- inp_buffer = inp_buffer.slice(0, size);
194
- var src_index = 0;
195
- while (true) {
196
- var node_i = -1;
197
- if (bitcount >= HUFFMAN_LUTBITS)
198
- node_i = this.decode_lut[bits & HUFFMAN_LUTMASK];
199
- while (bitcount < 24 && src_index != size) {
200
- bits |= inp_buffer[src_index] << bitcount;
201
- bitcount += 8;
202
- src_index++;
203
- }
204
- if (node_i == -1)
205
- node_i = this.decode_lut[bits & HUFFMAN_LUTMASK];
206
- // console.log(node_i, bits & HUFFMAN_LUTMASK, this.decode_lut)
207
- if (this.nodes[node_i].numbits) {
208
- bits >>= this.nodes[node_i].numbits;
209
- bitcount -= this.nodes[node_i].numbits;
210
- }
211
- else {
212
- bits >>= HUFFMAN_LUTBITS;
213
- bitcount -= HUFFMAN_LUTBITS;
214
- while (true) {
215
- if (bits & 1) {
216
- node_i = this.nodes[node_i].right;
217
- }
218
- else
219
- node_i = this.nodes[node_i].left;
220
- bitcount -= 1;
221
- bits >>= 1;
222
- if (this.nodes[node_i].numbits)
223
- break;
224
- if (bitcount == 0)
225
- throw new Error("No more bits, decoding error");
226
- }
227
- }
228
- if (this.nodes[node_i] == eof)
229
- break;
230
- output.push(this.nodes[node_i].symbol);
231
- }
232
- return Buffer.from(output);
233
- };
234
- return Huffman;
235
- }());
236
- module.exports = Huffman;
package/lib/snapshot.js DELETED
@@ -1,397 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Snapshot = void 0;
4
- var MsgUnpacker = require('./MsgUnpacker');
5
- var decoder = new TextDecoder('utf-8');
6
- var itemAppendix = [
7
- { "type_id": 0, "size": 0, "name": "obj_ex" },
8
- { "type_id": 1, "size": 10, "name": "obj_player_input" },
9
- { "type_id": 2, "size": 6, "name": "obj_projectile" },
10
- { "type_id": 3, "size": 5, "name": "obj_laser" },
11
- { "type_id": 4, "size": 4, "name": "obj_pickup" },
12
- { "type_id": 5, "size": 3, "name": "obj_flag" },
13
- { "type_id": 6, "size": 8, "name": "obj_game_info" },
14
- { "type_id": 7, "size": 4, "name": "obj_game_data" },
15
- { "type_id": 8, "size": 15, "name": "obj_character_core" },
16
- { "type_id": 9, "size": 22, "name": "obj_character" },
17
- { "type_id": 10, "size": 5, "name": "obj_player_info" },
18
- { "type_id": 11, "size": 17, "name": "obj_client_info" },
19
- { "type_id": 12, "size": 3, "name": "obj_spectator_info" },
20
- { "type_id": 13, "size": 2, "name": "event_common" },
21
- { "type_id": 14, "size": 2, "name": "event_explosion" },
22
- { "type_id": 15, "size": 2, "name": "event_spawn" },
23
- { "type_id": 16, "size": 2, "name": "event_hammerhit" },
24
- { "type_id": 17, "size": 3, "name": "event_death" },
25
- { "type_id": 18, "size": 3, "name": "event_sound_global" },
26
- { "type_id": 19, "size": 3, "name": "event_sound_world" },
27
- { "type_id": 20, "size": 3, "name": "event_damage_indicator" }
28
- ];
29
- var items;
30
- (function (items) {
31
- items[items["OBJ_EX"] = 0] = "OBJ_EX";
32
- items[items["OBJ_PLAYER_INPUT"] = 1] = "OBJ_PLAYER_INPUT";
33
- items[items["OBJ_PROJECTILE"] = 2] = "OBJ_PROJECTILE";
34
- items[items["OBJ_LASER"] = 3] = "OBJ_LASER";
35
- items[items["OBJ_PICKUP"] = 4] = "OBJ_PICKUP";
36
- items[items["OBJ_FLAG"] = 5] = "OBJ_FLAG";
37
- items[items["OBJ_GAME_INFO"] = 6] = "OBJ_GAME_INFO";
38
- items[items["OBJ_GAME_DATA"] = 7] = "OBJ_GAME_DATA";
39
- items[items["OBJ_CHARACTER_CORE"] = 8] = "OBJ_CHARACTER_CORE";
40
- items[items["OBJ_CHARACTER"] = 9] = "OBJ_CHARACTER";
41
- items[items["OBJ_PLAYER_INFO"] = 10] = "OBJ_PLAYER_INFO";
42
- items[items["OBJ_CLIENT_INFO"] = 11] = "OBJ_CLIENT_INFO";
43
- items[items["OBJ_SPECTATOR_INFO"] = 12] = "OBJ_SPECTATOR_INFO";
44
- items[items["EVENT_COMMON"] = 13] = "EVENT_COMMON";
45
- items[items["EVENT_EXPLOSION"] = 14] = "EVENT_EXPLOSION";
46
- items[items["EVENT_SPAWN"] = 15] = "EVENT_SPAWN";
47
- items[items["EVENT_HAMMERHIT"] = 16] = "EVENT_HAMMERHIT";
48
- items[items["EVENT_DEATH"] = 17] = "EVENT_DEATH";
49
- items[items["EVENT_SOUND_GLOBAL"] = 18] = "EVENT_SOUND_GLOBAL";
50
- items[items["EVENT_SOUND_WORLD"] = 19] = "EVENT_SOUND_WORLD";
51
- items[items["EVENT_DAMAGE_INDICATOR"] = 20] = "EVENT_DAMAGE_INDICATOR";
52
- })(items || (items = {}));
53
- var Snapshot = /** @class */ (function () {
54
- function Snapshot() {
55
- }
56
- Snapshot.prototype.IntsToStr = function (pInts) {
57
- var pIntz = [];
58
- var pStr = '';
59
- for (var _i = 0, pInts_1 = pInts; _i < pInts_1.length; _i++) {
60
- var x = pInts_1[_i];
61
- pStr += String.fromCharCode((((x) >> 24) & 0xff) - 128);
62
- pIntz.push((((x) >> 24) & 0xff) - 128);
63
- pStr += String.fromCharCode((((x) >> 16) & 0xff) - 128);
64
- pIntz.push((((x) >> 16) & 0xff) - 128);
65
- pStr += String.fromCharCode((((x) >> 8) & 0xff) - 128);
66
- pIntz.push((((x) >> 8) & 0xff) - 128);
67
- pStr += String.fromCharCode(((x) & 0xff) - 128);
68
- pIntz.push(((x) & 0xff) - 128);
69
- }
70
- pIntz.splice(-1, 1);
71
- pStr = decoder.decode(new Uint8Array(pIntz));
72
- pStr = pStr.replace(/\x00|\u0000/g, ""); //.replace(/タ/g, "")
73
- return pStr;
74
- };
75
- Snapshot.prototype.parseItem = function (data, Type) {
76
- var _item = {};
77
- switch (Type) {
78
- case items.OBJ_EX:
79
- break;
80
- case items.OBJ_PLAYER_INPUT:
81
- _item = {
82
- direction: data[0],
83
- target_x: data[1],
84
- target_y: data[2],
85
- jump: data[3],
86
- fire: data[4],
87
- hook: data[5],
88
- player_flags: data[6],
89
- wanted_weapon: data[7],
90
- next_weapon: data[8],
91
- prev_weapon: data[9],
92
- };
93
- break;
94
- case items.OBJ_PROJECTILE:
95
- _item = {
96
- x: data[0],
97
- y: data[1],
98
- vel_x: data[2],
99
- vel_y: data[3],
100
- type_: data[4],
101
- start_tick: data[5],
102
- };
103
- break;
104
- case items.OBJ_LASER:
105
- _item = {
106
- x: data[0],
107
- y: data[1],
108
- from_x: data[2],
109
- from_y: data[3],
110
- start_tick: data[4],
111
- };
112
- break;
113
- case items.OBJ_PICKUP:
114
- _item = {
115
- x: data[0],
116
- y: data[1],
117
- type_: data[2],
118
- subtype: data[3],
119
- };
120
- break;
121
- case items.OBJ_FLAG:
122
- _item = {
123
- x: data[0],
124
- y: data[1],
125
- team: data[2],
126
- };
127
- break;
128
- case items.OBJ_GAME_INFO:
129
- _item = {
130
- game_flags: data[0],
131
- game_state_flags: data[1],
132
- round_start_tick: data[2],
133
- warmup_timer: data[3],
134
- score_limit: data[4],
135
- time_limit: data[5],
136
- round_num: data[6],
137
- round_current: data[7],
138
- };
139
- break;
140
- case items.OBJ_GAME_DATA:
141
- _item = {
142
- teamscore_red: data[0],
143
- teamscore_blue: data[1],
144
- flag_carrier_red: data[2],
145
- flag_carrier_blue: data[3],
146
- };
147
- break;
148
- case items.OBJ_CHARACTER_CORE:
149
- _item = {
150
- tick: data[0],
151
- x: data[1],
152
- y: data[2],
153
- vel_x: data[3],
154
- vel_y: data[4],
155
- angle: data[5],
156
- direction: data[6],
157
- jumped: data[7],
158
- hooked_player: data[8],
159
- hook_state: data[9],
160
- hook_tick: data[10],
161
- hook_x: data[11],
162
- hook_y: data[12],
163
- hook_dx: data[13],
164
- hook_dy: data[14],
165
- };
166
- break;
167
- case items.OBJ_CHARACTER:
168
- _item = {
169
- character_core: {
170
- tick: data[0],
171
- x: data[1],
172
- y: data[2],
173
- vel_x: data[3],
174
- vel_y: data[4],
175
- angle: data[5],
176
- direction: data[6],
177
- jumped: data[7],
178
- hooked_player: data[8],
179
- hook_state: data[9],
180
- hook_tick: data[10],
181
- hook_x: data[11],
182
- hook_y: data[12],
183
- hook_dx: data[13],
184
- hook_dy: data[14],
185
- },
186
- player_flags: data[15],
187
- health: data[16],
188
- armor: data[17],
189
- ammo_count: data[18],
190
- weapon: data[19],
191
- emote: data[20],
192
- attack_tick: data[21],
193
- };
194
- break;
195
- case items.OBJ_PLAYER_INFO:
196
- _item = {
197
- local: data[0],
198
- client_id: data[1],
199
- team: data[2],
200
- score: data[3],
201
- latency: data[4],
202
- };
203
- break;
204
- case items.OBJ_CLIENT_INFO:
205
- _item = {
206
- name: this.IntsToStr([data[0], data[1], data[2], data[3]]),
207
- clan: this.IntsToStr([data[4], data[5], data[6]]),
208
- country: data[7],
209
- skin: this.IntsToStr([data[8], data[9], data[10], data[11], data[12], data[13]]),
210
- use_custom_color: Number(data.slice(14, 15)),
211
- color_body: Number(data.slice(15, 16)),
212
- color_feet: Number(data.slice(16, 17)),
213
- };
214
- break;
215
- case items.OBJ_SPECTATOR_INFO:
216
- _item = {
217
- spectator_id: data[0],
218
- x: data[1],
219
- y: data[2],
220
- };
221
- break;
222
- case items.EVENT_COMMON:
223
- _item = {
224
- x: data[0],
225
- y: data[1],
226
- };
227
- break;
228
- case items.EVENT_EXPLOSION:
229
- _item = {
230
- common: {
231
- x: data[0],
232
- y: data[1]
233
- }
234
- };
235
- break;
236
- case items.EVENT_SPAWN:
237
- _item = {
238
- common: {
239
- x: data[0],
240
- y: data[1]
241
- }
242
- };
243
- break;
244
- case items.EVENT_HAMMERHIT:
245
- _item = {
246
- common: {
247
- x: data[0],
248
- y: data[1]
249
- }
250
- };
251
- break;
252
- case items.EVENT_DEATH:
253
- _item = {
254
- client_id: data[0],
255
- common: {
256
- x: data[1],
257
- y: data[2]
258
- }
259
- };
260
- break;
261
- case items.EVENT_SOUND_GLOBAL:
262
- _item = {
263
- common: {
264
- x: data[0],
265
- y: data[1]
266
- },
267
- sound_id: data[2]
268
- };
269
- break;
270
- case items.EVENT_SOUND_WORLD:
271
- _item = {
272
- common: {
273
- x: data[0],
274
- y: data[1]
275
- },
276
- sound_id: data[2]
277
- };
278
- break;
279
- case items.EVENT_DAMAGE_INDICATOR:
280
- _item = {
281
- angle: data[0],
282
- common: {
283
- x: data[0],
284
- y: data[1]
285
- },
286
- };
287
- break;
288
- }
289
- return _item;
290
- };
291
- Snapshot.prototype.unpackSnapshot = function (snap, lost) {
292
- // var size = MsgUnpacker.unpackInt(snap).result;
293
- if (lost === void 0) { lost = 0; }
294
- snap = MsgUnpacker.unpackInt(snap).remaining;
295
- /* key = (((type_id) << 16) | (id))
296
- * key_to_id = ((key) & 0xffff)
297
- * key_to_type_id = ((key >> 16) & 0xffff)
298
- * https://github.com/heinrich5991/libtw2/blob/master/snapshot/src/
299
- * https://github.com/heinrich5991/libtw2/blob/master/doc/snapshot.md
300
- */
301
- // snap = MsgUnpacker.unpackInt(snap).remaining;
302
- // console.log(MsgUnpacker.unpackInt(snap).result, "tick?") // key?
303
- // snap = MsgUnpacker.unpackInt(snap).remaining;
304
- for (var i = 0; i < (lost); i++)
305
- snap = MsgUnpacker.unpackInt(snap).remaining;
306
- // console.log(MsgUnpacker.unpackInt(snap).result, "?") // key?
307
- // snap = MsgUnpacker.unpackInt(snap).remaining;
308
- var client_infos = [];
309
- var player_infos = [];
310
- var items = { items: [], /* client_infos: client_infos, player_infos: player_infos,*/ lost: 0 };
311
- while (snap.length != 0) {
312
- snap = MsgUnpacker.unpackInt(snap).remaining;
313
- var type_id = MsgUnpacker.unpackInt(snap).result;
314
- // console.log(type_id, "type_id");
315
- snap = MsgUnpacker.unpackInt(snap).remaining;
316
- var id = MsgUnpacker.unpackInt(snap).result;
317
- // console.log(id, "id");
318
- var key = (((type_id) << 16) | (id));
319
- // console.log(key, "key")
320
- var _size = 0;
321
- if (itemAppendix[type_id] && type_id > 0) {
322
- // console.log("_size is not set")
323
- // type_id is in itemAppendix -> _size is not set!
324
- _size = itemAppendix[type_id].size;
325
- }
326
- else {
327
- // console.log("_size is set")
328
- // _size is set.
329
- snap = MsgUnpacker.unpackInt(snap).remaining;
330
- _size = (MsgUnpacker.unpackInt(snap).result);
331
- }
332
- // console.log(_size, "size!")
333
- var data = [];
334
- for (var i = 0; i < _size; i++) {
335
- snap = MsgUnpacker.unpackInt(snap).remaining;
336
- data.push(MsgUnpacker.unpackInt(snap).result);
337
- if (snap.length == 0) {
338
- items.lost++;
339
- }
340
- }
341
- if (type_id > 0x4000 || type_id == 0) {
342
- if (_size == 5 && id == 0) {
343
- // console.log("DdnetCharacter???")
344
- var Ddnet_Character = {
345
- flags: data[0],
346
- freeze_end: data[1],
347
- jumps: data[2],
348
- tele_checkpoint: data[3],
349
- strong_weak_id: data[4]
350
- // score: (!players[id] == undefined || typeof players[id].score == 'undefined') ? -1 : players[id].score
351
- };
352
- // console.log(Ddnet_Character)
353
- // if (Ddnet_Character.freeze_end > 0 || Ddnet_Character.freeze_end == -1) {// freezed or deepfreezed
354
- // } // console.log(Ddnet_Character)
355
- } // else
356
- // console.log("lolol uuid??", _size, type_id, id, data)
357
- }
358
- if (type_id == 11) {
359
- // obj_client_info!
360
- var client_info = {
361
- name: this.IntsToStr(data.slice(0, 4)),
362
- clan: this.IntsToStr(data.slice(4, 7)),
363
- country: Number(data.slice(7, 8)),
364
- skin: this.IntsToStr(data.slice(8, 14)),
365
- use_custom_color: Number(data.slice(14, 15)),
366
- color_body: Number(data.slice(15, 16)),
367
- color_feet: Number(data.slice(16, 17)),
368
- };
369
- client_infos[id] = client_info;
370
- // console.log(client_info.name, client_info.clan, client_info.skin)
371
- }
372
- else if (type_id == 10) {
373
- var player_info = {
374
- local: Number(data.slice(0, 1)),
375
- client_id: Number(data.slice(1, 2)),
376
- team: Number(data.slice(2, 3)),
377
- score: Number(data.slice(3, 4)),
378
- latency: Number(data.slice(4, 5))
379
- };
380
- player_infos[player_info.client_id] = player_info;
381
- // players[id].score = player_info.score
382
- // console.log(player_info, client_infos[player_info.client_id], data)
383
- }
384
- // if (type_id == 10 || type_id == 11)
385
- // console.log(this.parseItem(data, type_id), itemAppendix[type_id].name, type_id)
386
- var parsed = this.parseItem(data, type_id);
387
- // console.log(data)
388
- // console.log('')
389
- items.items.push({ data: data, parsed: parsed, type_id: type_id, id: id, key: key });
390
- }
391
- // items.client_infos = client_infos;
392
- // items.player_infos = player_infos;
393
- return items;
394
- };
395
- return Snapshot;
396
- }());
397
- exports.Snapshot = Snapshot;