UNPKG

unreal.js

Version:

A pak reader for games like VALORANT & Fortnite written in Node.JS

47 lines (46 loc) 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadNameBatch = void 0; const Utils_1 = require("../../../util/Utils"); const UnrealNames_1 = require("./UnrealNames"); /** * Loads name batch * @param {FArchive} nameDataAr Name data UE4 Reader * @param {?FArchive} hashDataAr Hash data UE4 Reader * @returns {Array<any>} Name batch * @export */ function loadNameBatch(nameDataAr, hashDataAr) { if (hashDataAr) { const hashDataSize = hashDataAr.size - hashDataAr.pos; if (!Utils_1.Utils.isAligned(hashDataSize, 8)) throw new Error(`Hashdatasize (${hashDataSize}) must be aligned to 8!`); const num = hashDataSize / 8 - 1; const arr = new Array(num); for (let i = 0; i < num; ++i) { arr[i] = UnrealNames_1.loadNameHeader(nameDataAr); } return arr; } else { const num = nameDataAr.readInt32(); if (num === 0) return []; nameDataAr.pos += 4 + 8; nameDataAr.pos += 8 * num; const headers = new Array(num); for (let i = 0; i < num; ++i) { headers[i] = new UnrealNames_1.FSerializedNameHeader(nameDataAr); } const arr = new Array(num); for (let i = 0; i < num; ++i) { const header = headers[i]; const len = header.len(); arr[i] = header.isUtf16() ? Buffer.from(nameDataAr.read(len * 2)).toString("utf16le") : Buffer.from(nameDataAr.read(len)).toString("utf-8"); } return arr; } } exports.loadNameBatch = loadNameBatch;