OpenMW
apps/openmw/mwmechanics/spells.hpp
Go to the documentation of this file.
00001 #ifndef GAME_MWMECHANICS_SPELLS_H
00002 #define GAME_MWMECHANICS_SPELLS_H
00003 
00004 #include <map>
00005 #include <string>
00006 
00007 #include "../mwworld/ptr.hpp"
00008 
00009 #include "magiceffects.hpp"
00010 
00011 namespace ESM
00012 {
00013     struct Spell;
00014 }
00015 
00016 namespace MWMechanics
00017 {
00018     class MagicEffects;
00019 
00024     class Spells
00025     {
00026         public:
00027 
00028             typedef std::map<std::string, std::vector<float> > TContainer; // ID, normalised magnitudes
00029             typedef TContainer::const_iterator TIterator;
00030 
00031         private:
00032 
00033             TContainer mSpells;
00034             std::string mSelectedSpell;
00035 
00036         public:
00037 
00038             void purgeCommonDisease();
00039             void purgeBlightDisease();
00040             void purgeCorprusDisease();
00041             void purgeCurses();
00042 
00043             TIterator begin() const;
00044 
00045             TIterator end() const;
00046 
00047             void add (const std::string& spell);
00049 
00050             void remove (const std::string& spell);
00053 
00054             MagicEffects getMagicEffects() const;
00056 
00057             void clear();
00059 
00060             void setSelectedSpell (const std::string& spellId);
00062 
00063             const std::string getSelectedSpell() const;
00065 
00066             bool hasCommonDisease() const;
00067 
00068             bool hasBlightDisease() const;
00069 
00070             void visitEffectSources (MWMechanics::EffectSourceVisitor& visitor) const;
00071     };
00072 }
00073 
00074 #endif