warscript
Version:
A typescript library for Warcraft III using Warpack.
116 lines (115 loc) • 8.52 kB
TypeScript
/** @noSelfInFile */
import { Ability } from "../internal/ability";
import { ObjectArrayField, ObjectField, ObjectFieldValueChangeEvent, ObjectLevelField, ObjectLevelFieldValueChangeEvent, ReadonlyObjectFieldType, ReadonlyObjectLevelFieldType } from "../object-field";
import { AbilityType, AbilityTypeId } from "../object-data/entry/ability-type";
import { ObjectDataEntryId } from "../object-data/entry";
import { LightningTypeId } from "../object-data/entry/lightning-type";
import { CombatClassifications } from "../object-data/auxiliary/combat-classification";
import { UnitTypeId } from "../object-data/entry/unit-type";
export declare abstract class AbilityField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectField<AbilityType, Ability, ValueType, NativeFieldType> {
protected get instanceClass(): typeof Ability;
protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<AbilityField>>;
}
export declare class AbilityBooleanField extends AbilityField<boolean, jabilitybooleanfield> {
protected get defaultValue(): boolean;
protected getNativeFieldById(id: number): jabilitybooleanfield;
protected getNativeFieldValue(instance: Ability): boolean;
protected setNativeFieldValue(instance: Ability, value: boolean): boolean;
static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityBooleanField>;
}
export declare abstract class AbilityNumberField<NativeFieldType = unknown> extends AbilityField<number, NativeFieldType> {
protected get defaultValue(): number;
static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityNumberField>;
}
export declare class AbilityFloatField extends AbilityNumberField<jabilityrealfield> {
protected getNativeFieldById(id: number): jabilityrealfield;
protected getNativeFieldValue(instance: Ability): number;
protected setNativeFieldValue(instance: Ability, value: number): boolean;
static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityFloatField>;
}
export declare class AbilityIntegerField extends AbilityNumberField<jabilityintegerfield> {
protected getNativeFieldById(id: number): jabilityintegerfield;
protected getNativeFieldValue(instance: Ability): number;
protected setNativeFieldValue(instance: Ability, value: number): boolean;
static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityIntegerField>;
}
export declare class AbilityStringField extends AbilityField<string, jabilitystringfield> {
protected get defaultValue(): string;
protected getNativeFieldById(id: number): jabilitystringfield;
protected getNativeFieldValue(instance: Ability): string;
protected setNativeFieldValue(instance: Ability, value: string): boolean;
static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityStringField>;
}
export declare abstract class AbilityArrayField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectArrayField<AbilityType, Ability, ValueType, NativeFieldType> {
protected get instanceClass(): typeof Ability;
protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
}
export declare class AbilityStringArrayField extends AbilityArrayField<string, jabilitystringlevelfield> {
protected get defaultValue(): string;
protected getNativeFieldById(id: number): jabilitystringlevelfield;
protected getNativeFieldValue(instance: Ability, index: number): string;
protected setNativeFieldValue(instance: Ability, index: number, value: string): boolean;
}
export declare abstract class AbilityObjectDataEntryIdArrayField<T extends ObjectDataEntryId = ObjectDataEntryId> extends AbilityArrayField<T, jabilitystringlevelfield> {
protected get defaultValue(): T;
protected getNativeFieldById(id: number): jabilitystringlevelfield;
protected getNativeFieldValue(instance: Ability, index: number): T;
protected setNativeFieldValue(instance: Ability, index: number, value: T): boolean;
}
export declare class AbilityLightningTypeIdArrayField extends AbilityObjectDataEntryIdArrayField<LightningTypeId> {
}
export declare abstract class AbilityLevelField<ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType = unknown> extends ObjectLevelField<AbilityType, Ability, ValueType, InputValueType, NativeFieldType> {
protected get instanceClass(): typeof Ability;
protected getLevelCount(entry: AbilityType | Ability): number;
protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<ReadonlyObjectLevelFieldType<AbilityLevelField>>;
}
export declare class AbilityBooleanLevelField extends AbilityLevelField<boolean, boolean, jabilityintegerlevelfield> {
protected get defaultValue(): boolean;
protected getNativeFieldById(id: number): jabilityintegerlevelfield;
protected getNativeFieldValue(instance: Ability, level: number): boolean;
protected setNativeFieldValue(instance: Ability, level: number, value: boolean): boolean;
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityBooleanLevelField>;
}
export declare abstract class AbilityNumberLevelField<NativeFieldType = unknown> extends AbilityLevelField<number, number, NativeFieldType> {
protected get defaultValue(): number;
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityNumberLevelField>;
}
export declare class AbilityFloatLevelField extends AbilityNumberLevelField<jabilityreallevelfield> {
protected getNativeFieldById(id: number): jabilityreallevelfield;
protected getNativeFieldValue(instance: Ability, level: number): number;
protected setNativeFieldValue(instance: Ability, level: number, value: number): boolean;
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityFloatLevelField>;
}
export declare class AbilityIntegerLevelField extends AbilityNumberLevelField<jabilityintegerlevelfield> {
protected getNativeFieldById(id: number): jabilityintegerlevelfield;
protected getNativeFieldValue(instance: Ability, level: number): number;
protected setNativeFieldValue(instance: Ability, level: number, value: number): boolean;
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityIntegerLevelField>;
}
export declare class AbilityStringLevelField extends AbilityLevelField<string, string, jabilitystringlevelfield> {
protected get defaultValue(): string;
protected getNativeFieldById(id: number): jabilitystringlevelfield;
protected getNativeFieldValue(instance: Ability, level: number): string;
protected setNativeFieldValue(instance: Ability, level: number, value: string): boolean;
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityStringLevelField>;
}
export declare abstract class AbilityObjectDataEntryIdLevelField<T extends ObjectDataEntryId = ObjectDataEntryId> extends AbilityLevelField<T, T, jabilitystringlevelfield> {
protected get defaultValue(): T;
protected getNativeFieldById(id: number): jabilitystringlevelfield;
protected getNativeFieldValue(instance: Ability, level: number): T;
protected setNativeFieldValue(instance: Ability, level: number, value: T): boolean;
}
export declare class AbilityAbilityTypeIdLevelField extends AbilityObjectDataEntryIdLevelField<AbilityTypeId> {
}
export declare class AbilityUnitTypeIdLevelField extends AbilityObjectDataEntryIdLevelField<UnitTypeId> {
}
export declare class AbilityCombatClassificationsLevelField extends AbilityLevelField<CombatClassifications, CombatClassifications, jabilityintegerlevelfield> {
protected get defaultValue(): CombatClassifications;
protected getNativeFieldById(id: number): jabilityintegerlevelfield;
protected getNativeFieldValue(instance: Ability, level: number): CombatClassifications;
protected setNativeFieldValue(instance: Ability, level: number, value: CombatClassifications): boolean;
}
export type AbilityDependentValue<ValueType extends boolean | number | string> = ValueType | AbilityField<ValueType> | AbilityLevelField<ValueType> | ((ability: Ability) => ValueType);
export declare const resolveCurrentAbilityDependentValue: <ValueType extends string | number | boolean>(ability: Ability, value: AbilityDependentValue<ValueType>) => ValueType;