139 lines
2.7 KiB
Markdown
139 lines
2.7 KiB
Markdown
# TIMER
|
|
|
|
Cykliczny licznik czasu emitujący sygnał [`ONTICK`](#ontick) co `ELAPSE` milisekund. Pozwala uruchamiać kod skryptu w regularnych odstępach — bez timera nie da się w silniku zrealizować nic, co wymaga upływu czasu (animowanie wartości, opóźnienia, regeneracja).
|
|
|
|
Wartość zmiennej (`value`) typu `TIMER` to liczba dotychczas wykonanych tyknięć.
|
|
|
|
## Pola
|
|
|
|
### ELAPSE
|
|
|
|
```
|
|
INTEGER ELAPSE
|
|
```
|
|
|
|
Długość cyklu timera w milisekundach. Dla wartości `0` lub mniejszej timer nie tyka, nawet jeżeli jest włączony.
|
|
|
|
### ENABLED
|
|
|
|
```
|
|
BOOL ENABLED
|
|
```
|
|
|
|
Określa, czy timer ma działać po inicjalizacji. Domyślnie `TRUE`.
|
|
|
|
### TICKS
|
|
|
|
```
|
|
INTEGER TICKS
|
|
```
|
|
|
|
Limit cykli — po wyemitowaniu tylu tyknięć timer wyłącza się automatycznie (`ENABLED = FALSE`). Wartość `0` oznacza brak limitu (timer tyka bez końca).
|
|
|
|
## Metody
|
|
|
|
### DISABLE
|
|
|
|
```
|
|
void DISABLE()
|
|
```
|
|
|
|
Wyłącza timer. Sygnał [`ONTICK`](#ontick) przestaje być emitowany; bieżąca liczba tyknięć nie zostaje wyzerowana.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
TIMER1^DISABLE();
|
|
```
|
|
|
|
### ENABLE
|
|
|
|
```
|
|
void ENABLE()
|
|
```
|
|
|
|
Włącza timer i ustawia punkt odniesienia odmierzania na *teraz*. Pierwszy tick po wywołaniu zostanie wyemitowany po upływie pełnego `ELAPSE`, niezależnie od tego, ile czasu minęło od ostatniego wyłączenia.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
TIMCNV^ENABLE();
|
|
TIMER2^ENABLE();
|
|
```
|
|
|
|
### GETTICKS
|
|
|
|
```
|
|
INTEGER GETTICKS()
|
|
```
|
|
|
|
Zwraca liczbę dotychczas wykonanych tyknięć (zmierzoną od ostatniego wywołania [`RESET`](#reset) lub od inicjalizacji).
|
|
|
|
**Zwraca**: [`INTEGER`](INTEGER.md) — liczba tyknięć.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
TIMER1^GETTICKS();
|
|
```
|
|
|
|
### RESET
|
|
|
|
```
|
|
void RESET()
|
|
```
|
|
|
|
Zeruje licznik tyknięć i ustawia punkt odniesienia odmierzania na *teraz*.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
TIMER1^RESET();
|
|
```
|
|
|
|
### SET
|
|
|
|
```
|
|
void SET(INTEGER ticks)
|
|
```
|
|
|
|
Ustawia limit tyknięć w polu [`TICKS`](#ticks). Wartość `0` znosi limit (timer tyka bez końca).
|
|
|
|
**Parametry**
|
|
|
|
- `ticks` — nowy limit cykli.
|
|
|
|
### SETELAPSE
|
|
|
|
```
|
|
void SETELAPSE(INTEGER timeMs)
|
|
```
|
|
|
|
Ustawia długość cyklu timera w milisekundach i ustawia punkt odniesienia odmierzania na *teraz*.
|
|
|
|
**Parametry**
|
|
|
|
- `timeMs` — nowa długość cyklu (w milisekundach).
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
TIMERSEQ^SETELAPSE(RANDOM^GET(30000,10000));
|
|
TIMERPIECHUR^SETELAPSE(ARRAYPIECHURZYPARAM^GET(0));
|
|
TIMER1^SETELAPSE(VARTIMEUFO);
|
|
```
|
|
|
|
## Sygnały
|
|
|
|
### ONINIT
|
|
|
|
Wywoływany w momencie inicjalizacji obiektu.
|
|
|
|
### ONTICK
|
|
|
|
Wywoływany po każdym pełnym cyklu o długości [`ELAPSE`](#elapse), o ile timer jest włączony. Argumentem (`$1`) jest aktualna liczba tyknięć (`currentTickCount`).
|
|
|
|
### ONSIGNAL
|
|
|
|
Wywoływany po otrzymaniu sygnału (zobacz [Zdarzenia i sygnały](../engine/events.md#onsignal)).
|