# Struktura souborů a složek Níže je uveden přehled důležitých souborů, včetně jejich funkcí: ## Backend ### `src/main/java/.../services/InitGameService.java` - Třída zodpovědná za inicializaci nové hry. - Obsahuje logiku pro nastavení výchozích parametrů hry. - Vytvoření všech místností, všech postav, všech dialogů a inicializace všech itemů ve hře. ### `src/main/java/.../interactions/InteractionService.java` - Třída zodpovědná za zpracování všech interakcí. > **Poznámka**: Interakce je jakákoliv akce, která proběhne při hraní minihry. Na příklad odeslání odpovědi na otázku, pokus o uhodnutí čísla, a další. Tyto interakce jsou posílány přes endpoint `game/characters/interact`. - Všechny interakce jsou třídy které implementují interface `.../interactions/InteractionPlayer` - Data pro interakci jsou vždy posílány jako `String` ### `src/main/java/.../utils/annotations/UserCheckAspect.java` - Implementace anotace `@CheckUser`, která kontroluje zda je uživatel autorizovaný při vytváření požadavku na server. ## Frontend ### `src/main/java/.../api/ApiService.java` - Interface, který obsahuje všechny endpointy pro API. - Tato tříde je poté implementována knihovnou `retrofit2` ### `src/main/java/.../utils/Cli.java` - Tato třída obsahuje funkce pro vypisování textu do stdout a získavání dat z stdin. ### `src/main/java/.../utils/ConfigPathProvider.java` - Třída zodpovědná za zjištění operačního systému a vrácení správné lokace configuračního souboru. ### `src/main/java/.../game/CommandPalette.java` - Třída zodpovědná za vypisování palety příkazů. - Tato třída taky zjišťuje stav inventáře, jestli není plný. Pokud je, vypisuje varovnou hlášku. - Tato třída dává přístup do inventáře, chatu, profilu hráče a opuštění hry - Taky tato třída kontroluje jestli již hra není vyhrána. (Jestli jiný hráč nevložil poslední fragment klíče.) ### `src/main/java/.../game/Chronos.java` - Třída, která spravuje přihlášení do hry, nastavení adresy serveru a připojování do hry. ### `src/main/java/.../game/LocalData.java` - Třída zodpovědná za ukládání lokální konfigurace do konfiguračního souboru. Ukládá game key, user secret a adresu serveru. ### `src/main/java/.../game/interactions/Interactions.java` - Třída zodpovědná za hraní všech miniher. - Tato třída rozděluje interakce a spouští minihru podle typu interakce.