Difference between revisions of "User:AVS/Spellcasting"

From VCMI Project Wiki
Jump to: navigation, search
(Caster)
Line 5: Line 5:
 
# Artifact
 
# Artifact
 
# (*) Scriptable virtual. Fully customizable by scripts.
 
# (*) Scriptable virtual. Fully customizable by scripts.
 +
 +
=== Spellbook ===
 +
In (abstract) public interface provides access to all spells available for caster.
 +
 +
As concrete object in hero instance contains permanent spells aviable for caster.
 +
  
 
ISpellCaster - public interface.
 
ISpellCaster - public interface.

Revision as of 16:48, 10 March 2014

Entities

Caster

  1. Hero
  2. Creature
  3. Artifact
  4. (*) Scriptable virtual. Fully customizable by scripts.

Spellbook

In (abstract) public interface provides access to all spells available for caster.

As concrete object in hero instance contains permanent spells aviable for caster.


ISpellCaster - public interface.

Target

  1. Object - any object in adv map. (f.e. scuttle boat).
  2. (?)Tile - any tile on map (f.e. DD)
  3. Battle creature
  4. Battle obstacle
  5. Battle hex
  6. (*) Battle hero.
  • there can be multiple targets.
  • on adv map, if no target then it assumed hero itself (f.e. vision, viewXXX ).
  • (->) target selection configuration use selector semantic similar to bonus system.

ISpellTarger - public interface.

Spell

Common interface

Used by GUI, AI, (?) Server. Readonly.

Service-oriented design version

Use singleton Handler and methods accepting TSpell as first parameter.

  • (+) script-frendly
  • (+) low coupling

OO design version with proxy

  1. CSpellInfo - proxy class. Constructs from TSpell.
  • (+) more readable
  • (+) low coupling

OO design version

  1. CSpell -
  2. CSpellHandler
  • (+) current version
  • (-) higher coupling

GUI related interface

used by GUI

  • animation
  • sound
  • description for spellbook
  • icon for spellbook, scroll etc.
  • (+) inherit all from common interface.

OO design version with proxy

  1. SpellView - proxy class. Header file public.
  2. SpellViewHandler - singleton class (hidden) Header file private: used only by implementation of SpellView and CGI.

Server interface

used by server-side handlers

  • applying effects
    • do damage
    • set timed effects
    • adv map logic

Configuration

[WiP]

Spell Format