+++ /dev/null
-#ifndef __GS__FileArmorDAO_H__\r
-#define __GS__FileArmorDAO_H__\r
-\r
-#include <GameServ/GameLayer/GameObjects/ArmorGO.h>\r
-#include <GameServ/DataLayer/IArmorDAO.h>\r
-using GameServ::GameLayer::GameObjects::ArmorGO;\r
-using GameServ::DataLayer::DataAccessObjects::IArmorDAO;\r
-\r
-#include <boost/shared_ptr.hpp>\r
-using boost::shared_ptr;\r
-\r
-#include <string>\r
-using std::string;\r
-\r
-#include <list>\r
-using std::list;\r
-\r
-#include <map>\r
-using std::map;\r
-\r
-namespace GameServ { namespace DataLayer { namespace File\r
-{\r
- //! File implementation of IArmorDAO interface\r
- /*!\r
- If you're using an File datasource, you will be using this\r
- DAO to access Armors.\r
- */\r
- class FileArmorDAO : public IArmorDAO\r
- {\r
- public:\r
- // Ctors, Dtors ///////////////////////////////////////////////////////\r
- FileArmorDAO(void);\r
- FileArmorDAO(const string &filename);\r
- virtual ~FileArmorDAO();\r
-\r
- // Methods ////////////////////////////////////////////////////////////\r
- virtual shared_ptr<ArmorGO> GetById(const string &Id) const;\r
-\r
- virtual bool IdExists(const string &Id) const;\r
-\r
- void LoadArmorCache(void);\r
-\r
- private:\r
- //! Data file\r
- string mFilename;\r
-\r
- // Helper Methods /////////////////////////////////////////////////////\r
-\r
- //! Creates the ArmorGO found at iterator position\r
- shared_ptr<ArmorGO> CreateArmorFromLine(const string &line) const;\r
-\r
- //! Get the Armor database file path\r
- string GetArmorFilePath(void) const;\r
-\r
- void Initialize(const string &filename);\r
-\r
-\r
- map<string, shared_ptr<ArmorGO> > spArmorCache;\r
- };\r
-} } } // GameServ.DataLayer.DataAccessObjects.File\r
-\r
-#endif // __GS__FileArmorDAO_H__\r
\r
#include <GameServ/DataLayer/IPlayerDAO.h>\r
using GameServ::DataLayer::DataAccessObjects::IPlayerDAO;\r
-#include <GameServ/DataLayer/IArmorDAO.h>\r
-using GameServ::DataLayer::DataAccessObjects::IArmorDAO;\r
-#include <GameServ/DataLayer/IWeaponDAO.h>\r
-using GameServ::DataLayer::DataAccessObjects::IWeaponDAO;\r
+#include <GameServ/DataLayer/IItemDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IItemDAO;\r
+\r
\r
#include <boost/smart_ptr/shared_ptr.hpp>\r
using boost::shared_ptr;\r
// Overrides //////////////////////////////////////////////////////////\r
\r
virtual shared_ptr<IPlayerDAO> GetPlayerDAO(void) const;\r
- virtual shared_ptr<IArmorDAO> GetArmorDAO(void) const;\r
- virtual shared_ptr<IWeaponDAO> GetWeaponDAO(void) const;\r
+ virtual shared_ptr<IItemDAO> GetItemDAO(void) const;\r
\r
private:\r
\r
static string CreatePlayerId(const string &Name);\r
static string GetNameFromPlayerId(const string &Id);\r
\r
- static string CreateItemId(ItemTypes::ItemType type, const string &Number);\r
+ static string CreateItemId(const string &Number);\r
static ItemTypes::ItemType GetItemTypeFromId(const string &Id);\r
static string GetItemNumberFromId(const string &Id);\r
private:\r
+++ /dev/null
-#ifndef __GS__FILEWEAPONDAO_H__\r
-#define __GS__FILEWEAPONDAO_H__\r
-\r
-#include <GameServ/GameLayer/GameObjects/WeaponGO.h>\r
-#include <GameServ/DataLayer/IWeaponDAO.h>\r
-using GameServ::GameLayer::GameObjects::WeaponGO;\r
-using GameServ::DataLayer::DataAccessObjects::IWeaponDAO;\r
-\r
-#include <boost/shared_ptr.hpp>\r
-using boost::shared_ptr;\r
-\r
-#include <string>\r
-using std::string;\r
-\r
-#include <list>\r
-using std::list;\r
-\r
-#include <map>\r
-using std::map;\r
-\r
-namespace GameServ { namespace DataLayer { namespace File\r
-{\r
- //! File implementation of IWeaponDAO interface\r
- /*!\r
- If you're using an File datasource, you will be using this\r
- DAO to access Weapons.\r
- */\r
- class FileWeaponDAO : public IWeaponDAO\r
- {\r
- public:\r
- // Ctors, Dtors ///////////////////////////////////////////////////////\r
- FileWeaponDAO(void);\r
- FileWeaponDAO(const string &filename);\r
- virtual ~FileWeaponDAO();\r
-\r
- // Methods ////////////////////////////////////////////////////////////\r
- virtual shared_ptr<WeaponGO> GetById(const string &Id) const;\r
-\r
- virtual bool IdExists(const string &Id) const;\r
-\r
- void LoadWeaponCache(void);\r
-\r
- private:\r
- //! Data file\r
- string mFilename;\r
-\r
- // Helper Methods /////////////////////////////////////////////////////\r
-\r
- //! Creates the WeaponGO found at iterator position\r
- shared_ptr<WeaponGO> CreateWeaponFromLine(const string &line) const;\r
-\r
- //! Get the Weapon database file path\r
- string GetWeaponFilePath(void) const;\r
-\r
- void Initialize(const string &filename);\r
-\r
-\r
- map<string, shared_ptr<WeaponGO> > spWeaponCache;\r
- };\r
-} } } // GameServ.DataLayer.DataAccessObjects.File\r
-\r
-#endif // __GS__FileWeaponDAO_H__\r
+++ /dev/null
-#ifndef __GS_IARMORDAO_H__\r
-#define __GS_IARMORDAO_H__\r
-\r
-#include <GameServ/GameLayer/GameObjects/ArmorGO.h>\r
-using GameServ::GameLayer::GameObjects::ArmorGO;\r
-\r
-#include <boost/shared_ptr.hpp>\r
-using boost::shared_ptr;\r
-\r
-#include <list>\r
-using std::list;\r
-#include <string>\r
-using std::string;\r
-\r
-namespace GameServ { namespace DataLayer { namespace DataAccessObjects\r
-{\r
- //! Interface for Armor Data Access Objects \r
- /*! \r
- This is the interface for all Armor DAOs. Each specific datasource\r
- will need to inherit this common interface.\r
- */\r
- class IArmorDAO\r
- {\r
- public:\r
- // Ctors, Dtors ///////////////////////////////////////////////////////\r
- IArmorDAO(void);\r
- virtual ~IArmorDAO(void); // Needs to be virtual \r
-\r
- //! Get the Armor using a unique data/object Id\r
- /*!\r
- \param Id Unique identifier\r
- \return A boost shared pointer to a Armor game object if found\r
- otherwise the list is empty.\r
- */\r
- virtual shared_ptr<ArmorGO> GetById(const string &Id) const = 0;\r
-\r
- //! Function to quickly search to see if an Id exists or not\r
- /*!\r
- \param Id The Id of the game object to search for\r
- \return true if the Id is valid and exists in the data, false otherwise\r
- */\r
- virtual bool IdExists(const string &Id) const = 0;\r
-\r
- private:\r
- \r
- \r
- };\r
-} } }\r
-\r
-#endif
\ No newline at end of file
\r
#include <GameServ/DataLayer/IPlayerDAO.h>\r
using GameServ::DataLayer::DataAccessObjects::IPlayerDAO;\r
-#include <GameServ/DataLayer/IArmorDAO.h>\r
-using GameServ::DataLayer::DataAccessObjects::IArmorDAO;\r
-#include <GameServ/DataLayer/IWeaponDAO.h>\r
-using GameServ::DataLayer::DataAccessObjects::IWeaponDAO;\r
+#include <GameServ/DataLayer/IItemDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IItemDAO;\r
+\r
\r
#include <boost/smart_ptr/shared_ptr.hpp>\r
using boost::shared_ptr;\r
//! Player DataAccessObject for all Player related operations\r
virtual shared_ptr<IPlayerDAO> GetPlayerDAO(void) const = 0;\r
\r
- //! Armor DataAccessObject for all armor related operations\r
- virtual shared_ptr<IArmorDAO> GetArmorDAO(void) const = 0;\r
-\r
- //! Weapon DataAccessObject for all weapon related operations\r
- virtual shared_ptr<IWeaponDAO> GetWeaponDAO(void) const = 0;\r
+ //! Item DataAccessObject for all item related operations\r
+ virtual shared_ptr<IItemDAO> GetItemDAO(void) const = 0;\r
\r
private:\r
\r
+++ /dev/null
-#ifndef __GS_IWEAPONDAO_H__\r
-#define __GS_IWEAPONDAO_H__\r
-\r
-#include <GameServ/GameLayer/GameObjects/WeaponGO.h>\r
-using GameServ::GameLayer::GameObjects::WeaponGO;\r
-\r
-#include <boost/shared_ptr.hpp>\r
-using boost::shared_ptr;\r
-\r
-#include <list>\r
-using std::list;\r
-#include <string>\r
-using std::string;\r
-\r
-namespace GameServ { namespace DataLayer { namespace DataAccessObjects\r
-{\r
- //! Interface for Weapon Data Access Objects \r
- /*! \r
- This is the interface for all Weapon DAOs. Each specific datasource\r
- will need to inherit this common interface.\r
- */\r
- class IWeaponDAO\r
- {\r
- public:\r
- // Ctors, Dtors ///////////////////////////////////////////////////////\r
- IWeaponDAO(void);\r
- virtual ~IWeaponDAO(void); // Needs to be virtual \r
-\r
- //! Get the Weapon using a unique data/object Id\r
- /*!\r
- \param Id Unique identifier\r
- \return A boost shared pointer to a Weapon game object if found\r
- otherwise the list is empty.\r
- */\r
- virtual shared_ptr<WeaponGO> GetById(const string &Id) const = 0;\r
-\r
- //! Function to quickly search to see if an Id exists or not\r
- /*!\r
- \param Id The Id of the game object to search for\r
- \return true if the Id is valid and exists in the data, false otherwise\r
- */\r
- virtual bool IdExists(const string &Id) const = 0;\r
-\r
- private:\r
- \r
- \r
- };\r
-} } }\r
-\r
-#endif
\ No newline at end of file
>\r
</File>\r
<File\r
- RelativePath=".\src\DataLayer\IArmorDAO.cpp"\r
+ RelativePath=".\include\GameServ\DataLayer\IDAOFactory.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\include\GameServ\DataLayer\IArmorDAO.h"\r
+ RelativePath=".\src\DataLayer\IItemDAO.cpp"\r
>\r
</File>\r
<File\r
- RelativePath=".\include\GameServ\DataLayer\IDAOFactory.h"\r
+ RelativePath=".\include\GameServ\DataLayer\IItemDAO.h"\r
>\r
</File>\r
<File\r
RelativePath=".\include\GameServ\DataLayer\IPlayerDAO.h"\r
>\r
</File>\r
- <File\r
- RelativePath=".\src\DataLayer\IWeaponDAO.cpp"\r
- >\r
- </File>\r
- <File\r
- RelativePath=".\include\GameServ\DataLayer\IWeaponDAO.h"\r
- >\r
- </File>\r
<Filter\r
Name="File"\r
>\r
- <File\r
- RelativePath=".\src\DataLayer\File\FileArmorDAO.cpp"\r
- >\r
- </File>\r
- <File\r
- RelativePath=".\include\GameServ\DataLayer\File\FileArmorDAO.h"\r
- >\r
- </File>\r
<File\r
RelativePath=".\src\DataLayer\File\FileDAOFactory.cpp"\r
>\r
>\r
</File>\r
<File\r
- RelativePath=".\src\DataLayer\File\FilePlayerDAO.cpp"\r
+ RelativePath=".\src\DataLayer\File\FileItemDAO.cpp"\r
>\r
</File>\r
<File\r
- RelativePath=".\include\GameServ\DataLayer\File\FilePlayerDAO.h"\r
+ RelativePath=".\include\GameServ\DataLayer\File\FileItemDAO.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\src\DataLayer\File\FileWeaponDAO.cpp"\r
+ RelativePath=".\src\DataLayer\File\FilePlayerDAO.cpp"\r
>\r
</File>\r
<File\r
- RelativePath=".\include\GameServ\DataLayer\File\FileWeaponDAO.h"\r
+ RelativePath=".\include\GameServ\DataLayer\File\FilePlayerDAO.h"\r
>\r
</File>\r
</Filter>\r
+++ /dev/null
-#include <GameServ/DataLayer/File/FileArmorDAO.h>\r
-using GameServ::DataLayer::File::FileArmorDAO;\r
-#include <GameServ/GameLayer/GameObjects/ArmorGO.h>\r
-using GameServ::GameLayer::GameObjects::ArmorGO;\r
-\r
-#include <GameServ/DataLayer/DataLayerExceptions.h>\r
-using GameServ::DataLayer::Exceptions::ResourceException;\r
-using GameServ::DataLayer::Exceptions::DataLayerException;\r
-\r
-#include <GameServ/DataLayer/File/FileId.h>\r
-using GameServ::DataLayer::File::FileId;\r
-\r
-#include <GameServ/Types.h>\r
-using GameServ::Types::ItemTypes;\r
-using GameServ::Types::Modifiers;\r
-\r
-#include <boost/shared_ptr.hpp>\r
-#include <boost/format.hpp>\r
-#include <boost/algorithm/string.hpp>\r
-#include <boost/lexical_cast.hpp>\r
-using boost::shared_ptr;\r
-using boost::format;\r
-using boost::str;\r
-using boost::algorithm::to_upper;\r
-using boost::lexical_cast;\r
-#include <boost/tokenizer.hpp>\r
-typedef boost::tokenizer<boost::char_separator<char> > \r
- tokenizer;\r
-\r
-#include <string>\r
-using std::string;\r
-\r
-#include <fstream>\r
-using std::ifstream;\r
-using std::getline;\r
-using std::ofstream;\r
-using std::endl;\r
-\r
-#include <map>\r
-using std::map;\r
-\r
-// TODO: Switch filename to be loaded from a config file\r
-FileArmorDAO::FileArmorDAO() : mFilename("data/items/masteritems.dat")\r
-{\r
- Initialize(GetArmorFilePath());\r
-}\r
-\r
-FileArmorDAO::FileArmorDAO(const string &filename)\r
-{\r
- Initialize(filename);\r
-}\r
-\r
-FileArmorDAO::~FileArmorDAO()\r
-{\r
-}\r
-\r
-void FileArmorDAO::Initialize(const string &filename)\r
-{\r
- mFilename = filename;\r
- LoadArmorCache();\r
-}\r
-\r
-string FileArmorDAO::GetArmorFilePath() const\r
-{\r
- return mFilename;\r
-}\r
-\r
-shared_ptr<ArmorGO> FileArmorDAO::GetById(const string &Id) const\r
-{\r
- string line;\r
- ifstream infile;\r
- infile.open(GetArmorFilePath().c_str());\r
-\r
- if (infile.fail())\r
- {\r
- throw ResourceException(str(format("Unable to open file %1%") % GetArmorFilePath()), __FILE__, __LINE__);\r
- }\r
-\r
-\r
- while (getline(infile, line))\r
- {\r
- shared_ptr<ArmorGO> spArmor = CreateArmorFromLine(line);\r
- if (spArmor->Id() == Id)\r
- {\r
- return spArmor;\r
- }\r
- }\r
- return shared_ptr<ArmorGO>();\r
-}\r
-\r
-shared_ptr<ArmorGO> FileArmorDAO::CreateArmorFromLine(const string &line) const\r
-{\r
- assert(!line.empty());\r
- shared_ptr<ArmorGO> spArmor;\r
- map<Modifiers::Modifier, int> modifiers;\r
- spArmor = shared_ptr<ArmorGO>(new ArmorGO());\r
- boost::char_separator<char> sep("~", 0, boost::keep_empty_tokens);\r
- tokenizer tokens(line, sep);\r
- tokenizer::iterator tok_iter = tokens.begin();\r
- if ((*tok_iter) != "2")\r
- return shared_ptr<ArmorGO>();\r
- tok_iter++;\r
- spArmor->Id(FileId::CreateItemId(ItemTypes::Armor, (*tok_iter)));\r
-\r
- tok_iter++;\r
- spArmor->Name((*tok_iter));\r
- tok_iter++;\r
- spArmor->Price(lexical_cast<unsigned long int>((*tok_iter)));\r
- tok_iter++;\r
- spArmor->Uses(lexical_cast<int>((*tok_iter)));\r
- tok_iter++;\r
- modifiers[Modifiers::strength] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::defense] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::maxhp] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::hp] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::forestfights] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::playerfights] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::gold] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::bank] = lexical_cast<int>((*tok_iter));\r
- spArmor->Modifiers(modifiers);\r
-\r
- return spArmor;\r
-}\r
-bool FileArmorDAO::IdExists(const string &Id) const\r
-{\r
- map<string, shared_ptr<ArmorGO> >::const_iterator iter;\r
- iter = spArmorCache.find(Id);\r
- return (iter != spArmorCache.end());\r
-}\r
-\r
-void FileArmorDAO::LoadArmorCache(void)\r
-{\r
- ifstream infile;\r
- infile.open(mFilename.c_str());\r
-\r
- if (infile.fail())\r
- {\r
- throw DataLayerException(str(format("Unable to open %1% for reading") % mFilename), __FILE__, __LINE__);\r
- }\r
- string line;\r
- while (getline(infile, line))\r
- {\r
- if (line.length() == 0)\r
- {\r
- continue;\r
- }\r
- if (line[0] == '#')\r
- {\r
- continue;\r
- }\r
- shared_ptr<ArmorGO> spArmor = CreateArmorFromLine(line);\r
- if (spArmor != 0)\r
- {\r
- spArmorCache[spArmor->Id()] = spArmor;\r
- }\r
- }\r
- infile.close();\r
-}\r
#include <GameServ/DataLayer/File/FileDAOFactory.h>\r
#include <GameServ/DataLayer/File/FilePlayerDAO.h>\r
-#include <GameServ/DataLayer/File/FileArmorDAO.h>\r
-#include <GameServ/DataLayer/File/FileWeaponDAO.h>\r
+#include <GameServ/DataLayer/File/FileItemDAO.h>\r
\r
using GameServ::DataLayer::File::FileDAOFactory;\r
using GameServ::DataLayer::File::FilePlayerDAO;\r
-using GameServ::DataLayer::File::FileArmorDAO;\r
-using GameServ::DataLayer::File::FileWeaponDAO;\r
+using GameServ::DataLayer::File::FileItemDAO;\r
\r
#include <boost/smart_ptr/shared_ptr.hpp>\r
using boost::shared_ptr;\r
return shared_ptr<IPlayerDAO>(new FilePlayerDAO());\r
}\r
\r
-shared_ptr<IArmorDAO> FileDAOFactory::GetArmorDAO(void) const\r
+shared_ptr<IItemDAO> FileDAOFactory::GetItemDAO(void) const\r
{\r
- return shared_ptr<IArmorDAO>(new FileArmorDAO());\r
+ return shared_ptr<IItemDAO>(new FileItemDAO());\r
}\r
\r
-shared_ptr<IWeaponDAO> FileDAOFactory::GetWeaponDAO(void) const\r
-{\r
- return shared_ptr<IWeaponDAO>(new FileWeaponDAO());\r
-}\r
return Id;\r
}\r
\r
-string FileId::CreateItemId(ItemTypes::ItemType type, const string &Number)\r
+string FileId::CreateItemId(const string &Number)\r
{\r
- string id = ItemTypes::GetName(type) + ":" + Number;\r
- return id;\r
+ return Number;\r
}\r
\r
ItemTypes::ItemType FileId::GetItemTypeFromId(const string &Id)\r
#include <GameServ/DataLayer/File/FilePlayerDAO.h>\r
using GameServ::DataLayer::File::FilePlayerDAO;\r
-#include <GameServ/DataLayer/File/FileArmorDAO.h>\r
-using GameServ::DataLayer::File::FileArmorDAO;\r
-#include <GameServ/DataLayer/File/FileWeaponDAO.h>\r
-using GameServ::DataLayer::File::FileWeaponDAO;\r
+#include <GameServ/DataLayer/File/FileItemDAO.h>\r
+using GameServ::DataLayer::File::FileItemDAO;\r
\r
#include <GameServ/GameLayer/GameObjects/PlayerGO.h>\r
using GameServ::GameLayer::GameObjects::PlayerGO;\r
#include <boost/algorithm/string.hpp>\r
#include <boost/lexical_cast.hpp>\r
using boost::shared_ptr;\r
+using boost::shared_static_cast;\r
using boost::format;\r
using boost::str;\r
using boost::algorithm::to_upper;\r
\r
// Weapon\r
tok_iter++;\r
- FileWeaponDAO wdao;\r
- string weaponid = FileId::CreateItemId(ItemTypes::Weapon, (*tok_iter));\r
- spPlayer->Weapon(wdao.GetById(weaponid));\r
+ FileItemDAO idao;\r
+ string weaponid = FileId::CreateItemId((*tok_iter));\r
+ spPlayer->Weapon(boost::shared_static_cast<WeaponGO>(idao.GetById(weaponid)));\r
\r
// Armor\r
tok_iter++;\r
- FileArmorDAO adao;\r
- string armorid = FileId::CreateItemId(ItemTypes::Armor, (*tok_iter));\r
- spPlayer->Armor(adao.GetById(armorid));\r
+ string armorid = FileId::CreateItemId((*tok_iter));\r
+ spPlayer->Armor(boost::shared_static_cast<ArmorGO>(idao.GetById(armorid)));\r
\r
tok_iter++;\r
while (tok_iter != tokens.end())\r
+++ /dev/null
-#include <GameServ/DataLayer/File/FileWeaponDAO.h>\r
-using GameServ::DataLayer::File::FileWeaponDAO;\r
-#include <GameServ/GameLayer/GameObjects/WeaponGO.h>\r
-using GameServ::GameLayer::GameObjects::WeaponGO;\r
-\r
-#include <GameServ/DataLayer/DataLayerExceptions.h>\r
-using GameServ::DataLayer::Exceptions::ResourceException;\r
-using GameServ::DataLayer::Exceptions::DataLayerException;\r
-\r
-#include <GameServ/DataLayer/File/FileId.h>\r
-using GameServ::DataLayer::File::FileId;\r
-\r
-#include <GameServ/Types.h>\r
-using GameServ::Types::ItemTypes;\r
-using GameServ::Types::Modifiers;\r
-\r
-#include <boost/shared_ptr.hpp>\r
-#include <boost/format.hpp>\r
-#include <boost/algorithm/string.hpp>\r
-#include <boost/lexical_cast.hpp>\r
-using boost::shared_ptr;\r
-using boost::format;\r
-using boost::str;\r
-using boost::algorithm::to_upper;\r
-using boost::lexical_cast;\r
-#include <boost/tokenizer.hpp>\r
-typedef boost::tokenizer<boost::char_separator<char> > \r
- tokenizer;\r
-\r
-#include <string>\r
-using std::string;\r
-\r
-#include <fstream>\r
-using std::ifstream;\r
-using std::getline;\r
-using std::ofstream;\r
-using std::endl;\r
-\r
-#include <map>\r
-using std::map;\r
-\r
-// TODO: Switch filename to be loaded from a config file\r
-FileWeaponDAO::FileWeaponDAO() : mFilename("data/items/masteritems.dat")\r
-{\r
- Initialize(GetWeaponFilePath());\r
-}\r
-\r
-FileWeaponDAO::FileWeaponDAO(const string &filename)\r
-{\r
- Initialize(filename);\r
-}\r
-\r
-FileWeaponDAO::~FileWeaponDAO()\r
-{\r
-}\r
-\r
-void FileWeaponDAO::Initialize(const string &filename)\r
-{\r
- mFilename = filename;\r
- LoadWeaponCache();\r
-}\r
-\r
-string FileWeaponDAO::GetWeaponFilePath() const\r
-{\r
- return mFilename;\r
-}\r
-\r
-shared_ptr<WeaponGO> FileWeaponDAO::GetById(const string &Id) const\r
-{\r
- string line;\r
- ifstream infile;\r
- infile.open(GetWeaponFilePath().c_str());\r
-\r
- if (infile.fail())\r
- {\r
- throw ResourceException(str(format("Unable to open file %1%") % GetWeaponFilePath()), __FILE__, __LINE__);\r
- }\r
-\r
-\r
- while (getline(infile, line))\r
- {\r
- shared_ptr<WeaponGO> spWeapon = CreateWeaponFromLine(line);\r
- if (spWeapon->Id() == Id)\r
- {\r
- return spWeapon;\r
- }\r
- }\r
- return shared_ptr<WeaponGO>();\r
-}\r
-\r
-shared_ptr<WeaponGO> FileWeaponDAO::CreateWeaponFromLine(const string &line) const\r
-{\r
- assert(!line.empty());\r
- shared_ptr<WeaponGO> spWeapon;\r
- map<Modifiers::Modifier, int> modifiers;\r
- spWeapon = shared_ptr<WeaponGO>(new WeaponGO());\r
- boost::char_separator<char> sep("~", 0, boost::keep_empty_tokens);\r
- tokenizer tokens(line, sep);\r
- tokenizer::iterator tok_iter = tokens.begin();\r
- if ((*tok_iter) != "1")\r
- return shared_ptr<WeaponGO>();\r
- tok_iter++;\r
- spWeapon->Id(FileId::CreateItemId(ItemTypes::Weapon, (*tok_iter)));\r
-\r
- tok_iter++;\r
- spWeapon->Name((*tok_iter));\r
- tok_iter++;\r
- spWeapon->Price(lexical_cast<unsigned long int>((*tok_iter)));\r
- tok_iter++;\r
- spWeapon->Uses(lexical_cast<int>((*tok_iter)));\r
- tok_iter++;\r
- modifiers[Modifiers::strength] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::defense] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::maxhp] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::hp] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::forestfights] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::playerfights] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::gold] = lexical_cast<int>((*tok_iter));\r
- tok_iter++;\r
- modifiers[Modifiers::bank] = lexical_cast<int>((*tok_iter));\r
- spWeapon->Modifiers(modifiers);\r
-\r
- return spWeapon;\r
-}\r
-bool FileWeaponDAO::IdExists(const string &Id) const\r
-{\r
- map<string, shared_ptr<WeaponGO> >::const_iterator iter;\r
- iter = spWeaponCache.find(Id);\r
- return (iter != spWeaponCache.end());\r
-}\r
-\r
-void FileWeaponDAO::LoadWeaponCache(void)\r
-{\r
- ifstream infile;\r
- infile.open(mFilename.c_str());\r
-\r
- if (infile.fail())\r
- {\r
- throw DataLayerException(str(format("Unable to open %1% for reading") % mFilename), __FILE__, __LINE__);\r
- }\r
- string line;\r
- while (getline(infile, line))\r
- {\r
- if (line.length() == 0)\r
- {\r
- continue;\r
- }\r
- if (line[0] == '#')\r
- {\r
- continue;\r
- }\r
- shared_ptr<WeaponGO> spWeapon = CreateWeaponFromLine(line);\r
- if (spWeapon != 0)\r
- {\r
- spWeaponCache[spWeapon->Id()] = spWeapon;\r
- }\r
- }\r
- infile.close();\r
-}\r
+++ /dev/null
-#include <GameServ/DataLayer/IArmorDAO.h>\r
-using GameServ::DataLayer::DataAccessObjects::IArmorDAO;\r
-\r
-IArmorDAO::IArmorDAO()\r
-{\r
-}\r
-\r
-IArmorDAO::~IArmorDAO()\r
-{\r
-}
\ No newline at end of file
+++ /dev/null
-#include <GameServ/DataLayer/IWeaponDAO.h>\r
-using GameServ::DataLayer::DataAccessObjects::IWeaponDAO;\r
-\r
-IWeaponDAO::IWeaponDAO()\r
-{\r
-}\r
-\r
-IWeaponDAO::~IWeaponDAO()\r
-{\r
-}
\ No newline at end of file