# APPLICATION Obiekt aplikacji — najwyższy poziom hierarchii skryptów gry. Deklarowany w pliku [`Application.def`](../engine/scripts.md#punkt-startowy) jako pierwszy obiekt; zawiera listę epizodów i wskazuje, który z nich uruchomić jako pierwszy. ## Pola ### EPISODES ``` STRING EPISODES ``` Lista nazw epizodów ([`EPISODE`](EPISODE.md)) tworzących aplikację, oddzielonych przecinkami. W analizowanych grach z reguły zawiera jedną pozycję. ### PATH ``` STRING PATH ``` Ścieżka relatywna do katalogu `dane`, w którym znajdują się pliki aplikacji. Używana przez silnik przy lokalizowaniu pliku `.CNV` powiązanego z aplikacją (zobacz [Ładowanie kolejnych plików](../engine/scripts.md#ladowanie-kolejnych-plikow)). ### STARTWITH ``` STRING STARTWITH ``` Nazwa epizodu, od którego silnik rozpocznie grę. ### Metadane Następujące pola są zapisywane w pliku skryptu jako metadane i nie wpływają bezpośrednio na działanie silnika: - `AUTHOR` — autor pliku. - `BLOOMOO_VERSION` — wersja silnika BlooMoo. - `CREATIONTIME` — data utworzenia pliku. - `DESCRIPTION` — opis aplikacji. - `LASTMODIFYTIME` — data ostatniej modyfikacji pliku. - `VERSION` — wersja aplikacji. ## Metody ### EXIT ``` void EXIT() ``` Kończy działanie aplikacji. **Przykłady** ``` GAME^EXIT(); ``` ### GETLANGUAGE ``` STRING GETLANGUAGE() ``` Zwraca aktualnie ustawiony język aplikacji. Wartością domyślną jest `"POL"`. **Zwraca**: kod języka. **Przykłady** ``` UFO^GETLANGUAGE(); ``` ### RUN ``` mixed RUN(STRING varName, STRING methodName, [mixed param1, ..., mixed paramN]) ``` Wywołuje metodę `methodName` na zmiennej `varName`, przekazując pozostałe argumenty jako jej parametry. Wartość zwracana to wynik wywołanej metody. Mechanizm pełni rolę dynamicznego wywołania — pozwala wybrać zarówno docelową zmienną, jak i metodę w runtime. **Parametry** - `varName` — nazwa docelowej zmiennej. - `methodName` — nazwa wywoływanej metody. - `param1, …, paramN` — (opcjonalnie) argumenty przekazywane do wywołania. **Zwraca**: wartość zwróconą przez wywołaną metodę. **Przykłady** ``` UFO^RUN(VARSTRINGTEMP, "SETASBUTTON", FALSE, FALSE); UFO^RUN(VARSTRINGTEMP, "HIDE"); UFO^RUN(["ANIMO"+$1], "HIDE"); UFO^RUN($1, "PLAY", $2); UFO^RUN(ARRCARS^GET(VARPLAYER), "SETPRIORITY", ARRPRIORITY^GET(VARPLAYER)); ``` ### RUNENV ``` mixed RUNENV(STRING sceneName, STRING behaviourName) ``` Wywołuje procedurę `behaviourName`, ale tylko wtedy, gdy aktualnie aktywna scena ma nazwę `sceneName`. W przeciwnym razie metoda nie ma efektu. Mechanizm służy do warunkowego uruchamiania procedur, które mają sens wyłącznie w konkretnym kontekście sceny. **Parametry** - `sceneName` — nazwa sceny, w której procedura ma być wykonana. - `behaviourName` — nazwa wywoływanej procedury. **Zwraca**: wartość zwróconą przez procedurę lub `NULL`, jeżeli warunek sceny nie został spełniony. **Przykłady** ``` GAME^RUNENV(SCENENAME, "__HELPSTART__"); GAME^RUNENV(SCENENAME, "B_PAUSE_START"); GAME^RUNENV(SCENENAME, "__CUTINIT__"); ``` ### SETLANGUAGE ``` void SETLANGUAGE(STRING languageCode) ``` Ustawia kod języka aplikacji. Silnik mapuje przekazany kod LCID Windows na wewnętrzny identyfikator języka według poniższej tabeli: | Kod LCID | Język | Wewnętrzny ID | Podkatalog | |---|---|---|---| | `0415` | polski | `1` | `POL` | | `0405` | czeski | `2` | `CZE` | | `0402` | bułgarski | `3` | `BUL` | | `0418` | rumuński | `4` | `ROM` | | `0419` | rosyjski | `5` | `RUS` | | `040E` | węgierski | `6` | `HUN` | | `041B` | słowacki | `7` | `SLO` | | `0422` | ukraiński | `8` | `UKR` | Wybrany identyfikator decyduje o podkatalogu z lokalizowanymi zasobami, z którego silnik wczytuje pliki gry (zobacz [Ładowanie kolejnych plików](../engine/scripts.md#ladowanie-kolejnych-plikow)). Identyfikatory `9`, `10` i `11` (ustawiane inną drogą niż `SETLANGUAGE`) odpowiadają podkatalogowi `NIEM` — wersji niemieckojęzycznej. Identyfikator spoza powyższego zakresu skutkuje pustym podkatalogiem. Po ustawieniu języka silnik ponownie inicjalizuje również układ klawiatury. **Parametry** - `languageCode` — kod LCID w postaci czterocyfrowej liczby szesnastkowej. **Przykłady** ``` UFO^SETLANGUAGE("0415"); UFO^SETLANGUAGE("040E"); UFO^SETLANGUAGE("0419"); ```