Files
Rex-EMoolator-docs/docs/en/reference/APPLICATION.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

155 lines
4.1 KiB
Markdown

# APPLICATION
The application object — the top of the script hierarchy. Declared in [`Application.def`](../engine/scripts.md#entry-point) as the first object; lists the episodes and points to the one to start with.
## Fields
### EPISODES
```
STRING EPISODES
```
The list of episode names ([`EPISODE`](EPISODE.md)) that make up the application, separated by commas. The analysed games typically contain a single entry.
### PATH
```
STRING PATH
```
Path relative to the `dane` directory where the application's files live. Used by the engine when locating the `.CNV` file bound to the application (see [Loading subsequent files](../engine/scripts.md#loading-subsequent-files)).
### STARTWITH
```
STRING STARTWITH
```
Name of the episode the engine will start the game with.
### Metadata
The following fields are stored in the script as metadata and do not directly affect engine behaviour:
- `AUTHOR` — file author.
- `BLOOMOO_VERSION` — BlooMoo engine version.
- `CREATIONTIME` — file creation date.
- `DESCRIPTION` — application description.
- `LASTMODIFYTIME` — file last-modification date.
- `VERSION` — application version.
## Methods
### EXIT
```
void EXIT()
```
Terminates the application.
**Examples**
```
GAME^EXIT();
```
### GETLANGUAGE
```
STRING GETLANGUAGE()
```
Returns the application's currently selected language. Defaults to `"POL"`.
**Returns**: the language code.
**Examples**
```
UFO^GETLANGUAGE();
```
### RUN
```
mixed RUN(STRING varName, STRING methodName, [mixed param1, ..., mixed paramN])
```
Invokes the method `methodName` on the variable `varName`, forwarding the remaining arguments. The return value is whatever the called method returns. This is the engine's dynamic-dispatch mechanism — both the target variable and the method can be selected at runtime.
**Parameters**
- `varName` — name of the target variable.
- `methodName` — name of the method to invoke.
- `param1, …, paramN` — (optional) arguments forwarded to the call.
**Returns**: the value returned by the invoked method.
**Examples**
```
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)
```
Calls the procedure `behaviourName`, but only when the currently active scene has the name `sceneName`. Otherwise the method has no effect. Useful for procedures that only make sense in a particular scene context.
**Parameters**
- `sceneName` — name of the scene in which the procedure must run.
- `behaviourName` — name of the procedure to call.
**Returns**: the value returned by the procedure, or `NULL` if the scene guard was not satisfied.
**Examples**
```
GAME^RUNENV(SCENENAME, "__HELPSTART__");
GAME^RUNENV(SCENENAME, "B_PAUSE_START");
GAME^RUNENV(SCENENAME, "__CUTINIT__");
```
### SETLANGUAGE
```
void SETLANGUAGE(STRING languageCode)
```
Sets the application's language code. The engine maps the passed Windows LCID code to an internal language identifier per the table below:
| LCID | Language | Internal ID | Subfolder |
|---|---|---|---|
| `0415` | Polish | `1` | `POL` |
| `0405` | Czech | `2` | `CZE` |
| `0402` | Bulgarian | `3` | `BUL` |
| `0418` | Romanian | `4` | `ROM` |
| `0419` | Russian | `5` | `RUS` |
| `040E` | Hungarian | `6` | `HUN` |
| `041B` | Slovak | `7` | `SLO` |
| `0422` | Ukrainian | `8` | `UKR` |
The selected identifier determines the localised-assets subfolder the engine consults when loading game files (see [Loading subsequent files](../engine/scripts.md#loading-subsequent-files)). Identifiers `9`, `10`, and `11` (set through paths other than `SETLANGUAGE`) all map to the `NIEM` subfolder — the German-language build. Any identifier outside the listed range yields an empty subfolder. Setting the language also re-initialises the keyboard layout.
**Parameters**
- `languageCode` — the LCID as a four-digit hexadecimal number.
**Examples**
```
UFO^SETLANGUAGE("0415");
UFO^SETLANGUAGE("040E");
UFO^SETLANGUAGE("0419");
```