|
# Cvičenie 8
|
|
# Cvičenie 8
|
|
|
|
|
|
|
|
__Note:__
|
|
|
|
|
|
|
|
To, že ISpellBuilder definuje v každej metóde ako návratovú hodnotu nám umožňuje spraviť nasledovné:
|
|
|
|
|
|
|
|
```csharp
|
|
|
|
builder.AddEffect("use cycle").AddEffect("for effects")
|
|
|
|
.SetAnimation(animation).SetSpellCost(cost).CreateSpell()
|
|
|
|
```
|
|
|
|
|
|
|
|
Ako na buildera:
|
|
|
|
|
|
|
|
1. wizard (nemusí byť player) si vytvorí iba SpellDirector
|
|
|
|
2. director si vytvorí zodpovedajúcich builderov
|
|
|
|
3. director si načíta zo súboru kúzla (budúce cviko, zatiaľ si ich tam pridajte ručne
|
|
|
|
4. director vie, ktorý builder sa má použiť
|
|
|
|
5. director povie postupne builderovi všetky efekty, ktoré treba pridať do vytváraného kúzla (môže ich byť niekoľko)
|
|
|
|
6. director povie builderovi, akú animáciu nastaviť (ak je to projectile)
|
|
|
|
7. director spočíta cenu a povie ju builderovi (selfcast builder si ju zníži o nejaké percento)
|
|
|
|
8. wizard dostane kúzlo, ktoré môže použiť (nie používať - na ďalšie použitie si treba znovu vytvoriť nové, inak by mohol existovať iba jeden projektil daného typu v hre)
|
|
|
|
|
|
__Changelog:__
|
|
__Changelog:__
|
|
|
|
|
|
- `IMovable: double GetSpeed(double speed)` fixed definition to properly reflect strategy pattern (originally `double GetSpeed()`)
|
|
- `IMovable: double GetSpeed(double speed)` fixed definition to properly reflect strategy pattern (originally `double GetSpeed()`)
|
... | | ... | |