---
# System prepended metadata

title: Spis treści

---

# Spis treści
1. [Słownik pojęć](#1.-Słownik-pojęć)

    1.1. [Znormalizowana wartość](#1.1.-Znormalizowana-wartość)

    1.2. [FieldModifier](#1.2.-FieldModifier)

    1.3. [Color hash](#1.3.-Color-hash)

    1.4. [Position](#1.4.-Position)

    1.5. [ShroomType](#1.5.-ShroomType)

    1.6. [ShaderFieldModifier](#1.6.-ShaderFieldModifier)

2. [Timeline](#2.-Timeline)

    2.1. [TimelineEntry](#2.1.-TimelineEntry)

    2.2. [TimelineEvent](#2.2.-TimelineEvent)
3. [Eventy](#3.-Eventy)

    3.1. [AudioEvent](#3.1.-AudioEvent)

    3.2. [BossEvent](#3.2.-BossEvent)

    3.3. [GridEvent](#3.3.-GridEvent)

    3.4. [JumbotronEvent](#3.4.-JumbotronEvent)

    3.5. [ParticleEvent](#3.5.-ParticleEvent)

    3.6. [ShaderEvent](#3.6.-ShaderEvent)

    3.7. [ShroomEmitterEvent](#3.7.-ShroomEmitterEvent)

    3.8. [ShroomEvent](#3.8.-ShroomEvent)

    3.9. [PlayerEvent](#3.9.-PlayerEvent)


# 1. **Słownik pojęć**

### 1.1. **Znormalizowana wartość**
To taka wartość typu `Number`, która mieści się w przedziale `[ 0.0; 1.0 ]`.


### 1.2. **FieldModifier**
To taka wartość, która może być jednocześnie reprezentowana jako pojedynczy element albo tablica o rozmiarze 2. Jej celem jest możliwość przekazania nie tylko informacji o docelowej wartości ale również o czasie i sposobie transformacji aktualnej wartości do oczekiwanej. Pierwszy indeks oznacza docelową wartość natomiast drugi określa o ile ta wartość ma być zmieniana co `1/60` sekundy. Tablicę możemy przedstawić w pseudo-schemacie:
```json
[
    "destValue",
    "?changeFactor"
]
```
gdzie:
 - `destValue` określa wartość docelową
 - `?changeFactor` określa prędkość zmiany. Wartość ta jest opcjonalna, jeżeli nie zostanie podana to zostanie użyta domyślna wartość, która wynosi `1.0`.

### 1.3. **Color hash**
Jest to reprezentacja koloru `RGBA` w postaci `Stringa`. Kanał alpha jest opcjonalny. Należy pamiętać o rozpoczęciu tego Stringa od znaku `#`. Przykłady: `"#ff00aa"`, `"#36ff0036"`.

### 1.4. **Position**
Jest to tablica `Number[]` o wielkości `2`, gdzie pierwszy indeks opisuje [znormalizowane](#Znormalizowana-wartość) koordynaty poziome, a drugi indeks opisuje [znormalizowane](#Znormalizowana-wartość) koordynaty pionowe.

### 1.5. **ShroomType**
| Klucz | Typ | Opis |
| - | - | - |
| "name" | `?String` | rodzaj typu, lista dostępnych typów dostępna jest poniżej |
| "randomShader | `?Boolean` | czy jeżeli typ jest zgodny i nie zostały podane żadne `shaderTemplates` to czy `shroom` ma wykorzystać losowy shader (silnik losuje shader co 5 sekund)
| "shaderTemplates" | `?Object` | obiekt klasy `ShaderEvent`
### Dostępne "names"
- good
- bad
- default
### Przykład
```json
{
    "name": "good",
    "randomShader": true,
    "shaderTemplates": [ ... ]
}
```

### 1.6. **ShaderFieldModifier**
Działa podobnie jak [FieldModifier](FieldModifier). Składa się z tablicy `Number[]` o rozmiarze do 4. Każdy kolejny parametr jest opcjonalny. Tablicę możemy przedstawić w pseudo-schemacie:
```json
[
    "parameterBegin",
    "?parameterEnd",
    "?parameterFactor",
    "?parameterFactorChanger"
]
```
gdzie:
 - `parameterBegin` określa wartość startową
 - `?parameterEnd` określa wartość końcową. Domyślnie jest to wartość podana w `parameterBegin`
 - `?parameterFactor` określa prędkość zmiany. Wartość ta jest opcjonalna, jeżeli nie zostanie podana to zostanie użyta domyślna wartość, która wynosi `1.0`
 - `?parameterFactorChanger` określa co ile ma być zwiększany `parameterFactor`. Domyślnie wynosi `0.0`

# 2. **Timeline**
Timeline to obiekt JSON składający się z kolekcji `TimelineEntry`.
### Przykład
```
[ ... ]
```
[wróć do spisu treści](#Spis-treści)

## 2.1. **TimelineEntry**
| Klucz | Typ | Opis |
| - | - | - |
| "time" | `Number` | czas, w którym mają zostać wywołane eventy znajdujące się w "events" |
| "events" | `Object[]` | kolekcja `TimelineEvent` |
### Przykład
```json
{
    "time": 0.0,
    "events: [ ... ]
}
```
[wróć do spisu treści](#Spis-treści)

## 2.2. **TimelineEvent** GameEvent // wyjebac Timeline z nazwy i zastapic moze czyms innym

| Klucz | Typ | Opis |
| - | - | - |
| "type" | `String` | nazwa eventu
| "data" | `Object` | event

### Dostępne Eventy
 - [AudioEvent](#3.1.-AudioEvent)
 - [BossEvent](#3.2.-BossEvent)
 - [GridEvent](#3.3.-GridEvent)
 - [JumbotronEvent](#3.4.-JumbotronEvent)
 - [ParticleEvent](#3.5.-ParticleEvent)
 - [ShaderEvent](#3.6.-ShaderEvent)
 - [ShroomEmitterEvent](#3.7.-ShroomEmitterEvent)
 - [ShroomEvent](#3.8.-ShroomEvent)
 - [PlayerEvent](#3.9.-PlayerEvent)

### Przykład
```json
{
    "type": "AudioEvent",
    "data": { ... }
}
```
[wróć do spisu treści](#Spis-treści)

# 3. **Eventy**

## 3.1 **AudioEvent**
| Klucz | Typ | Opis |
| - | - | - |
| "assetName" | `String` | nazwa zasobu dźwiękowego. Musi być taka sama jak w GMS albo taka, jak dostarczona w `resource-pack` |
| "priority" | `Number` | [GMS audio priority](https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/audio/audio_play_sound.html)  |
| "loop" | `Boolean` | czy dźwięk ma być odtwarzany w pętli |
| "trackPosition" | `Number` | [GMS track position](https://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sounds/audio_sound_set_track_position.html) |
### Przykład
```json
{
    "assetName": "asset_ost_ballada_o_dojrzalosci",
    "priority": 100,
    "loop": true
}
```
[wróć do spisu treści](#Spis-treści)

## 3.2. **BossEvent**
| Klucz | Typ | Opis |
| - | - | - |
| "type" | `String` | nazwa bossa, lista dostępnych bossów znajduje się poniżej |
### Dostępne "bossy"
- bugz
- dzban
### Przykład
```json
{
    "type": "bugz"
}
```
[wróć do spisu treści](#Spis-treści)

## 3.3. **GridEvent** GridRendererEvent
| Klucz | Typ | Opis |
| - | - | - |
| topLineWidth | `?Number` [@FieldModifier](#FieldModifier) | [znormalizowana](#Znormalizowana-wartość) długość górnej linii siatki  |
| topLinePosition | `?Number` [@FieldModifier](#FieldModifier) | [znormalizowana](#Znormalizowana-wartość) opisująca horyznotalne położenie środa górnej linii siatki (np. wartość `0.5` odpowiada środkowi) |
| bottomLineWidth | `?Number` [@FieldModifier](#FieldModifier) | [znormalizowana](#Znormalizowana-wartość) długość dolnej linii siatki |
| channels | `?Number` [@FieldModifier](#FieldModifier) | liczba kanałów siatki (pionowe linie).
| offsetTop | `?Number` [@FieldModifier](#FieldModifier) | [znormalizowana](#Znormalizowana-wartość) określająca margines górny siatki
| offsetBottom | `?Number` [@FieldModifier](#FieldModifier) | [znormalizowana](#Znormalizowana-wartość) określająca margines dolny siatki |
| colorPrimaryLines | `?String` [@FieldModifier](#FieldModifier) | [color hash](#Color-hash) głównych liń siatki
| colorSecondaryLines | `?String` [@FieldModifier](#FieldModifier) | [color hash](#Color-hash) pozostałych liń siatki
| colorGridBackground | `?String` [@FieldModifier](#FieldModifier) | [color hash](#Color-hash) tła warstwy siatki
| primaryLinesWidth | `?Number` [@FieldModifier](#FieldModifier) | grubość głównych liń siatki (domyślna wartość: `3.0`) |
| secondaryLinesWidth | `?Number` [@FieldModifier](#FieldModifier) | grubość pozostałych liń siatki (domyślna wartość: `3.0`) |
| angle | `?Number` [@FieldModifier](#FieldModifier) | kąt obrotu siatki, wyrażony w stopniach |
| xScale | `?Number` [@FieldModifier](#FieldModifier) | pozioma skala całej warstwy siatki |
| yScale | `?Number` [@FieldModifier](#FieldModifier) | pionowa skala całej warstwy siatki |
| isGridWheelEnabled | `?Boolean` | czy kolory siatki mają być pobierane z `colorGridWheel*` i być "obracane" |
| isGridFrameCleaned | `?Boolean` | czy renderer siatki ma czyścić poprzednie klatki (true, jeżeli chcemy uzyskać efekt wypełnienia kolorem)  | gridWheelSpeed | `?Number` | prędkość "obrotu" kolorów w przypadku gdy `isGridWheelEnabled` jest włączone |
| colorGridWheelTopLeft | `?String` | [color hash](#Color-hash) siatki w przypadku gdy `isGridWheelEnabled` jest włączone |
| colorGridWheelTopRight | `?String` | [color hash](#Color-hash) siatki w przypadku gdy `isGridWheelEnabled` jest włączone |
| colorGridWheelBottomRight | `?String` | [color hash](#Color-hash) siatki w przypadku gdy `isGridWheelEnabled` jest włączone |
| colorGridWheelBottomLeft | `?String` | [color hash](#Color-hash) siatki w przypadku gdy `isGridWheelEnabled` jest włączone |
| swingGrid | `?Boolean` | włącza efekt "bujania" |
| verticalScreens | `?Number` [@FieldModifier](#FieldModifier) | ilość powielonych ekranów w poziomie |
| horizontalScreens | `?Number` [@FieldModifier](#FieldModifier) | ilość powielonych ekranów w pionie |
| wavePulseAmount | `?Number` [@FieldModifier](#FieldModifier) | parametr ShaderWave |
| wavePulseMinAmount  | `?Number` [@FieldModifier](#FieldModifier) | jeżeli `wavePulseAmount` spadnie poniżej to `wavePulseAmount` = 0.0 |
| wavePulseFriction | `?Number` [@FieldModifier](#FieldModifier) | o ile redukować `wavePulseAmount` per step |
| wavePulseDistortion | `?Number` [@FieldModifier](#FieldModifier) | parametr ShaderWave |
| wavePulseSpeed | `?Number` [@FieldModifier](#FieldModifier) | parametr ShaderWave |
### Przykład
```json
{
    "fields": {
        "channels": [
            8,
            0.05
        ],
        "offsetBottom": [
            0.15,
            0.001
        ],
        "offsetTop": [
            0.15,
            0.001
        ],
        "topLineWidth": [
            0.15,
            0.001
        ],
        "bottomLineWidth": [
            0.85,
            0.001
        ],
        "angle": [
            0,
            1
        ],
        "colorGridBackground": [
            "#000000FF",
            1.0
        ],
        "verticalScreens": [
            1,
            1
        ],
        "horizontalScreens": [
            1,
            1
        ],
        "isGridFrameCleaned": true
    }
}
```
[wróć do spisu treści](#Spis-treści)

## 3.4 **JumbotronEvent**
| Klucz | Typ | Opis |
| - | - | - |
| "message" | `String` | wiadomość, która ma zostać wyświetlona |
| "handlerName" | `String` | rodzaj wiadomości, lista dostępnych handlerów znajduje się poniżej |
| "duration" | `Number` | czas wyświetlania jumbotronu. Wartość `-1` powoduje ustawienie go na nieskończoność
### Dostępne *handlerNames*
- scoreboard
### Przykład
```json
{
    "message": "ZBIERAJ PUNKTY\nDOJRZALOSCI",
    "handlerName": "scoreboard",
    "duration": 1.6
}
```
[wróć do spisu treści](#Spis-treści)

## 3.5 **ParticleEvent**
| Klucz | Typ | Opis |
| - | - | - |
| "particle" | `String` | typ particles, lista dostępnych typów znajduje się poniżej |
| "fields" | `Object` | mapa parametrów |
### Dostępne *particles*
- particle_devhorizon
- particle_explosion
- particle_score
- particle_fusion

### Opis *fields*
| Klucz | Typ | Opis |
| - | - | - |
| "system" | `?String` | nazwa systemu, na której mają być emitowane cząsteczki (domyślnie `background`). Lista dostępnych systemów znajduje się poniżej |
| "amount" | `?Number` | liczba cząsteczek do wygenerowania przez emiter (domyślnie `10`) |
| "duration" | `?Number` | jak długo (w sekundach) mają być renderowane cząsteczki (domyślnie `3.5`)
| "emitterInterval" | `?Number` | co ile sekund ma być wywoływany emiter (domyślnie `3.5`)
| "positionBegin" | `?Number[]` [@Position](#Position) | współrzędne prawego górnego rogu obszaru, z którego mają być emitowane cząsteczki (domyślnie `[ 0.5, 0.5 ]`) |
| "positionEnd" | `?Number[]` [@Position](#Position) | współrzędne lewego dolnego rogu obszaru, z którego mają być emitowane cząsteczki (domyślnie `[ 0.5, 0.5 ]`) |
### Dostępne *systems*
- foreground,
- background
### Przykład
```json
{
    "particle": "particle_fusion",
    "fields": {
        "system": "foreground",
        "amount": 50,
        "duration": 5,
        "emitterInterval": 0.2,
        "positionBegin": [
            0.5,
            0.5
        ],
        "positionEnd": [
            0.5,
            0.5
        ]
    }
}
```
[wróć do spisu treści](#Spis-treści)

## 3.6 **ShaderEvent**
### Opis
| Klucz | Typ | Opis |
| - | - | - |
| "name" | `String` | nazwa shaderu, lista dostępnych shaderów dostępna poniżej |
| "duration" | `Number` | jak długo ma trwać shader |
| "data" | `Object` | mapa parametrów dla shadera. Dostępne parametry dla danego shadera znajdują się na liście poniżej |

> ***Każdy z parametrów shaderów jest typu [@ShaderFieldModifier](#ShaderFieldModifier)***

### Dostępne shadery
### **Emboss**
TODO: Screen
Nie posiada żadnych parametrów
### **LED**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| brightness | Jasność, zakres `[ 0.5, 1.5 ]` |
| ledSize | Wielkość "pikseli", zalecana wartość `120` |
### **Magnify**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| positionX | [znormalizowana](#Znormalizowana-wartość) pozycji poziomej |
| positionY | [znormalizowana](#Znormalizowana-wartość) pozycji pionowej |
| radius | TODO |
| minZoom | TODO |
| maxZoom | TODO |
### **Mosaic**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| amount | Określa wielkośc "pikselizacji", czym mniejsza wartość tym bardziej rozpikselowany obraz. |
### **Posterization**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| colorNumber | Określa do jakiej ilości kolorów ma zostać ograniczona paleta |
| gamma | TODO |
### **Revert**
TODO: Screen
Nie posiada żadnych parametrów
### **Ripple**
| Nazwa parametru | Opis |
| - | - |
| positionX | [znormalizowana](#Znormalizowana-wartość) pozycji poziomej |
| positionY | [znormalizowana](#Znormalizowana-wartość) pozycji pionowej |
| amount | TODO |
| distortion | TODO |
| speed | TODO |
| time | TODO |
### **Scanlines**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| colorR | red |
| colorG | green |
| colorB | blue |
| colorA | alpha |
### **ShockWave**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| positionX | [znormalizowana](#Znormalizowana-wartość) pozycji poziomej |
| positionY | [znormalizowana](#Znormalizowana-wartość) pozycji pionowej |
| amplitude | TODO |
| refraction | TODO |
| width | TODO |
| time | TODO |
### **Sketch**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| intensity | TODO |
### **Thermal**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| intensity | TODO |
### **Wave**
TODO: Screen
| Nazwa parametru | Opis |
| - | - |
| amount | TODO |
| distortion | TODO |
| speed | TODO |
| time | TODO |

### Przykład
```json
{
    "name": "Emboss",
    "duration": 0.6,
    "data": {}
}
```
[wróć do spisu treści](#Spis-treści)

## 3.7 **ShroomEmitterEvent**
| Klucz | Typ | Opis |
| - | - | - |
| "amount" | `Number` | ile `shroom` ma zostać wygenerowane |
| "duration" | `Number` | jak długo mają być generowane `shrooms`
| "interval" | `Number` | co ile sekund mają być generowane nowe `shrooms`
| "templates" | `ShroomEvent` | kolekcja obiektów klasy [ShroomEvent](#ShroomEvent)
### Przykład
```json
{
    "amount": 3,
    "duration": 20.0,
    "interval": 1.6,
    "templates": [ ... ]
}
```
[wróć do spisu treści](#Spis-treści)

### 3.8 **ShroomEvent**
| Klucz | Typ | Opis |
| - | - | - |
| "fields" | `Object` | mapa parametrów

### Opis *fields*
| Klucz | Typ | Opis |
| - | - | - |
| "sprite" | `?String` | nazwa zasobu graficznego. Musi być taka sama jak w GMS albo taka, jak dostarczona w `resource-pack`. Domyślnie `asset_sprite_emoji_thinking` |
| "type" | `?Object` | obiekt JSON klasy `ShroomType`. Domyslnie `{ "name": "default" }` |
| "position" | `Number[]` | [Position](#Position). Domyślnie losowana jest pozycja pozioma z zakresu `[ 0, 1 ]`, a pionowo `0`.
| "speedValues" | `?Number[]` | kolekcja wartości prędkości, zostanie wylosowana tylko jedna (zamiast tablicy może tutaj być `Number`). Domyślnie `0.002` |
| "texts" | `?String[]` | kolekcja napisów, zostanie wylosowana tylko jedna (zamiast tablicy może tutaj być `String`). Domyślnie `[]` |
### Przykład:
```json
{
    "fields": {
        "sprite": "asset_shroom_emoji_thinking",
        "type": {
            "name": "good"
        },
        "position": [
            0,
            0.01
        ],
        "speedValues": [ 0.01 ],
        "texts": "intro"
    }
}
```
[wróć do spisu treści](#Spis-treści)

### 3.9 **PlayerEvent**
| Klucz | Typ | Opis |
| - | - | - |
| "sprite" | `String` | nazwa zasobu graficznego. Musi być taka sama jak w GMS albo taka, jak dostarczona w `resource-pack`
### Przykład
```json
{
    "sprite": "asset_sprite_gta_car_01"
}
```
[wróć do spisu treści](#Spis-treści)

### 3.9 **InputEvent**
| Klucz | Typ | Opis |
| - | - | - |
| "sprite" | `String` | nazwa zasobu graficznego. Musi być taka sama jak w GMS albo taka, jak dostarczona w `resource-pack`
### Przykład
```json
{
    "sprite": "asset_sprite_gta_car_01"
}
```
[wróć do spisu treści](#Spis-treści)
