00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(AFX_ACCESSORYSTORE_H__6A964E56_3784_42FA_A900_2AB4B98F99A8__INCLUDED_)
00022 #define AFX_ACCESSORYSTORE_H__6A964E56_3784_42FA_A900_2AB4B98F99A8__INCLUDED_
00023
00024 #include <list>
00025 #include <vector>
00026 #include <map>
00027 #include <set>
00028 #include <weapons/Weapon.h>
00029 #include <weapons/Accessory.h>
00030 #include <weapons/AccessoryCreateContext.h>
00031 #include <common/ProgressCounter.h>
00032
00033 class XMLNode;
00034 class AccessoryStore
00035 {
00036 public:
00037
00038
00039
00040 enum SortKey
00041 {
00042 SortNothing = 0,
00043 SortName = 1,
00044 SortPrice = 2
00045 };
00046
00047 AccessoryStore();
00048 virtual ~AccessoryStore();
00049
00050 bool parseFile(ScorchedContext &context, ProgressCounter *counter = 0);
00051 void clearAccessories();
00052
00053 Accessory *findByAccessoryId(unsigned int id);
00054 Accessory *findByPrimaryAccessoryName(const char *name);
00055 AccessoryPart *findAccessoryPartByAccessoryId(unsigned int id, const char *type);
00056 AccessoryPart *createAccessoryPart(AccessoryCreateContext &context,
00057 Accessory *parent, XMLNode *currentNode);
00058 AccessoryPart *findByAccessoryPartId(unsigned int id);
00059
00060 Weapon *getDeathAnimation();
00061 Weapon *getMuzzelFlash();
00062
00063 std::list<Accessory *> getAllAccessories(int sortKey=SortNothing);
00064 std::list<Accessory *> getAllAccessoriesByTabGroup(const char *tabgroup, int sortKey=SortNothing);
00065 std::map<std::string, XMLNode *> &getParsingNodes() { return parsingNodes_; }
00066 std::set<std::string> &getTabGroupNames() { return tabGroups_; }
00067
00068 bool writeWeapon(NetBuffer &buffer, Weapon *weapon);
00069 Weapon *readWeapon(NetBufferReader &reader);
00070 bool writeAccessoryPart(NetBuffer &buffer, AccessoryPart *weapon);
00071 AccessoryPart *readAccessoryPart(NetBufferReader &reader);
00072
00073 bool writeEconomyToBuffer(NetBuffer &buffer);
00074 bool readEconomyFromBuffer(NetBufferReader &reader);
00075
00076 void sortList(std::list<Accessory *> &accList, int sortKey=SortNothing);
00077
00078 protected:
00079 std::set<std::string> tabGroups_;
00080 std::list<Accessory *> accessories_;
00081 std::list<AccessoryPart *> accessoryParts_;
00082 std::map<std::string, XMLNode *> parsingNodes_;
00083 Weapon *muzzleFlash_;
00084 Weapon *deathAnimation_;
00085
00086 };
00087
00088 #endif // !defined(AFX_ACCESSORYSTORE_H__6A964E56_3784_42FA_A900_2AB4B98F99A8__INCLUDED_)