Update home authored by Svoboda, Jan's avatar Svoboda, Jan
......@@ -5,7 +5,7 @@ https://cw.fel.cvut.cz/b212/courses/b0b36pjv/semestral/herni_engine Semestráln
K vytvoření této semestrální práce byla použita grafická knihovna **JavaFX**
* Vytvořte herní engine pro realtime RPG Hru. V této hře bude hráč ovládat hrdinu, který bude procházet jednotlivé levely, v nichž bude sbírat předměty a bojovat s příšerami. Obecné zadání semestrální práce:
* Práce je vyvíjena za pomoci verzovacího systému GIT. Ve wiki bude udržována zvláštní stránka s odhadem pracnosti jednotlivých částí práce a rozdělení úkolů každého z týmu.
* Práce je vyvíjena za pomoci verzovacího systému GIT. Ve wiki bude udržována zvláštní stránka s odhadem pracnosti jednotlivých částí práce a rozdělení úkolů každého z týmu. ([Přehled práce](https://gitlab.fel.cvut.cz/svobo114/java-rpg-game-pjv/-/wikis/P%C5%99ehled-pr%C3%A1ce/P%C5%99ehled-hodin) a [Postřehy ze Semestrálky](https://gitlab.fel.cvut.cz/svobo114/java-rpg-game-pjv/-/wikis/P%C5%99ehled-pr%C3%A1ce/Celkov%C3%BD-pocit-ze-semestr%C3%A1ln%C3%AD-pr%C3%A1ce))
**Technické požadavky:**
......@@ -27,7 +27,7 @@ K vytvoření této semestrální práce byla použita grafická knihovna **Java
* Každý level bude popsaný v externím souboru v rozumném formátu (jeden až dva levely).
* V rámci hry bude implementován způsob souboje s příšerami.
* Hrdina bude umět pomocí sebraných předmětů interagovat s dalšími předměty (otevře dveře klíčem, rozbije truhlu palicí atd.).
* Herní engine musí být vybaven GUI.
* Herní engine musí být vybaven GUI. ([Strana o GUI](https://gitlab.fel.cvut.cz/svobo114/java-rpg-game-pjv/-/wikis/Dokumentace/GUI-a-Grafika))
# **Uživatelský manuál (**[**link**](https://gitlab.fel.cvut.cz/svobo114/java-rpg-game-pjv/-/wikis/Dokumentace/U%C5%BEivatelsk%C3%BD-manu%C3%A1l)**)**
......@@ -62,17 +62,17 @@ Už názvy balíků naznačují, že jsem se snažil navrhnout program dle Model
**Flow programu:**
* Po zapnutí main třídy se inicializuje WindowView, což je třída spravující okno main menu. Tato třída také inicializuje další funkční třídy, jako GraphicsUpdateThread, MainController a nebo třeba List<Entity>, který drží seznam entit, které figurují na mapě.
* Po zapnutí main třídy se inicializuje WindowView, což je třída spravující okno main menu. Tato třída také inicializuje další funkční třídy, jako GraphicsUpdateThread, MainController a nebo třeba List, který drží seznam entit, které figurují na mapě.
* Po zmáčknutí "New Game" nebo "Last Saved Game" v menu se otevře nové okno, do kterého se mezitím načetla nová, nebo poslední uložená hra. Běh této části zaštiťuje GameSceneMaster, což je třída, která je užitečná k vybudování a propojení herní "Scény" s dalšími GUI Scénami, které fungují jako obrazovky pro inventář, menu, nebo třeba truhlu.
* (Běh herní smyčky) GraphicsThread dokola vykresluje grafiku (animační snímky hráče, entit, pozadí mapy, health bary mobů a vlevo nahoře i život, manu a peníze hráče), zatímco MainController skenuje List inputů (získaných ze scény, ve které běží hra) a v závislosti na hráčových inputech pohybuje hráčem, nebo třeba útočí. MainController také vypočítává pohyby hitboxů entit (a jejich kolize).
* Inventář, menu a otevírání beden je řešeno přes eventy v jednotlivých scénách tvořených uvnitř GameSceneMaster. ("I","E" a "ESC")
* Pokud se rozhodnu hru uložit, vytvoří se nová instance třídy FileSaver, která získá data z MainController a pomocí třídy DataStorage, která je serializovatelná uloží tato data do souboru v resources/saves.
* Pokud otevřu inventář stisknutím "I", MainController pošle List<Item> z hráčova inventáře do ChestScene (jedna ze scén, která se střídá v hlavní Stage, kde běží hra, vytvořena uvnitř GamSceneMaster), kde se tento list itemů zobrazí. Zobrazují se Background instance, které jsou uloženy uvnitř instancí itemů (Item má vlastní background, svůj sprite, který se nastaví jako pozadí tlačítka v inventáři. viz [GUI](https://gitlab.fel.cvut.cz/svobo114/java-rpg-game-pjv/-/wikis/Dokumentace/GUI-a-Grafika).
* Pokud otevřu inventář stisknutím "I", MainController pošle List z hráčova inventáře do ChestScene (jedna ze scén, která se střídá v hlavní Stage, kde běží hra, vytvořena uvnitř GamSceneMaster), kde se tento list itemů zobrazí. Zobrazují se Background instance, které jsou uloženy uvnitř instancí itemů (Item má vlastní background, svůj sprite, který se nastaví jako pozadí tlačítka v inventáři. viz [GUI](https://gitlab.fel.cvut.cz/svobo114/java-rpg-game-pjv/-/wikis/Dokumentace/GUI-a-Grafika).
* Pokud zmáčknu "E" na otevření truhly, MainController se nejdřív podívá, jestli je v mém okolí truhla, potom jestli k ní mám klíč a pokud mám, tak mi tuto truhlu otevře (opět pošle data z truhly do příslušné scény a otevře ji v herním okně). Když zmáčknu "Mouse1" (primární tlačítko myši), charakter zaútočí na stranu, na kterou zrovna míří. MainController od hráčova modelu zjistí, s jakým poškozením útočí, pak se podívá, jestli je na daném místě kolize s hitboxem nějakého z Mobů (zranitelné entity). Pokud ano, hráč zaútočí s tím poškouzením. Pokud Mob zemře (životy<=0), hráč dostane obnos peněz.
# Jednotlivé package:
**View:**
**View: (**[**GUI**](https://gitlab.fel.cvut.cz/svobo114/java-rpg-game-pjv/-/wikis/Dokumentace/GUI-a-Grafika)**)**
WindowView - Spravuje Okno pro main menu a herní okno. vytvoří instance dalších potřebných tříd
......
......