Interactive Control - Visibility

Víme jak vytvořit tlačítka, víme jak udělat animace, ale co když máme panel dejme tomu pro PÖTTINGER ale zrovna ho nemáme připojený? Na tom panelu můžeme mít tlačítka pro ovládání zařízení, zaplnění atd... A dnes si ukážeme jak tento panel skrýt v případě, že ho nepotřebujeme.

Kam zapisovat ovládání viditelnosti

Tak jako vždy, budeme potřebovat míto kam zapisovat ovládání viditelnosti prvků. To místo můžeme vidět v příkladu:

1<interactiveComponents minDist="13">
2 <visControls>
3 <button ...>
4 ...
5 </button>
6 </visControls>
7</interactiveComponents>
8

Větší problém - větší zápis

Ač se to nezdá, je toto větší problém zapsat než tlačítko. Zde totiž musíte uvažovat také o typu změny viditelnosti a o kontrolním obejktu. Element button bude mít více, méně standardní atributy. Do něj pak navíc budeme zapisovat indexy k zviditelnění/skrytí.

Atributy onMessage a offMessage

Tyto atributy se používají k definování hlášky, která se má zobrazit po najetí myši a to buď při spuštěné akci nebo ukončené akci. Bohužel zde se nám neindikuje zda máme objekt zobrazen nebo skryt (protože máme více objektů) a tak se nám použije pouze hláška onMessage. Pro případné posuny v indikaci doporučuji nastavit stejnou hlášku i pro offMessage - jen pro jistotu. Oba tyto atributy musí obsahovat název definovaného textu v l10n v modDesc.xml.

Atribut name

Tento atribut slouží k zobecnění hlášek - pokud máme například 2 tlačítka, tak pro obě můžeme vypisovat stejnou hlášku s tím, že místo name které se tam má doplnit, napíšeme do hlášky on/offMessage nějaký text a jako zástupný znak name použijeme %s. Ve výsledku tak máme třeba jednu onMessage, jednu offMessage a 2 tlačítka používající stejné hlášky akorát s jiným name. Atribut name obsahuje název definovaného textu v l10n v modDesc.xml.

Atribut size

Size slouží k definování velikosti tlačítka pro klikní - nikoli velikosti vizuální! Hodnota je desetinné číslo v rozmezí 0 až 1. Toto číslo určije procentuální velikost klikatelného tlačítka oproti monitoru. Je dobré si s tímto pohrát aby se mohli používat tlačítka blízko u sebe.

Atribut mark

Tento atribut obsahuje index tlačítka v i3d stroje. Objekt na tomto indexu musí mít nejaký vnořrný objekt pro případné přidání efektů. Doporučuji použít tlačítko z archivu který si stáhnete s IC. Kolem tohoto indexu se tvoří klikatelná oblast definovaná v size. Pokud není mark obsažen v tagu, vytvoří se pouze událost. Takto vytvořenou událost můžete používat v multiButtons.

Atribut typeChange

Určuje nám, jaký typ změny viditelnosti použít. Není povinný a výchozí typ je set. Set znamená, že se všechny prvky řídí jedním kontrolním elementem který si později musíme definovat. Druhá možnost je toggle. Toggle zase znamená, že se prvky mění opačně ku aktuálnímu stavu. Pokud je tedy část viditelná a část ne, pak po stisknutí tlačítka bude viditelná část druhá a ta první zase ne.

Atribut synch

Atribut synch se používá pro multiplayer a může obsahovat hodnotu true a nebo false. Tento atribut není povinný a jeho základní hodnota je true. Pokud je hodnota false, pak není synchronizováno chování na MP - tzn.: jeden hráč může vidět něco spuštěné a druhý ne. Vhodné pro nějaké drobné funkce aby se nezatěžovala komunikace při MP.

Atribut isOutside

Tento atribut definuje, zda je tlačíko určeno pro použití mimo stroj a nebo pro použití v kabině. Pokud je false, tlačítko se zobrazí pouze tehdy, když jsme ve stroji. Pokud je true tak to zanmená, že aby se talčítko dalo spustit, tak musíme být v dosahu definovaném minDist. Tento atribut je nepovinný a jeho základní hodnota je false.

Atribut controlElem

Tento atribut definuje kontrolní prvek pro zobrazování. Použije se pouze v případě, pokud je atribut type nastaven na set. Pokud pak bude tento prvek zobrazen, měly by být zobrazeny i všechny ostatní prvky u tlačítka. Atribut obsahuje index kontroloního prvku.

Atribut defaultVis

Nepovinný atribut definující viditelnost po startu hry. Pokud je přítomen, pak jsou všechny elementy nastaveny na danou hodnotu (viditelost). Hodnoty jsou true/false.

Zápis objektů na ovládání

Teď jsme si ukázali zápis tlačítka a nyní potřebujeme zapsat objekty, které to tlačítko ovlivňuje. To se dělá přes vnořený tag index s atributem index, který obsahuje daný index k zobrazení. No více snad pochopíte z příkladu.

Ukázka zápisu tlačítek na viditelnost

Nakonec vám zde přikládám ukázku zápisu viditelnosti do IC:

1</interactiveComponents>
2 <visControls>
3 <button name="tuplak_rf1" mark="0>6|0|15|0|5|0|0|1|5" onMessage="cp_panel_on" offMessage="cp_panel_off" size="0.015" typeChange="set" controlElem="0>6|0|15|0|5|0|0|1|2" defaultVis="false" >
4 <index index="2>1|1|2"/>
5 <index index="0>6|0|15|0|5|0|0|1|2"/>
6 <index index="0>6|0|15|0|5|0|1|1|2"/>
7 </button>
8 <button name="tuplak_rf2" mark="0>6|0|15|0|5|0|1|1|5" onMessage="cp_panel_on" offMessage="cp_panel_off" size="0.015" typeChange="set" controlElem="0>6|0|15|0|5|0|1|1|2" defaultVis="false" >
9 <index index="2>1|1|2"/>
10 <index index="0>6|0|15|0|5|0|0|1|2"/>
11 <index index="0>6|0|15|0|5|0|1|1|2"/>
12 </button>
13 </visControls>
14</interactiveComponents>

Související video

Skript ke stažení

  1. InteractiveControl (Farm-Share)