@runejs/filestore
Version:
Tools for managing the RuneJS filestore.
171 lines (170 loc) • 4.84 kB
TypeScript
import { ByteBuffer } from '@runejs/common';
import type { FileIndex } from '../file-index';
import type { Filestore } from '../filestore';
import type { FileData } from '../file-data';
import type { Archive } from '../archive';
export declare abstract class WidgetBase {
id: number;
parentId: number;
type: number;
format: number;
originalX: number;
originalY: number;
x: number;
y: number;
width: number;
height: number;
menuType: number;
contentType: number;
opacity: number;
hidden: boolean;
targetVerb: string;
spellName: string;
clickMask: number;
hintText: string;
hoveredSiblingId: number;
alternateOperators: number[];
alternateRhs: number[];
cs1: number[][];
hasListeners: boolean;
/**
* Writes this unpacked widget file to the disk under `./unpacked/widgets/{widgetId}_widget.json`
*/
writeToDisk(): Promise<void>;
}
export declare class ParentWidget extends WidgetBase {
children: WidgetBase[];
constructor(id: number);
}
export declare class ContainerWidget extends WidgetBase {
type: number;
scrollHeight: number;
scrollPosition: number;
scrollWidth: number;
children?: WidgetBase[];
}
export declare class TextWidget extends WidgetBase {
type: number;
textAlignmentX: number;
textAlignmentY: number;
lineHeight: number;
fontId: number;
textShadowed: boolean;
textColor: number;
}
export declare class InteractableItemWidget extends WidgetBase {
type: number;
items: number[];
itemAmounts: number[];
itemSwapable: boolean;
isInventory: boolean;
itemUsable: boolean;
itemDeletesDraged: boolean;
itemSpritePadsX: number;
itemSpritePadsY: number;
imageX: number[];
imageY: number[];
images: number[];
options: string[];
}
export declare class RectangleWidget extends WidgetBase {
type: number;
filled: boolean;
textColor: number;
alternateTextColor: number;
hoveredTextColor: number;
alternateHoveredTextColor: number;
}
export declare class LinkWidget extends WidgetBase {
type: number;
textAlignmentX: number;
textAlignmentY: number;
lineHeight: number;
fontId: number;
textShadowed: boolean;
text: string;
alternateText: string;
textColor: number;
alternateTextColor: number;
hoveredTextColor: number;
alternateHoveredTextColor: number;
}
export declare class SpriteWidget extends WidgetBase {
type: number;
spriteId: number;
alternateSpriteId: number;
textureId: number;
tiled: boolean;
}
export declare class ModelWidget extends WidgetBase {
type: number;
modelType: number;
modelId: number;
alternateModelType: number;
alternateModelId: number;
animation: number;
alternateAnimation: number;
modelZoom: number;
rotationX: number;
rotationY: number;
rotationZ: number;
offsetX: number;
offsetY: number;
orthogonal: boolean;
}
export declare class StaticItemWidget extends WidgetBase {
type: number;
items: number[];
itemAmounts: number[];
isInventory: boolean;
itemSpritePadsX: number;
itemSpritePadsY: number;
options: string[];
textAlignmentX: number;
fontId: number;
textShadowed: boolean;
textColor: number;
}
export declare class TooltipWidget extends WidgetBase {
type: number;
text: string;
}
export declare class LineWidget extends WidgetBase {
type: number;
lineWidth: number;
textColor: number;
}
/**
* Controls game interface widget file format and storage.
*/
export declare class WidgetStore {
private fileStore;
/**
* The main file index of the widget store.
*/
readonly widgetFileIndex: FileIndex;
constructor(fileStore: Filestore);
/**
* Writes all unpacked widget files to the disk under `./unpacked/widgets/`
*/
writeToDisk(): Promise<void>;
/**
* Decodes the specified widget file.
* @param id The numeric ID of the widget file to decode.
*/
decodeWidget(id: number): WidgetBase;
/**
* Decodes the specified widget file, first determining if it is in the new or older widget format.
* @param id The numeric ID of the widget file to decode.
* @param widgetFile The file data of the widget file to decode.
*/
decodeWidgetFile(id: number, widgetFile: FileData | Archive): WidgetBase;
/**
* Decodes all widget files within the filestore.
* @returns The list of decoded WidgetBase objects from the widget store.
*/
decodeWidgetStore(): WidgetBase[];
createWidget(widgetType: number): WidgetBase;
decodeWidgetFormat2(widgetId: number, inputBuffer: ByteBuffer): WidgetBase;
decodeWidgetFormat1(widgetId: number, inputBuffer: ByteBuffer): WidgetBase;
}