server/race.h

Go to the documentation of this file.
00001 /* $Id:race.h $ */
00002 /*
00003    Copyright (C) 2007 by Jurjen Stellingwerff <jurjen@stwerff.xs4all.nl>
00004    Part of the Moros Project http://moros.sourceforge.net/
00005 
00006    This program is free software; you can redistribute it and/or modify
00007    it under the terms of the GNU General Public License version 3.
00008    This program is distributed in the hope that it will be useful,
00009    but WITHOUT ANY WARRANTY.
00010 
00011    See the COPYING file for more details.
00012 */
00013 
00014 #ifndef __RACE_H
00015 #define __RACE_H
00016 
00017 #include <string>
00018 #include <map>
00019 #include <list>
00020 using namespace std;
00021 
00022 #include "action_level.h"
00023 #include "material.h"
00024 #include "background_level.h"
00025 #include "skill_level.h"
00026 #include "unit.h"
00027 #include "culture.h"
00028 
00029 #define loopRaceSpecial(r,v) loopMapi((r)->listSpecial(),v,class action_level)
00030 #define loopRaceWeapons(r,v) loopSingle((r)->listWeapons(),v,class material,list)
00031 #define loopRaceBackground(r,v) loopSingle((r)->listBackground(),v,class background_level,list)
00032 #define loopRaceSkill(r,v) loopMap((r)->listSkill(),v,class skill_level)
00033 #define loopRaceUnit(r,v) loopMap((r)->listUnit(),v,class unit)
00034 #define loopRaceCulture(r,v) loopMap((r)->listCulture(),v,class culture)
00035 
00036 class race {
00037     string name;
00038     string description;
00039     int size;
00040     map<int,class action_level> special;
00041     int maxSpecial;
00042     map<string,class material> weapons;
00043     int age_percentage;
00044     class aging *aging;
00045     int reach;
00046     map<string,class background_level> background;
00047     map<string,class skill_level> skill;
00048     int armor;
00049     map<string,class unit> unit;
00050     map<string,class culture> culture;
00051 public:
00052     race();
00053 
00054     // Field : name
00055     const string getName() const;
00056     void setName(const string v);
00057 
00058     // Field : description
00059     const string getDescription() const;
00060     void setDescription(const string v);
00061 
00062     // Field : size
00063     const int getSize() const;
00064     void setSize(const int v);
00065 
00066     // Field : special
00067     class action_level& getSpecial(const int v);
00068     map<int,class action_level>& listSpecial();
00069     void setSpecial(class action_level &v);
00070     void delSpecial(const int v);
00071     const bool isSpecial(const int v) const;
00072 
00073     // Field : weapons
00074     class material& getWeapons(const string v);
00075     list<class material>& listWeapons();
00076     void setWeapons(class material &v);
00077     void delWeapons(const string v);
00078     const bool isWeapons(const string v) const;
00079 
00080     // Field : age_percentage
00081     const int getAge_percentage() const;
00082     void setAge_percentage(const int v);
00083 
00084     // Field : aging
00085     class aging& getAging() const;
00086     void setAging(class aging &v);
00087 
00088     // Field : reach
00089     const int getReach() const;
00090     void setReach(const int v);
00091 
00092     // Field : background
00093     class background_level& getBackground(const string v);
00094     list<class background_level>& listBackground();
00095     void setBackground(class background_level &v);
00096     void delBackground(const string v);
00097     const bool isBackground(const string v) const;
00098 
00099     // Field : skill
00100     class skill_level& getSkill(const string v);
00101     map<string,class skill_level>& listSkill();
00102     void setSkill(class skill_level &v);
00103     void delSkill(const string v);
00104     const bool isSkill(const string v) const;
00105 
00106     // Field : armor
00107     const int getArmor() const;
00108     void setArmor(const int v);
00109 
00110     // Field : unit
00111     class unit& getUnit(const string v);
00112     map<string,class unit>& listUnit();
00113     void setUnit(class unit &v);
00114     void delUnit(const string v);
00115     const bool isUnit(const string v) const;
00116 
00117     // Field : culture
00118     class culture& getCulture(const string v);
00119     map<string,class culture>& listCulture();
00120     void setCulture(class culture &v);
00121     void delCulture(const string v);
00122     const bool isCulture(const string v) const;
00123 
00124     void save(class channel &ch);
00125     void load(class channel &ch);
00126     void xml(ofstream &f, int l=0, int r=0);
00127 };
00128 
00129 // Repository
00130 
00131 #define loopRaces(v) loopMap(race_repo.listRace(),v,class race)
00132 
00133 class raceRepository {
00134     map<string,race> races;
00135 public:
00136     class race& getRace(const string v);
00137     void setRace(class race& v);
00138     map<string,class race>& listRace();
00139     void delRace(const string v);
00140     const bool isRace(const string v) const;
00141     multimap<string, sigc::signal<void, class race& > > relations;
00142     bool load(class channel &ch);
00143     void save(class channel &ch);
00144 };
00145 
00146 extern raceRepository race_repo;
00147 
00148 #endif // __RACE_H


Generated on Tue Jan 1 17:30:01 2008 for server/race.h Source File by  doxygen   Visit the project page on SourceForge.net Logo