warscript
Version:
A typescript library for Warcraft III using Warpack.
44 lines (43 loc) • 2.65 kB
TypeScript
/// <reference types="warpack-types/warpack" />
/** @noSelfInFile */
export type LevelFieldValueProvider<T> = T | T[] | ((level: number, value: T) => T);
export declare namespace ObjectDefinition {
type TargetType = "air" | "alive" | "allies" | "ancient" | "dead" | "debris" | "decoration" | "enemies" | "friend" | "ground" | "hero" | "invulnerable" | "item" | "mechanical" | "neutral" | "nonancient" | "none" | "nonhero" | "nonsapper" | "notself" | "organic" | "player" | "sapper" | "self" | "structure" | "terrain" | "tree" | "vulnerable" | "wall" | "ward";
}
export declare class ObjectDefinition {
protected readonly object: WarObject;
protected constructor(object: WarObject);
protected setBooleanField(field: string, value: boolean): void;
protected getBooleanField(field: string): boolean;
protected setNumberField(field: string, value: number): void;
protected getNumberField(field: string): number;
protected setStringField(field: string, value: string): void;
protected getStringField(field: string): string;
protected getStringListField(field: string): string[];
protected setBooleanLevelField(field: string, values: boolean | boolean[] | ((level: number, value: boolean) => boolean)): void;
protected getBooleanLevelField(field: string): boolean[];
protected setNumberLevelField(field: string, values: number | number[] | ((level: number, value: number) => number)): void;
protected getNumberLevelField(field: string): number[];
protected setStringLevelField(field: string, values: string | string[] | ((level: number, value: string) => string)): void;
protected getStringLevelField(field: string): string[];
protected getStringListLevelField(field: string): string[][];
private getLevelField;
private setLevelField;
protected static getLevelFieldValue<T extends ObjectDefinition | string | number | boolean | undefined>(level: number, value: T, values: LevelFieldValueProvider<T>): T;
protected static getLevelArrayFieldValue<T extends ObjectDefinition | string | number | boolean | undefined>(level: number, value: T[], values: LevelFieldValueProvider<T[]>): T[];
}
interface ObjectConstructor {
[index: string]: string | number | undefined;
}
export declare enum ObjectType {
ABILITY = 0,
ITEM = 1,
UNIT = 2,
DESTRUCTABLE = 3,
DOODAD = 4,
BUFF = 5,
UPGRADE = 6
}
export declare function createObject(objectType: ObjectType, newId: string, base: string, ctor?: ObjectConstructor): WarObject;
export declare function createObject(objectType: ObjectType, base: string, ctor?: ObjectConstructor): WarObject;
export {};