--- /dev/null
+Kain 1 1 100 0 10 10 10 10 100 3 2 test 100000000 1 3001 3001 -1 1 -1 3002 -1
\ No newline at end of file
\r
shared_ptr<ItemGO> FileItemDAO::GetById(const string &Id) const\r
{\r
- string line;\r
- ifstream infile;\r
- infile.open(GetItemFilePath().c_str());\r
-\r
- if (infile.fail())\r
+ map<string, shared_ptr<ItemGO> >::const_iterator iter;\r
+ iter = spItemCache.find(Id);\r
+ if (iter != spItemCache.end())\r
{\r
- throw ResourceException(str(format("Unable to open file %1%") % GetItemFilePath()), __FILE__, __LINE__);\r
+ return shared_ptr<ItemGO>(iter->second->Clone());\r
}\r
-\r
-\r
- while (getline(infile, line))\r
+ else\r
{\r
- if (line.empty())\r
- {\r
- continue;\r
- }\r
- if (line[0] == '#')\r
- {\r
- continue;\r
- }\r
- size_t tilde1 = line.find_first_of("~");\r
- if (tilde1 == string::npos)\r
- {\r
- throw DataLayerException(str(format("Invalid Item in %1%: %2%") % mFilename % line), __FILE__,\r
- __LINE__);\r
- }\r
- size_t tilde2 = line.find_first_of("~", tilde1 + 1);\r
- if (tilde2 == string::npos)\r
- {\r
- throw DataLayerException(str(format("Invalid Item in %1%: %2%") % mFilename % line), __FILE__,\r
- __LINE__);\r
- }\r
- string lineId = FileId::CreateItemId(line.substr(tilde1 + 1, tilde2 - tilde1 - 1));\r
- \r
- if (lineId == Id)\r
- {\r
- shared_ptr<ItemGO> spItem = CreateItemFromLine(line);\r
- return spItem;\r
- }\r
+ return shared_ptr<ItemGO>();\r
}\r
- return shared_ptr<ItemGO>();\r
}\r
\r
shared_ptr<ItemGO> FileItemDAO::CreateItemFromLine(const string &line) const\r
iter = spPlayerCache.find(id);\r
if (iter != spPlayerCache.end())\r
{\r
- return iter->second;\r
+ return shared_ptr<PlayerGO>(iter->second->Clone());\r
}\r
return shared_ptr<PlayerGO>();\r
}\r
throw DataLayerException(str(format("Corrupt %1% file: Non integer item uses for item %2% on player %3%") %\r
mFilename % itemid % spPlayer->Name()), __FILE__, __LINE__);\r
}\r
+ spPlayer->AddItemToInventory(spItem);\r
tok_iter++;\r
}\r
\r
\r
ArmorGO::ArmorGO() : ItemGO()\r
{\r
+ mType = ItemTypes::Armor;\r
}\r
\r
ArmorGO::ArmorGO(const string &name, const int &price, const int &uses, const int &strength, const int &defense, const int &maxhp) :\r
mModifiers[Modifiers::strength] = strength;\r
mModifiers[Modifiers::defense] = defense;\r
mModifiers[Modifiers::maxhp] = maxhp;\r
+ mType = ItemTypes::Armor;\r
}\r
\r
ArmorGO::~ArmorGO()\r
\r
PotionGO::PotionGO() : ItemGO()\r
{\r
+ mType = ItemTypes::Potion;\r
}\r
\r
PotionGO::PotionGO(const string &name, const int &price, const int &uses, const int &strength, const int &defense, const int &maxhp) :\r
mModifiers[Modifiers::strength] = strength;\r
mModifiers[Modifiers::defense] = defense;\r
mModifiers[Modifiers::maxhp] = maxhp;\r
+ mType = ItemTypes::Potion;\r
}\r
\r
PotionGO::~PotionGO()\r
\r
WeaponGO::WeaponGO() : ItemGO()\r
{\r
+ mType = ItemTypes::Weapon;\r
}\r
\r
WeaponGO::WeaponGO(const string &name, const int &price, const int &uses, const int &strength, const int &defense, const int &maxhp) :\r
mModifiers[Modifiers::strength] = strength;\r
mModifiers[Modifiers::defense] = defense;\r
mModifiers[Modifiers::maxhp] = maxhp;\r
+ mType = ItemTypes::Weapon;\r
}\r
\r
WeaponGO::~WeaponGO()\r