UNPKG

warscript

Version:

A typescript library for Warcraft III using Warpack.

81 lines (80 loc) 6.77 kB
/// <reference types="warpack-types/warpack" /> /** @noSelfInFile */ import { AttachmentPreset, AttachmentPresetInput } from "./auxiliary/attachment-preset"; import { MutableKeys } from "../../utility/types"; export type ObjectDataEntryId = number & { readonly __objectDataEntryId: unique symbol; }; export type ObjectDataEntryIdType<T extends ObjectDataEntry> = T extends ObjectDataEntry<infer Id> ? Id : never; export type ObjectDataEntryConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (new (object: WarObject) => T); export type ObjectDataEntryAbstractConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (abstract new (object: WarObject) => T); export type ObjectDataEntryProperties<T extends ObjectDataEntry> = Partial<T[MutableKeys<T>]>; export type ObjectDataEntryLevelFieldValueSupplier<ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType> = ValueType | readonly ValueType[] | ((level: number, currentValue: InputValueType) => ValueType); export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | Record<string, any> | undefined, InputValueType = ValueType>(supplier: ObjectDataEntryLevelFieldValueSupplier<ValueType, InputValueType>, level: number, currentValue: InputValueType) => ValueType; export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | Record<string, any> | undefined, S extends T[]>(supplier: ObjectDataEntryLevelFieldValueSupplier<S, S>, level: number, currentValue: S) => S; export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = ObjectDataEntryId> { protected readonly object: WarObject; static readonly BASE_ID: ObjectDataEntryId; protected static readonly IS_SYNTHETIC: boolean; private readonly levelFieldParametersByField; private readonly maxAffectedLevelByField; private _isInternal; get isInternal(): boolean; protected static generateId(): number; protected static getObjectData(map: WarMap): WarObjects; static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): ObjectDataEntryIdType<T>[]; static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T; static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): T[]; static getAll<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>): T[]; static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number): T | undefined; constructor(object: WarObject); get id(): Id; get baseId(): Id; get isCustom(): boolean; getFieldValue<This extends this, Args extends any[], T>(this: This, field: { getValue(entry: This, ...args: Args): T; }, ...args: Args): T; setFieldValue<This extends this, Args extends any[]>(this: This, field: { setValue(entry: This, ...args: Args): boolean; }, ...args: Args): void; protected getBooleanField(field: string): boolean; protected setBooleanField(field: string, value: boolean): void; protected getNumberField(field: string): number; protected setNumberField(field: string, value: number): void; protected getStringField(field: string): string; protected setStringField(field: string, value: string): void; protected getObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string): Id; protected setObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string, value: Id): void; protected getAttachmentPresetField(modelPathField: string, nodeFQNField: string): AttachmentPreset | undefined; protected setAttachmentPresetField(modelPathField: string, nodeFQNField: string, attachmentPreset: AttachmentPresetInput | undefined): void; protected getBooleansField(field: string): boolean[]; protected setBooleansField(field: string, values: boolean[]): void; protected getNumbersField(field: string): number[]; protected setNumbersField(field: string, values: number[]): void; protected getStringsField(field: string): string[]; protected setStringsField(field: string, values: string[]): void; protected getObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string): Id[]; protected setObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string, values: Id[]): void; protected getAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[]): AttachmentPreset[]; protected setAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[], lengthField: string, attachmentPresets: AttachmentPresetInput[]): void; protected setFlagLevelFieldValue(fieldId: string, flag: 1 | 2 | 4 | 8 | 16, supplier: ObjectDataEntryLevelFieldValueSupplier<boolean>): void; protected getFlagLevelFieldValue(fieldId: string, flag: 1 | 2 | 4 | 8 | 16): boolean[]; protected getBooleanLevelField(field: string): boolean[]; protected setBooleanLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<boolean>): void; protected getNumberLevelField(field: string): number[]; protected setNumberLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number>): void; protected getStringLevelField(field: string): string[]; protected setStringLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string>): void; protected getObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string): Id[]; protected setObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<Id>): void; protected getBooleansLevelField(field: string): boolean[][]; protected setBooleansLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<boolean[]>): void; protected getNumbersLevelField(field: string): number[][]; protected setNumbersLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number[]>): void; protected getStringsLevelField(field: string): string[][]; protected setStringsLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string[]>): void; protected getObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string): T[][]; protected setObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<T[]>): void; private getLevelField; private setLevelField; }