ano, tohle vlákno má za cíl sehnat ty alfa-testery :e)
díky za zájem, zdroják jsem vám oběma poslal.
nejsem si úplně jist, jak moc vhodné je to pro portál urwigo.com, s ohledem na to, že je to použitelné jenom v ručně psaném kódu.
zkrácená dokumentace:
1. Základní principy
Všechny UI zprávy (i vstupy!) se řadí do fronty - když zavoláte desetkrát Message, je to stejné jako byste v klasickém Wherigo udělali Dialog o deseti zprávách.
Některé funkce zastaví vykonávání aktuálního skriptu, dokud nedostanou odpověď. Jiné skripty se stále můžou spustit - např. když je OnEnter od zóny zastavený, OnTick od časovače nebo OnEnter jiné zóny bude fungovat.
Ten samý skript nemůže být spuštěn vícekrát: když bude OnEnter zastavený, hráč odejde ze zóny a pak se do ní znovu vrátí, OnEnter se znovu nespustí. Může se spustit teprve potom, když hráč dokončí interakci a skript doběhne.
2. Parametry funkcí
Většina funkcí má ty samé první tři parametry: Sender, Text, Media. Media je nepovinné.
lze volat jedním ze dvou způsobů:
UI.Message { Sender=zcharacterMedved, Text="ahoj hráči", Media=zmediaAhoj }
UI.Message { zcharacterMedved, "ahoj hráči", zmediaAhoj }
Parametr Media je nepovinný. Některé funkce mají další parametry, ty se musí volat jménem. Třeba takhle:
UI.Confirm{zcharacterMedved, "připrav se", Button="Start"}
Všimněte si složených závorek, s normálními to nefunguje (ten seznam parametrů je ve skutečnosti tabulka.)
Parametr Sender vyjadřuje, "kdo to říká". Zatím se používá jen k tomu, aby se vybral obrázek, když vynecháte Media. V nových playerech se bude používat trošku lépe.
Sender může být předmět, postava, zóna, úkol, cartridge, Player (to reprezentuje to, co říká hráč) nebo nil (zpráva "od nikoho")
Když zadáte Media, použije se místo obrázku Sendera (pokud nějaký existuje) ten obrázek z Media. takže když chcete ukazovat spoustu fotek, dáte Sender=nil a obrázky nastavíte jako Media.
3. Funkce
UI.Message
Základní zpráva. Neblokuje běh skriptu, ale zařadí se do fronty.
UI.Confirm
"Potvrzení" další akce - zastaví skript, dokud hráč nestiskne OK. To je dobré třeba k tomu, když chcete na další řádce spustit časovač.
má nepovinný parametr Button="text", který nastaví text odklikávacího tlačítka na "text"
UI.Choice
Výběr z několika možností, ekvivalent ZInputu typu MultipleChoice. Zastaví skript, dokud hráč nevybere.
má povinný parametr Options={"jedna","dva","tři" .... }, který zadává ty možnosti na výběr
vrátí dvě hodnoty: text a pořadí vybrané možnosti. můžete získat jednu nebo obě:
text, poradi = UI.Choice {nil, "vyber si", Options={"jedna","dva","tri"}}
text2 = UI.Choice {nil, "jenom text", Options={"jedna","dva","tri"}}
_, poradi2 = UI.Choice {nil, "jenom pořadí", Options={"jedna","dva","tri"}}
pořadí se počítá od jedničky - pokud kliknu na "tri", tak text bude "tri" a poradi bude 3
UI.Input
Zadání textu. Ekvivalent ZInputu typu Text. Zastaví skript, dokud hráč nevybere.
vrátí text, který hráč zadal
UI.Notify
Zobrazí zprávu mimo frontu, přes cokoliv, co je zrovna na obrazovce. Po odkliknutí se vrátí to, co tam bylo před tím (tedy pokud přijde Notify třeba přes Choice, tak po odkliknutí Notify se vrátíte na tu Choice). Nezablokuje skript. Další Notify zruší předchozí Notify.
Tohle je dobré třeba pro hlášení stavu z časovačů - klasický závodní odpočet by se zobrazoval z OnTick právě pomocí Notify.
Jenom pozor na to, že pokud je pod tím Input (zadávání textu), tak bohužel nejde udělat, aby tam zůstal rozepsaný text.
UI.Wait
nemá žádné parametry
Zastaví skript, dokud není "prázdná obrazovka", jinak nic neudělá.
UI.Cancel
nemá žádné parametry
Zruší všechno, co je na obrazovce a ve frontě. Zablokuje skript, dokud nedoběhnou všechny věci ve frontě.
Zrušení efektivně probíhá podobně jako kdyby hráč velmi rychle všechno odklikal. To znamená, že pokud je nějaký skript zastavený, tak po zrušení doběhne do konce, ale žádný UI prvek z něho už se nezobrazí.
Když se zruší Choice nebo Input, tak návratová hodnota ve skriptu bude nil. (když se zruší cokoliv, tak návratová hodnota bude nil, ale jen u Choice a Inputu to hraje roli)
Protože na existujících Playerech není žádná funkce, která by z obrazovky odstranila momentálně zobrazený dialog, tak se po zavolání Cancel ukáže zpráva "Cancelled." Tahle zpráva ale není ve frontě, takže když se bezprostředně po Cancel zavolá třeba Message, tak bude vidět jenom ta zpráva.