00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __SKILL_H
00015 #define __SKILL_H
00016
00017 #include <string>
00018 #include <map>
00019 #include <list>
00020 using namespace std;
00021
00022 #include "special.h"
00023
00024 #define loopSkillSpecials(r,v) loopMap((r)->listSpecials(),v,class special)
00025
00026 class skill {
00027 class background *background;
00028 string name;
00029 string description;
00030 map<string,class special> specials;
00031 public:
00032 skill();
00033
00034
00035 class background& getBackground() const;
00036 void setBackground(class background &v);
00037
00038
00039 const string getName() const;
00040 void setName(const string v);
00041
00042
00043 const string getDescription() const;
00044 void setDescription(const string v);
00045
00046
00047 class special& getSpecials(const string v);
00048 map<string,class special>& listSpecials();
00049 void setSpecials(class special &v);
00050 void delSpecials(const string v);
00051 const bool isSpecials(const string v) const;
00052
00053 void save(class channel &ch);
00054 void load(class channel &ch);
00055 void xml(ofstream &f, int l=0, int r=0);
00056 };
00057
00058
00059
00060 #define loopSkills(v) loopMap(skill_repo.listSkill(),v,class skill)
00061
00062 class skillRepository {
00063 map<string,skill> skills;
00064 public:
00065 class skill& getSkill(const string v);
00066 void setSkill(class skill& v);
00067 map<string,class skill>& listSkill();
00068 void delSkill(const string v);
00069 const bool isSkill(const string v) const;
00070 multimap<string, sigc::signal<void, class skill& > > relations;
00071 bool load(class channel &ch);
00072 void save(class channel &ch);
00073 };
00074
00075 extern skillRepository skill_repo;
00076
00077 #endif // __SKILL_H