00001 #ifndef SKILLS_HH_ 00002 # define SKILLS_HH_ 00003 00004 # include <map> 00005 # include <set> 00006 00007 # include "objects_fwd.hh" 00008 00009 namespace objects 00010 { 00011 class Skills 00012 { 00013 public: 00014 typedef std::map<int, int> SkillLevelMap; 00015 typedef std::set<const Skill *> SkillSet; 00016 typedef std::set<const AttackSkill *> AttackSkillSet; 00017 typedef std::set<const SupportSkill *> SupportSkillSet; 00018 00019 public: 00020 Skills(); 00021 ~Skills(); 00022 00023 const SkillLevelMap &get_skill_levels() const; 00024 int get_skill_level(int skill_id) const; 00025 void set_skill_level(int skill_id, int l); 00026 00027 protected: 00028 SkillLevelMap _skill_levels; 00029 00030 public: // Filters 00031 AttackSkillSet &get_attack_skills(); 00032 SupportSkillSet &get_support_skills(); 00033 00034 private: 00035 SkillSet _skill_set; 00036 AttackSkillSet _attack_skill_set; 00037 SupportSkillSet _support_skill_set; 00038 }; 00039 } 00040 00041 # include "skills.hxx" 00042 00043 #endif