Files
Rex-EMoolator-docs/docs/pl/engine/globals.md
Patryk Gensch df6cf2f3d3
Some checks failed
docs / deploy (push) Has been cancelled
docs / build (push) Has been cancelled
Added part of docs
2026-05-19 20:51:59 +02:00

4.1 KiB

Zmienne globalne i wbudowane

Silnik udostępnia kilka kategorii zmiennych i nazw, do których można odwoływać się z dowolnego miejsca w skryptach, niezależnie od ich poziomu w hierarchii kontekstów. Niniejszy rozdział opisuje wbudowane obiekty, zmienne niejawne, specjalne procedury oraz hierarchię widoczności.

Hierarchia kontekstów

Każdy wczytywany skrypt tworzy kontekst zmiennych. Konteksty są zagnieżdżone: kontekst sceny dziedziczy po kontekście epizodu, ten po kontekście aplikacji, a ten po kontekście globalnym silnika. Wyszukiwanie zmiennej odbywa się od najniższego kontekstu w górę — zmienne z niższych poziomów przesłaniają zmienne o tej samej nazwie z poziomów wyższych, ale zmienne wyższych poziomów są widoczne z poziomów niższych.

Obiekty wbudowane

Następujące obiekty są tworzone leniwie przez silnik przy pierwszym odwołaniu i są dostępne z dowolnego kontekstu pod stałymi nazwami:

Nazwa Typ Opis
MOUSE MOUSE Stan myszy (pozycja, kliknięcia).
KEYBOARD KEYBOARD Stan klawiatury.
RAND RAND Generator liczb pseudolosowych. Dostępny również pod aliasem RANDOM.
SYSTEM SYSTEM Interfejs do funkcji systemowych (czas, środowisko).

Wszystkie cztery obiekty są singletonami w kontekście globalnym — odwołanie do nich z dowolnego skryptu trafia do tej samej instancji.

Obiekty z Application.def

Obiekty zdefiniowane w pliku Application.def — typu APPLICATION, EPISODE oraz SCENE — są ładowane do kontekstu globalnego silnika i widoczne ze wszystkich skryptów gry. Pozostałe typy w tym pliku są ignorowane (zobacz Punkt startowy).

Zmienne niejawne

Silnik wstrzykuje do skryptów kilka zmiennych nie deklarowanych jawnie.

_I_

Licznik pętli ustawiany przez instrukcję @LOOP. Jest zmienną typu INTEGER tworzoną lokalnie w kontekście bieżącej iteracji. Wartość zmienia się automatycznie wraz z postępem pętli.

Wewnątrz pętli @LOOP _I_ może być odczytywana w wyrażeniach arytmetycznych i jako argument metod:

@LOOP({*["ANIMO_"+_I_]^PLAY();}, 0, 10, 1);

Pętla @FOR pozwala podać własną nazwę licznika; w takim przypadku _I_ nie jest ustawiana.

THIS

Referencja do obiektu, który wyemitował aktualnie obsługiwany sygnał. Dostępna wyłącznie w bloku obsługi sygnału i procedurach z niego wywołanych. Szczegóły jej zachowania opisano w sekcji Zmienna THIS.

$1, $2, … $N

Argumenty procedury lub obsługi sygnału (numeracja od 1). Dostępne tylko w ciele procedury lub bloku obsługującego sygnał:

PROCEDURA:CODE={NAZWA_ZMIENNEJ^SET($1);}

Powyższa składnia jest opisana również w sekcji Argumenty procedur.

Specjalne procedury

Niektóre nazwy procedur mają znaczenie konwencjonalne — silnik wywołuje je automatycznie w określonych momentach cyklu życia.

__ONINIT__

Procedura wywoływana po zakończeniu inicjalizacji wszystkich zmiennych w wczytanym pliku. Zobacz Inicjalizacja zmiennych. Typowe zastosowanie: ustawienie stanu początkowego sceny po tym, jak wszystkie obiekty są już dostępne.

__INIT__

Procedura wywoływana po załadowaniu sceny i wykonaniu inicjalizacji zmiennych — bezpośrednio przed przekazaniem sterowania do logiki gry. Wykorzystywana do ustawiania stanu sceny zależnego od bieżącego epizodu lub aplikacji.

Konwencja nazewnictwa

Nazwy poprzedzone i zakończone dwoma podkreślnikami (__NAZWA__) są zarezerwowane dla silnika oraz dla konwencjonalnych nazw rozpoznawanych globalnie (np. __KEYB__, __INIT__, __ONINIT__). W praktyce skrypty AidemMedia używają tego formatu również dla własnych zmiennych globalnych, których nie chcą przypadkowo przesłonić w kontekstach lokalnych.