|
|
# Cvičenie 9
|
|
|
|
|
|
_poznámka k cvičeniu 8: ak priamo v `SpellDirector` voláte `SpellDataProvider.GetInstance()` zmeňte implementáciu tak, aby referenciu dostal SpellDirector priamo v konštruktore. Tiež tam pošlite referenciu na wizarda.
|
|
|
|
|
|
## 9.1 [Minor Healing Potion]
|
|
|
|
|
|
Vytvorte si namespace `Actors.Items` a v ňom triedu `HealingPotion`, ktorá implementuje rozhrania `IItem` a `IUsable`. Zabezpečte, aby sa elixír dal použiť iba raz a doplnil pužívateľovi X (číslo si zvoľte) života (nezabudnite, že fľaška sa tým pádom vyprázdni, takže nezabudnite zmeniť animáciu pre prípad, že sa nezmaže z inventára).
|
|
|
|
|
|
## 9.2 [Small Red Pouch]
|
|
|
|
|
|
Vytvorte si triedu `Backpack` (implementuje `IInventory`). Bude sa jednať o našu vlastnú kolekciu. Prepokladajte nasledovné:
|
|
|
|
|
|
- `Backpack` bude mať v sebe uchované veci. Jeho veľkosť je konečná, dostane ju v konštruktore. Ak by bola pridaná vec do plného batohu, vyvolajte exception `FullInventoryException` (je nutné si ju vytvoriť) - pridanie do plného invenára __nesmie__ zhodiť program!
|
|
|
- veci majte uložené v poli (array)
|
|
|
- vždy vieme pristupovať len k prvému (alebo poslednému, vyberte si) prvku a nová vec je pridaná na koniec.
|
|
|
- je dostupný iterátor (`IEnumerator<Item>`)
|
|
|
- `ShiftRight/Left` posunie prvky. Nezabudnite preniesť prvok medzi koncom a začiatkom
|
|
|
|
|
|
_na implementáciu iterátora použite_ [`yield return` (MSDN documentation)](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield)
|
|
|
|
|
|
__Pozor__ pole má v sebe stále X prvkov, aj keď sú null, `yield return` by ich vrátil, zabezpečte, aby sa cyklus ukončil, keď sa nájde null.
|
|
|
|
|
|
na zobrazenie hráčovho inventára použite `World.ShowInventory(IInventory)`
|
|
|
|
|
|
## 9.3 Finishing touches
|
|
|
|
|
|
Pridajte si chýbajúce animácie.
|
|
|
|
|
|
`Skeleton` a `Player` by mali byť schopní útočiť, pridajte im túto možnosť.
|
|
|
|
|
|
Schovajte konzolu:
|
|
|
|
|
|
- Windows: `Project -> Properties -> Application -> Output type: Windows Application`
|
|
|
- Linux / Mac: v .csproj súbore si upravte: `<OutputType>Exe</OutputType>`
|
|
|
|
|
|
Logout.
|
|
|
|
|
|
---
|
|
|
Ak by ste chceli nejakú funkcionalitu doplniť do engine, dajte mi vedieť. |