/// /** @noSelfInFile */ /** @noSelfInFile */ import { Dialog, DialogButton } from "./dialog"; import { Frame } from "./frame"; import { Handle } from "./handle"; import { MapPlayer } from "./player"; import { Unit } from "./unit"; import { Widget } from "./widget"; export declare class Trigger extends Handle { /** @deprecated use `Trigger.create` instead. */ constructor(); static create(): Trigger; set enabled(flag: boolean); get enabled(): boolean; get evalCount(): number; static get eventId(): eventid | undefined; get execCount(): number; /** * Marks the given trigger to wait/no longer wait for `TriggerSleepAction`s in sub trigger executions started via `TriggerExecuteWait`. * Since this is an attribute of the execution rather than the trigger object, this affects future runs of the given trigger, and not * those already started. */ set waitOnSleeps(flag: boolean); get waitOnSleeps(): boolean; addAction(actionFunc: () => void): triggeraction; /** * Adds a new condition to the trigger. * * Adding more conditions later wil join them by AND (that means all conditions need to evaluate to `true`) * * @example * ```ts * const t = Trigger.create() * * // trigger fires if a unit is attacked * t.registerAnyUnitEvent(EVENT_PLAYER_UNIT_ATTACKED) * * // but only if the unit name matches * t.addCondition(Condition(() => Unit.fromHandle(GetAttacker()).name === 'Attacker Unit')) * * t.addAction(() => { * //do something... * }) * ``` * @param condition The condition which must evaluate to true in order to run the trigger's actions. */ addCondition(condition: boolexpr | (() => boolean)): triggercondition | undefined; /** * @bug Do not destroy the current running Trigger (when waits are involved) * as it can cause handle stack corruption as documented [here](http://www.wc3c.net/showthread.php?t=110519). */ destroy(): void; /** * Evaluates all functions that were added to the trigger via `addCondition`. * All return-values from all added condition-functions are `and`ed together as the final return-value. * Returns the boolean value of the return value from the condition-function. * So if 0/0.0/null would be returned in the condition-function, `eval` * would return false. Note that `""` would return `true`. * @note If a condition-function crashes the thread or does not return any value `eval` will return false. * @note If you want to return false for a condition-function that returns string (for whatever reason) return `null` instead of `""` * @note *All* functions added via `addCondition` are run. There is no short-circuting. If you want short-circuting use `And` or `Or`. * @note All functions added via `addCondition` are run in the order they were added. */ eval(): boolean; /** * Calls the actions of a trigger in a new execution context. * Control will return to the caller when the trigger has finished or has been suspended via TriggerSleepAction. */ exec(): void; /** * Does the same as `exec` but if the caller has been marked with `waitOnSleeps` before its * execution, it will additionally wait for `TriggerSleepAction`s of the callee, so this really ensures that * the callee has finished. If there was a `TriggerSleepAction`, there will be a short delay before returning. */ execWait(): void; registerAnyUnitEvent(whichPlayerUnitEvent: playerunitevent): void; registerCommandEvent(whichAbility: number, order: string): event | undefined; registerDeathEvent(whichWidget: Widget): event | undefined; registerDialogButtonEvent(whichButton: DialogButton): event | undefined; registerDialogEvent(whichDialog: Dialog): event | undefined; registerEnterRegion(whichRegion: region, filter: boolexpr | (() => boolean) | undefined): event | undefined; registerFilterUnitEvent(whichUnit: unit, whichEvent: unitevent, filter: boolexpr | (() => boolean) | undefined): event | undefined; registerGameEvent(whichGameEvent: gameevent): event | undefined; registerGameStateEvent(whichState: gamestate, opcode: limitop, limitval: number): event | undefined; registerLeaveRegion(whichRegion: region, filter: boolexpr | (() => boolean) | undefined): event | undefined; registerPlayerAllianceChange(whichPlayer: MapPlayer, whichAlliance: alliancetype): event | undefined; registerPlayerChatEvent(whichPlayer: MapPlayer, chatMessageToDetect: string, exactMatchOnly: boolean): event | undefined; registerPlayerEvent(whichPlayer: MapPlayer, whichPlayerEvent: playerevent): event | undefined; registerPlayerKeyEvent(whichPlayer: MapPlayer, whichKey: oskeytype, metaKey: number, fireOnKeyDown: boolean): event | undefined; registerPlayerMouseEvent(whichPlayer: MapPlayer, whichMouseEvent: number): event | undefined; registerPlayerStateEvent(whichPlayer: MapPlayer, whichState: playerstate, opcode: limitop, limitval: number): event | undefined; registerPlayerSyncEvent(whichPlayer: MapPlayer, prefix: string, fromServer: boolean): event | undefined; registerPlayerUnitEvent(whichPlayer: MapPlayer, whichPlayerUnitEvent: playerunitevent, filter: boolexpr | (() => boolean) | undefined): event | undefined; registerTimerEvent(timeout: number, periodic: boolean): event | undefined; registerTimerExpireEvent(t: timer): event | undefined; registerTrackableHitEvent(whichTrackable: trackable): event | undefined; registerTrackableTrackEvent(whichTrackable: trackable): event | undefined; registerUnitEvent(whichUnit: Unit, whichEvent: unitevent): event | undefined; registerUnitInRage(whichUnit: unit, range: number, filter: boolexpr | (() => boolean) | undefined): event | undefined; registerUnitStateEvent(whichUnit: Unit, whichState: unitstate, opcode: limitop, limitval: number): event | undefined; registerUpgradeCommandEvent(whichUpgrade: number): event | undefined; registerVariableEvent(varName: string, opcode: limitop, limitval: number): event | undefined; removeAction(whichAction: triggeraction): void; removeActions(): void; removeCondition(whichCondition: triggercondition): void; removeConditions(): void; reset(): void; triggerRegisterFrameEvent(frame: Frame, eventId: frameeventtype): event | undefined; static fromEvent(): Trigger | undefined; static fromHandle(handle: trigger | undefined): Trigger | undefined; }