00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __PERSON_H
00015 #define __PERSON_H
00016
00017 #include <string>
00018 #include <map>
00019 #include <list>
00020 using namespace std;
00021
00022 #include "background_level.h"
00023 #include "skill_level.h"
00024 #include "has_special.h"
00025 #include "stat_amount.h"
00026 #include "person_items.h"
00027 #include "status.h"
00028 #include "relations.h"
00029
00030 #define loopPersonBackground(r,v) loopSingle((r)->listBackground(),v,class background_level,list)
00031 #define loopPersonSkills(r,v) loopMap((r)->listSkills(),v,class skill_level)
00032 #define loopPersonSpecials(r,v) loopMap((r)->listSpecials(),v,class has_special)
00033 #define loopPersonStats(r,v) loopMap((r)->listStats(),v,class stat_amount)
00034 #define loopPersonItems(r,v) loopSingle((r)->listItems(),v,class person_items,list)
00035 #define loopPersonStatus(r,v) loopMap((r)->listStatus(),v,class status)
00036 #define loopPersonRelations(r,v) loopMap((r)->listRelations(),v,class relations)
00037
00038 class person {
00039 string name;
00040 string user;
00041 class race *race;
00042 map<string,class background_level> background;
00043 map<string,class skill_level> skills;
00044 map<string,class has_special> specials;
00045 map<string,class stat_amount> stats;
00046 map<string,class person_items> items;
00047 map<string,class status> status;
00048 int points;
00049 map<string,class relations> relations;
00050 int location;
00051 int start;
00052 int last;
00053 public:
00054 person();
00055
00056
00057 const string getName() const;
00058 void setName(const string v);
00059
00060
00061 const string getUser() const;
00062 void setUser(const string v);
00063
00064
00065 class race& getRace() const;
00066 void setRace(class race &v);
00067
00068
00069 class background_level& getBackground(const string v);
00070 list<class background_level>& listBackground();
00071 void setBackground(class background_level &v);
00072 void delBackground(const string v);
00073 const bool isBackground(const string v) const;
00074
00075
00076 class skill_level& getSkills(const string v);
00077 map<string,class skill_level>& listSkills();
00078 void setSkills(class skill_level &v);
00079 void delSkills(const string v);
00080 const bool isSkills(const string v) const;
00081
00082
00083 class has_special& getSpecials(const string v);
00084 map<string,class has_special>& listSpecials();
00085 void setSpecials(class has_special &v);
00086 void delSpecials(const string v);
00087 const bool isSpecials(const string v) const;
00088
00089
00090 class stat_amount& getStats(const string v);
00091 map<string,class stat_amount>& listStats();
00092 void setStats(class stat_amount &v);
00093 void delStats(const string v);
00094 const bool isStats(const string v) const;
00095
00096
00097 class person_items& getItems(const string v);
00098 list<class person_items>& listItems();
00099 void setItems(class person_items &v);
00100 void delItems(const string v);
00101 const bool isItems(const string v) const;
00102
00103
00104 class status& getStatus(const string v);
00105 map<string,class status>& listStatus();
00106 void setStatus(class status &v);
00107 void delStatus(const string v);
00108 const bool isStatus(const string v) const;
00109
00110
00111 const int getPoints() const;
00112 void setPoints(const int v);
00113
00114
00115 class relations& getRelations(const string v);
00116 map<string,class relations>& listRelations();
00117 void setRelations(class relations &v);
00118 void delRelations(const string v);
00119 const bool isRelations(const string v) const;
00120
00121
00122 const int getLocation() const;
00123 void setLocation(const int v);
00124 const string showLocation() const;
00125
00126
00127 const int getStart() const;
00128 void setStart(const int v);
00129
00130
00131 const int getLast() const;
00132 void setLast(const int v);
00133
00134 void save(class channel &ch);
00135 void load(class channel &ch);
00136 void xml(ofstream &f, int l=0, int r=0);
00137 };
00138
00139
00140
00141 #define loopPersons(v) loopMap(person_repo.listPerson(),v,class person)
00142
00143 class personRepository {
00144 map<string,person> persons;
00145 public:
00146 class person& getPerson(const string v);
00147 void setPerson(class person& v);
00148 map<string,class person>& listPerson();
00149 void delPerson(const string v);
00150 const bool isPerson(const string v) const;
00151 multimap<string, sigc::signal<void, class person& > > relations;
00152 bool load(class channel &ch);
00153 void save(class channel &ch);
00154 };
00155
00156 extern personRepository person_repo;
00157
00158 #endif // __PERSON_H