# gameDelaySystem

## Description

Allows to schedule callbacks, events or system requests in various ways. Time / delay is expressed in seconds.

* callback is triggered only once, but nothing prevents from rescheduling it manually at your convenience.
* callback will not get triggered when set over a certain delay (like 1 or 3 minutes), but nothing prevents from rescheduling while keeping track of how long has elapsed, with a timestamp (see \[TimeSystem]).
* \[DelayID] can be kept around to interrupt a running callback, event or tick anytime (see \[this.CancelDelay], \[this.CancelEvent] and \[this.CancelTick]). You can also check how long remains before being eventually called (see \[this.GetRemainingDelayTime]).

## Functions

#### DelayCallback(delayCallback: handle:gameDelaySystemScriptedDelayCallbackWrapper, timeToDelay: Float, opt isAffectedByTimeDilation: Bool) -> gameDelayID

* `timeToDelay` : delay duration in seconds.
* `isAffectedByTimeDilation`: whether callback will be slowed down based on current active time dilation (e.g. when time slows during Sandevistan).

More info and code snippets [there](https://cyb3rpsych0s1s.github.io/4ddicted/patterns/callbacks.html).

#### DelayEvent(entity: whandle:entEntity, eventToDelay: handle:redEvent, timeToDelay: Float, opt isAffectedByTimeDilation: Bool) -> gameDelayID

Supports any class inheriting from \[Event], including custom ones.

More info and code snippets [there](https://cyb3rpsych0s1s.github.io/4ddicted/patterns/events.html#delayed-events).

#### GetRemainingDelayTime(delayID: gameDelayID) -> Float

How long remains before associated callback, event or tick gets called.

#### TickOnEvent(entity: whandle:entEntity, eventToTick: handle:gameTickableEvent, duration: Float) -> gameDelayID

More info and code snippets [there](https://cyb3rpsych0s1s.github.io/4ddicted/patterns/events.html#tickable-events).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.redmodding.org/nativedb-documentation/classes/gamedelaysystem.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
