@rhyster/wow-casc-dbc 2.9.17 → 2.11.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rhyster/wow-casc-dbc",
3
- "version": "2.9.17",
3
+ "version": "2.11.0",
4
4
  "description": "Fetch World of Warcraft data files from CASC and parse DBC/DB2 files.",
5
5
  "type": "module",
6
6
  "exports": {
package/src/dbd.ts CHANGED
@@ -281,23 +281,42 @@ export default class DBDParser {
281
281
  const castBuffer = getCastBuffer(
282
282
  typeof cell.data === 'number' ? BigInt(cell.data) : cell.data,
283
283
  srcSize,
284
- 4 * column.arraySize,
284
+ dstSize * column.arraySize,
285
285
  );
286
286
 
287
- const values: number[] = [];
288
- if (column.isSigned) {
289
- for (let i = 0; i < column.arraySize; i += 1) {
290
- const value = castBuffer.readIntLE(i * dstSize, dstSize);
291
- values.push(value);
287
+ if (dstSize > 6) {
288
+ assert(dstSize === 8, `Unexpected size ${dstSize.toString()} for column ${column.name}`);
289
+
290
+ const values: bigint[] = [];
291
+ if (column.isSigned) {
292
+ for (let i = 0; i < column.arraySize; i += 1) {
293
+ const value = castBuffer.readBigInt64LE(i * dstSize);
294
+ values.push(value);
295
+ }
296
+ } else {
297
+ for (let i = 0; i < column.arraySize; i += 1) {
298
+ const value = castBuffer.readBigUInt64LE(i * dstSize);
299
+ values.push(value);
300
+ }
292
301
  }
302
+
303
+ data[column.name] = values;
293
304
  } else {
294
- for (let i = 0; i < column.arraySize; i += 1) {
295
- const value = castBuffer.readUIntLE(i * dstSize, dstSize);
296
- values.push(value);
305
+ const values: number[] = [];
306
+ if (column.isSigned) {
307
+ for (let i = 0; i < column.arraySize; i += 1) {
308
+ const value = castBuffer.readIntLE(i * dstSize, dstSize);
309
+ values.push(value);
310
+ }
311
+ } else {
312
+ for (let i = 0; i < column.arraySize; i += 1) {
313
+ const value = castBuffer.readUIntLE(i * dstSize, dstSize);
314
+ values.push(value);
315
+ }
297
316
  }
298
- }
299
317
 
300
- data[column.name] = values;
318
+ data[column.name] = values;
319
+ }
301
320
  } else if (typeof cell.data === 'number') {
302
321
  data[column.name] = castIntegerBySize(
303
322
  cell.data,