mdx-m3-viewer
Version:
A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.
82 lines (81 loc) • 2.81 kB
TypeScript
import MpqArchive from './archive';
import MpqBlock from './block';
import MpqCrypto from './crypto';
import MpqHash from './hash';
/**
* A MPQ file.
*/
export default class MpqFile {
archive: MpqArchive;
c: MpqCrypto;
name: string;
nameResolved: boolean;
hash: MpqHash;
block: MpqBlock;
rawBuffer: Uint8Array | null;
buffer: Uint8Array | null;
constructor(archive: MpqArchive, hash: MpqHash, block: MpqBlock, rawBuffer: Uint8Array | null, buffer: Uint8Array | null);
/**
* Gets this file's data as a Uint8Array.
*
* An exception will be thrown if the file needs to be decoded, and decoding fails.
*/
bytes(): Uint8Array;
/**
* Gets this file's data as an ArrayBuffer.
*
* An exception will be thrown if the file needs to be decoded, and decoding fails.
*/
arrayBuffer(): ArrayBuffer;
/**
* Gets this file's data as a UTF8 string.
*
* An exception will be thrown if the file needs to be decoded, and decoding fails.
*/
text(): string;
/**
* Changes the buffer of this file.
*
* Does nothing if the archive is in readonly mode.
*/
set(buffer: Uint8Array): boolean;
/**
* Deletes this file.
*
* Using the file after it was deleted will result in undefined behavior.
*
* Does nothing if the archive is in readonly mode.
*/
delete(): boolean;
/**
* Renames this file.
*
* Note that this sets the current file's hash's status to being deleted, rather than removing it.
* This is due to the way the search algorithm works.
*
* Does nothing if the archive is in readonly mode.
*/
rename(newName: string): boolean;
/**
* Decode this file.
*/
decode(): void;
decompressSector(bytes: Uint8Array, decompressedSize: number): Uint8Array;
/**
* Encode this file.
* Archives (maps or generic MPQs) are stored uncompressed in one chunk.
* Other files are always stored in sectors, except when a file is smaller than a sector.
* Sectors themselves are always compressed, except when the result is smaller than the uncompressed data.
*/
encode(): void;
/**
* Decrypt this file and encrypt it back, with a new offset in the archive.
* This is used for files that use FILE_OFFSET_ADJUSTED_KEY, which are encrypted with a key that depends on their offset.
*/
reEncrypt(offset: number): boolean;
/**
* The offset of the file has been recalculated.
* If the offset is different, and this file uses FILE_OFFSET_ADJUSTED_KEY encryption, it must be re-encrypted with the new offset.
*/
offsetChanged(offset: number): boolean;
}