1. Křesadlo a pochodeň
Nádherně vysvětleno, právě se dívám na mix-in třídu FireSource, která má jedinou podtřídu Matchstick a jedinou metodu iobjFor(BurnWith). A pokud si třídu rozkliknu odkazem 1895, skutečně vidím „We don't provide any action handling - we leave that to the direct object.“ - tady autor přímo nabádá, abych si odvozený objekt upravil, přesně jak píšeš.
S „PreferredIobj“ jsem se zatím nesetkal nebo si jej nevšiml, vidím, že jej používáš ve svém překladu a konkrétně v demonstraci Attachable:
preferredIobj = nil
replace doActionMain()
Dívám se na třídu FueledLightSource, zde je jako jediná podtřída uvedena Candle. Direktivu getFuelLevel() { return fuelLevel; } jsem našel při rozkliknutí odkazu třídy i její podtřídy, odkaz extras.t 2079 i 2205.
Nyní vše v pochodní funguje, viz soubor Exoter_v2.t, jediný problém, který zatím vidím, je příkaz:
>zapal pochoden kresadlem
To není něco, co by mohlo hořet.
ale
>zapal pochoden
Čím ji chceš zapálit?
>kresadlem
Zapaluješ pochodeň.
funguje parádně, zatím to tak nechám, tyhle detaily si nechám na později.
Hledání ve třídách, vlastnostech, metodách apod. v knihovně už je mi jasné, teď se mi jen vše musí spojit dohromady, chápu, to chce čas, jo to vlastně „gró“ programování. Místo abych hledal v knihovně, snažil jsem se nalézt co nejvíce v příkladech, což je asi běžný postup programátorů začátečníků. Upřímně řečeno přes obrovský záběr TADSu jsem si ani neuvědomil, že tak triviální věc jako zapálení pochodně křesadlem, troudu ocílkou nebo obyčejné rozdělání ohně něčím jiným, než sirkami, zde není už jako hotové řešení, tady jsem dost ovlivněn našimi textovkami a příkazem použij – je ale jasné, že standardní knihovna bude popisovat jen obecné věci, vše obsáhnout nelze, chápu, že se s tím v budoucnu setkám i v C++ a jiných jazycích, asi proto existují knihovny rozšiřující, které se snaží nějakou konkrétní množinu problémů řešit. Na programátorovi je také to, aby tyto knihovny znal a ve svém projektu je uměl použít plus to, co jinde nenajde, dokončil sám, to mi stále více a více ukazuje praxe.
Teď když už se s Library reference manual více kamarádím a ještě jednou si prohlížím třídu FueledLightSource, napadá mě otázka, co znamená a k čemu slouží soubor extras.t, na jehož definici se dívám? Když si přeložím popis „This module defines classes for specialized simulation objects. “, vidím, že se jedná o modul, který definuje třídy pro objekty specializující se na konkrétní simulaci. Jedná se tedy o hlavičkový soubor umístěný v podadresáři lib a když rozkliknu odkaz Source file, mimo celého bohatě komentovaného dokumentu vidím, že na začátku obsahuje direktivu:
#include "adv3.h"
To znamená, že odkazuje na standardní knihovnu adv3, okolo které se celý TADS točí, teď už mi to do sebe více zapadá.
Možná bude pro mě lepší, když budu více zkoumat Library reference manual a nejlépe zkoušet dostupné příklady, tak pochopím více, ostatně i Eveho manuál sem mnohokráte odkazuje. Definice místností a objektů je mi již víceméně jasná, rozhovory s NPC postavami si nechám na jindy, nyní mi jde hlavně o akce, o kterých píšeš i ve svém manuálu a k jejich definici potřebuji pořádně pochopit práci s metodami, o nic se, jak překpokládám, dozvím nejvíce zde.
2. Nepřeložený řetězec "lit"
Ještě jednou jsem si zkusil projet moji původní verzi Exotera, zde se po zapálení pochodně křesadlem s tím, že jej definuji jako Matchstick, viz soubor Exoter_v1.t, objeví toto:
„Neseš šperhák, pochodeň (svítí) a křesadlo (lit).“
Následně jsem to samé zkusil po Tebou navrhované úpravě, viz soubor Exoter_v2.t:
Neseš šperhák, pochodeň (svítí) a křesadlo.
V souborech cs_cz.t a msg_neu.t je dle mého laického pohledu vše v pořádku, zde asi překladač k objektu Matchstick přiřadil chybný textový řetězec nebo je na místě, které jsem zatím nenalezl. Pokud budeš v budoucnu připravovat další verzi češtiny, prosím o kontrolu objektu Matchstick a přidání překladu, snad alespoň tímto svým testováním alespoň trochu pomohu k jeho zlepšení.
3. Knihovna Adv3lite a TADS Workbench
Moc děkuji za parádní popis této knihovny, chápu, proč lidi toužili po něčem jednodušším, upřímně řečeno jsem dle Tvého popisu nabyl dojmu, že TADS2 byl mnohem jednodušší na použití, než třetí verze, já jsem se setkal až s trojkou.
Sakra, nečekal jsem, že tato knihovna přidává i nové vlastnosti, na druhou stranu vidím, že dopadla podobně jako např. Wordpress nebo Nginx, původně štíhlé projekty vesele bobtnají a původní záměr mizí. I proto je mi velmi sympatická knihovna ncurses, mám rád jednoduché řádkové aplikace s rozhraním ála M602 nebo dosedit, které jsou určené k jediné konkrétní činnosti nebo mé oblíbené účetnictví Tichý – Ježek, které i po dvaceti letech zachovává stejné rozhraní a jen upravuje funkcionalitu, dnes podporuje i EET a existuje i snadný krok, jak jej plně integrovat do Linuxu.
Zatím jí tedy nechám na pokoji, pokud neexistuje překlad, není pro mě určena, takže se na ní podívám v budoucnu. Ta klasická mě stále více a více ohromuje tím, co vše dokáže, takové práce, kterou autoři věnují komunitě, si nesmírně vážím.
S tím Informem jsem si také trochu hrál, na root.cz vyšel i český článek tuším o dvou dílech, který základy popisuje, vypadá mnohem jednodušší, ale obávám se, že složitější problémy už nebude taková sranda realizovat a domnělá jednoduchost se rozplyne jak pára nad hrncem. Pro mě je tedy TADS výhodnější, díky českému překladu a především jako parádní příprava na C++.
Neodolal jsem a do google jsem zadal „TADS Workbench source“, napadlo mě, když je TADS otevřený, zda jsou i k WB k dispozici zdrojové kódy. V diskuzi:
https://www.intfiction.org/forum/viewtopic.php?f=10&t=4088Jeden diskutující píše: „The Workbench source is available as part of the htmltads source release. It's all built directly on Win32 (no MFC or any other Microsoft class libraries are involved).“
Plus zde na github:
https://github.com/uliwitness/TADSWorkbenchJsou k dispozici nějaké zdrojáky, zběženě jsem je prozkoumal a vypadá to, že jsou určeny pro MAC, ostatně pro něj je k dispozici i starší oficiální verze dostupná na stránkách. Škoda, linuxový WB by byla paráda plus jak jsem minule psal ta verze ncurses/GTK/QT, jen ty zdrojáky mě zatím opravdu děsí, je jich nějak privela…
Takže zatím zůstanu u kombinace Frobtads/editor českého textu/WB ve Wine, sice trochu krkolomné, ale naštěstí funkční.
4. Lano a attachable obecně
Nyní po vyřešení pochodně bych se rád vrhnul na přivázání lana k temné studni a vše, co s tím souvisí. Využiji všechny dostupné znalosti, jak vidím, attachable je parádně popsaná v manuálu i v Library plus připravil jsi parádní demonstrační hru, pokusím se vše vyřešit sám, jedině tak se dostanu zase o krok dále.