UNPKG

unreal.js

Version:

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

203 lines (202 loc) 5.99 kB
import { FOnContainerMountedListener } from "../io/IoDispatcher"; import { FileProvider } from "../../fileprovider/FileProvider"; import { FNameMap } from "./FNameMap"; import { FPackageObjectIndex } from "./AsyncLoading2"; import { UnrealMap } from "../../util/UnrealMap"; import Collection from "@discordjs/collection"; import { FFilePackageStoreEntry } from "../io/IoContainerHeader"; import { FName } from "../objects/uobject/FName"; import { Pair } from "../../util/Pair"; import { FMinimalName } from "../objects/uobject/NameTypes"; import { FArchive } from "../reader/FArchive"; import { FIoStoreReader } from "../io/IoStore"; /** * FScriptObjectEntry */ export declare class FScriptObjectEntry { /** * objectName * @type {FMinimalName} * @public */ objectName: FMinimalName; /** * globalIndex * @type {FPackageObjectIndex} * @public */ globalIndex: FPackageObjectIndex; /** * outerIndex * @type {FPackageObjectIndex} * @public */ outerIndex: FPackageObjectIndex; /** * cdoClassIndex * @type {FPackageObjectIndex} * @public */ cdoClassIndex: FPackageObjectIndex; /** * Creates an instance using an UE4 Reader * @param {FArchive} Ar UE4 Reader to use * @param {Array<string>} nameMap Name map * @constructor * @public */ constructor(Ar: FArchive, nameMap: string[]); } /** * FPackageStore (I/O) * @extends {FOnContainerMountedListener} */ export declare class FPackageStore extends FOnContainerMountedListener { /** * Provider * @type {FileProvider} * @public */ provider: FileProvider; /** * Creates instance using values * @param {FileProvider} provider File provider to use */ constructor(provider: FileProvider); /** * Loaded containers * @type {Collection<bigint, FLoadedContainer>} * @public */ loadedContainers: Collection<bigint, FLoadedContainer>; /** * Package Name Maps Critical * @type {{}} * @public */ packageNameMapsCritical: {}; /** * Current culture names * @type {Array<string>} * @public currentCultureNames: string[] = []*/ /** * Store entries * @type {Collection<bigint, FFilePackageStoreEntry>} * @public */ storeEntries: Collection<bigint, FFilePackageStoreEntry>; /** * Redirected packages * @type {Collection<bigint, Pair<FName, bigint>>} * @public */ redirectedPackages: Collection<bigint, Pair<FName, bigint>>; /** * Script object entries * @type {Array<FScriptObjectEntry>} * @public scriptObjectEntries: FScriptObjectEntry[]*/ /** * Script object entries map * @type {UnrealMap<FPackageObjectIndex, FScriptObjectEntry>} * @public */ scriptObjectEntries: UnrealMap<FPackageObjectIndex, FScriptObjectEntry>; /** * Sets up culture * @returns {void} * @public setupCulture() { this.currentCultureNames = [osLocale.sync().toString().replace("_", "-")] }*/ /** * Sets up initial load data * @returns {void} * @public setupInitialLoadData() { const initialLoadIoBuffer = this.provider.saveChunk(createIoChunkId(0n, 0, EIoChunkType.LoaderInitialLoadMeta)) const initialLoadArchive = new FByteArchive(initialLoadIoBuffer) const numScriptObjects = initialLoadArchive.readInt32() this.scriptObjectEntries = new Array(numScriptObjects) for (let i = 0; i < numScriptObjects; ++i) { const obj = new FScriptObjectEntry(initialLoadArchive, this.globalNameMap.nameEntries) const mappedName = FMappedName.fromMinimalName(obj.objectName) if (!mappedName.isGlobal()) throw new ParserException("FMappedName must be global", initialLoadArchive) obj.objectName = this.globalNameMap.getMinimalName(mappedName) this.scriptObjectEntriesMap.set(obj.globalIndex, obj) this.scriptObjectEntries[i] = obj } }*/ /** * Loads containers * @param {Array<FIoStoreReader>} containers Containers to load * @returns {void} * @public */ loadContainers(containers: FIoStoreReader[]): void; /** * On container mounted 'event' * @param {FIoStoreReader} container Container to call * @returns {void} * @public */ onContainerMounted(container: FIoStoreReader): void; /** * Applies store redirects * @param {UnrealMap<bigint, bigint>} redirects Redirects to apply * @returns {void} * @public */ applyRedirects(redirects: UnrealMap<bigint, bigint>): void; /** * Gets an store entry * @param {bigint} packageId ID of store entry to get * @returns {FFilePackageStoreEntry} * @public */ findStoreEntry(packageId: bigint): FFilePackageStoreEntry; /** * Gets redirected package id * @param {bigint} packageId ID of redirect to get * @returns {Collection<bigint, bigint>} * @public */ getRedirectedPackageId(packageId: bigint): Pair<FName, bigint>; } /** * FLoadedContainer */ export declare class FLoadedContainer { /** * Container name map * @type {FNameMap} * @public */ containerNameMap: FNameMap; /** * Store entries * @type {Array<FFilePackageStoreEntry>} * @public */ storeEntries: FFilePackageStoreEntry[]; /** * Package count * @type {number} * @public */ packageCount: number; /** * Order * @type {number} * @public */ order: number; /** * bValid * @type {boolean} * @public */ bValid: boolean; }