server/item.h

Go to the documentation of this file.
00001 /* $Id:item.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 __ITEM_H
00015 #define __ITEM_H
00016 
00017 #include <string>
00018 #include <map>
00019 #include <list>
00020 using namespace std;
00021 
00022 #include "action_level.h"
00023 #include "action_skill.h"
00024 #include "material.h"
00025 #include "action_bonus.h"
00026 
00027 #define loopItemUsage(r,v) loopMapi((r)->listUsage(),v,class action_level)
00028 #define loopItemCreation(r,v) loopMap((r)->listCreation(),v,class action_skill)
00029 #define loopItemMaterial(r,v) loopSingle((r)->listMaterial(),v,class material,list)
00030 #define loopItemBonus(r,v) loopMapi((r)->listBonus(),v,class action_bonus)
00031 
00032 class item {
00033     string name;
00034     int nr;
00035     string description;
00036     int status;
00037     int type;
00038     class skill *skill;
00039     class special *special;
00040     map<int,class action_level> usage;
00041     int maxUsage;
00042     map<string,class action_skill> creation;
00043     map<string,class material> material;
00044     map<int,class action_bonus> bonus;
00045     int maxBonus;
00046 public:
00047     item();
00048 
00049     // Field : name
00050     const string getName() const;
00051     void setName(const string v);
00052 
00053     // Field : nr
00054     const int getNr() const;
00055     void setNr(const int v);
00056     int operator<(const class item &ck) const;
00057 
00058     // Field : description
00059     const string getDescription() const;
00060     void setDescription(const string v);
00061 
00062     // Field : status
00063     const int getStatus() const;
00064     void setStatus(const int v);
00065 
00066     // Field : type
00067     enum type_enum{type_tool,type_cutting_weapon,type_blunt_weapon,type_impaling_weapon,type_transport,type_building,type_good};
00068     const int getType() const;
00069     const string showType() const;
00070     void setType(const int v);
00071     void setType(const string v);
00072 
00073     // Field : skill
00074     class skill& getSkill() const;
00075     void setSkill(class skill &v);
00076 
00077     // Field : special
00078     class special& getSpecial() const;
00079     void setSpecial(class special &v);
00080 
00081     // Field : usage
00082     class action_level& getUsage(const int v);
00083     map<int,class action_level>& listUsage();
00084     void setUsage(class action_level &v);
00085     void delUsage(const int v);
00086     const bool isUsage(const int v) const;
00087 
00088     // Field : creation
00089     class action_skill& getCreation(const string v);
00090     map<string,class action_skill>& listCreation();
00091     void setCreation(class action_skill &v);
00092     void delCreation(const string v);
00093     const bool isCreation(const string v) const;
00094 
00095     // Field : material
00096     class material& getMaterial(const string v);
00097     list<class material>& listMaterial();
00098     void setMaterial(class material &v);
00099     void delMaterial(const string v);
00100     const bool isMaterial(const string v) const;
00101 
00102     // Field : bonus
00103     class action_bonus& getBonus(const int v);
00104     map<int,class action_bonus>& listBonus();
00105     void setBonus(class action_bonus &v);
00106     void delBonus(const int v);
00107     const bool isBonus(const int v) const;
00108 
00109     void save(class channel &ch);
00110     void load(class channel &ch);
00111     void xml(ofstream &f, int l=0, int r=0);
00112 };
00113 
00114 // Repository
00115 
00116 #define loopItems(v) loopSingle(item_repo.listItem(),v,class item,list)
00117 
00118 class itemRepository {
00119     map<string,item> items;
00120     int max_nr;
00121 public:
00122     itemRepository();
00123     class item& getItem(const string v);
00124     void setItem(class item& v);
00125     list<class item>& listItem();
00126     void delItem(const string v);
00127     const bool isItem(const string v) const;
00128     multimap<string, sigc::signal<void, class item& > > relations;
00129     bool load(class channel &ch);
00130     void save(class channel &ch);
00131 };
00132 
00133 extern itemRepository item_repo;
00134 
00135 #endif // __ITEM_H


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