UNPKG

warscript

Version:

A typescript library for Warcraft III using Warpack.

116 lines (115 loc) 8.52 kB
/** @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;