//! Logical Modifer enumerator\r
enum Modifier\r
{\r
- strength, defense, maxhealth, health, forestfights, playerfights, gold, bank\r
+ strength, defense, maxhealth, health, forestfights, playerfights, gold, bank, experience\r
};\r
\r
//! Get the name of a modifier\r
{\r
mHigh = high;\r
mLow = low;\r
+ mLastRandom = T(0);\r
}\r
\r
~Range()\r
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;TIXML_USE_STL;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;"\r
MinimalRebuild="true"\r
BasicRuntimeChecks="3"\r
- RuntimeLibrary="1"\r
+ RuntimeLibrary="3"\r
WarningLevel="3"\r
Detect64BitPortabilityProblems="false"\r
DebugInformationFormat="4"\r
const Modifiers::modifierinfo Modifiers::mModifierInfoTable[] =\r
{\r
{ strength, "Strength"}, { defense, "Defense" }, { maxhealth, "MaxHealth" }, { health, "Health" }, { forestfights, "ForestFights" },\r
- { playerfights, "PlayerFights" }, { gold, "Gold" }, { bank, "Bank" }\r
+ { playerfights, "PlayerFights" }, { gold, "Gold" }, { bank, "Bank" }, { experience, "Experience" }\r
};\r
\r
string Modifiers::GetName(Modifiers::Modifier modifier)\r
--- /dev/null
+#ifndef __GS__MYSQLDAOFACTORY_H__\r
+#define __GS__MYSQLDAOFACTORY_H__\r
+\r
+#include <GameServ/DataLayer/IDAOFactory.h>\r
+using GameServ::DataLayer::IDAOFactory;\r
+\r
+#include <GameServ/DataLayer/IPlayerDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IPlayerDAO;\r
+#include <GameServ/DataLayer/IItemDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IItemDAO;\r
+#include <GameServ/DataLayer/IMonsterDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IMonsterDAO;\r
+#include <GameServ/DataLayer/IMasterDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IMasterDAO;\r
+#include <GameServ/DataLayer/ILevelDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::ILevelDAO;\r
+\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+namespace GameServ { namespace DataLayer { namespace MySQL\r
+{\r
+ //! Concrete MySQL Data Factory\r
+ class MySQLDAOFactory : public IDAOFactory\r
+ {\r
+ public:\r
+ // Ctors, Dtors ///////////////////////////////////////////////////////\r
+ //! Default ctor\r
+ MySQLDAOFactory(void);\r
+ //! Virtual dtor to insure proper desctruction\r
+ virtual ~MySQLDAOFactory(void);\r
+\r
+ // Overrides //////////////////////////////////////////////////////////\r
+ \r
+ virtual shared_ptr<IPlayerDAO> GetPlayerDAO(void) const;\r
+ virtual shared_ptr<IItemDAO> GetItemDAO(void) const;\r
+ virtual shared_ptr<IMonsterDAO> GetMonsterDAO(void) const;\r
+ virtual shared_ptr<IMasterDAO> GetMasterDAO(void) const;\r
+ virtual shared_ptr<ILevelDAO> GetLevelDAO(void) const;\r
+\r
+ private:\r
+\r
+\r
+ };\r
+\r
+}}} // GameServ::DataLayer::MySQL\r
+\r
+#endif // __GS__MYSQLDAOFACTORY_H__\r
--- /dev/null
+#ifndef __GS__MYSQLID_H__\r
+#define __GS__MYSQLID_H__\r
+\r
+#include <string>\r
+using std::string;\r
+\r
+#include <GameServ/Types.h>\r
+using GameServ::Types::ItemTypes;\r
+\r
+namespace GameServ { namespace DataLayer { namespace MySQL {\r
+ class MySQLId\r
+ {\r
+ public:\r
+ static string CreatePlayerId(const string &Name);\r
+ static string GetNameFromPlayerId(const string &Id);\r
+\r
+ static string CreateItemId(const string &Number);\r
+ static unsigned int GetItemNumberFromId(const string &Id);\r
+\r
+ static string CreateMonsterId(const string &LevelId, const string &Name);\r
+ static string CreateLevelId(const unsigned int &Number);\r
+ static unsigned int GetLevelNumberFromId(const string &Id);\r
+ static string CreateMasterId(const unsigned int &LevelNumber, const string &Name);\r
+\r
+ private:\r
+ MySQLId();\r
+ ~MySQLId();\r
+ };\r
+}}}\r
+#endif\r
--- /dev/null
+#ifndef __GS__MYSQLITEMDAO_H__\r
+#define __GS__MYSQLITEMDAO_H__\r
+\r
+#include <GameServ/GameLayer/GameObjects/ItemGO.h>\r
+using GameServ::GameLayer::GameObjects::ItemGO;\r
+#include <GameServ/DataLayer/IItemDAO.h>\r
+using GameServ::DataLayer::DataAccessObjects::IItemDAO;\r
+\r
+#include <boost/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+#include <string>\r
+using std::string;\r
+\r
+#include <mysql++.h>\r
+#include <ssqls.h>\r
+\r
+namespace GameServ { namespace DataLayer { namespace MySQL\r
+{\r
+ //! MySQL implementation of IItemDAO interface\r
+ /*!\r
+ If you're using an MySQL datasource, you will be using this\r
+ DAO to access Items.\r
+ */\r
+ sql_create_22(item, 1, 0,\r
+ mysqlpp::sql_varchar, id,\r
+ mysqlpp::sql_varchar, name,\r
+ mysqlpp::sql_int, strengthhigh,\r
+ mysqlpp::sql_int, strengthlow,\r
+ mysqlpp::sql_int, defensehigh,\r
+ mysqlpp::sql_int, defenselow,\r
+ mysqlpp::sql_int, healthhigh,\r
+ mysqlpp::sql_int, healthlow,\r
+ mysqlpp::sql_int, goldhigh,\r
+ mysqlpp::sql_int, goldlow,\r
+ mysqlpp::sql_int, experiencehigh,\r
+ mysqlpp::sql_int, experiencelow,\r
+ mysqlpp::sql_int, startinguses,\r
+ mysqlpp::sql_varchar, type,\r
+ mysqlpp::sql_int, bankhigh,\r
+ mysqlpp::sql_int, banklow,\r
+ mysqlpp::sql_int, forestfightshigh,\r
+ mysqlpp::sql_int, forestfightslow,\r
+ mysqlpp::sql_int, playerfightshigh,\r
+ mysqlpp::sql_int, playerfightslow,\r
+ mysqlpp::sql_int, maxhealthhigh,\r
+ mysqlpp::sql_int, maxhealthlow);\r
+\r
+ class MySQLItemDAO : public IItemDAO\r
+ {\r
+ public:\r
+ // Ctors, Dtors ///////////////////////////////////////////////////////\r
+ MySQLItemDAO(void);\r
+ virtual ~MySQLItemDAO();\r
+\r
+ // Methods ////////////////////////////////////////////////////////////\r
+ virtual shared_ptr<ItemGO> GetById(const string &Id) const;\r
+\r
+ virtual bool IdExists(const string &Id) const;\r
+\r
+ private:\r
+ //! Data mysql\r
+ string mTableName;\r
+\r
+ // Helper Methods /////////////////////////////////////////////////////\r
+\r
+ //! Creates the ItemGO found at iterator position\r
+ shared_ptr<ItemGO> CreateItemFromItemSSQLS(const item &i) const;\r
+\r
+ //! Get the Item database mysql path\r
+ string GetItemTableName(void) const;\r
+\r
+ void Initialize(const string &tablename);\r
+ };\r
+} } } // GameServ.DataLayer.DataAccessObjects.MySQL\r
+\r
+#endif // __GS__MYSQLITEMDAO_H__
\ No newline at end of file
ItemGO();\r
virtual ~ItemGO();\r
\r
+ //! Property get - Number\r
+ unsigned int Number(void) const;\r
+\r
+ //! Property set - Number\r
+ void Number(const unsigned int &value);\r
+\r
//! Property get - Name\r
string Name(void) const;\r
//! Property set - Name\r
virtual ObjectTypes::ObjectType ObjectType(void) const;\r
\r
protected:\r
+ unsigned int mNumber;\r
string mName;\r
unsigned long int mPrice;\r
int mUses;\r
void AddItem(shared_ptr<PlayerGO> spPlayer, shared_ptr<ItemGO> spItem);\r
void RemoveItem(shared_ptr<PlayerGO> spPlayer, shared_ptr<ItemGO> spItem);\r
ItemList GetInventory(shared_ptr<PlayerGO> spPlayer) const; \r
+ bool PlayerHasInventory(shared_ptr<PlayerGO> spPlayer) const;\r
\r
protected:\r
InventoryManager();\r
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS ;_SCL_SECURE_NO_WARNINGS"\r
MinimalRebuild="true"\r
BasicRuntimeChecks="3"\r
- RuntimeLibrary="1"\r
+ RuntimeLibrary="3"\r
WarningLevel="3"\r
Detect64BitPortabilityProblems="false"\r
DebugInformationFormat="4"\r
/>\r
<Tool\r
Name="VCLibrarianTool"\r
+ AdditionalDependencies="libmysql.lib wsock32.lib mysqlpp_d.lib"\r
/>\r
<Tool\r
Name="VCALinkTool"\r
>\r
</File>\r
</Filter>\r
+ <Filter\r
+ Name="MySQL"\r
+ >\r
+ <File\r
+ RelativePath=".\src\DataLayer\MySQL\MySQLDAOFactory.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\include\GameServ\DataLayer\MySQL\MySQLDAOFactory.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\src\DataLayer\MySQL\MySQLId.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\include\GameServ\DataLayer\MySQL\MySQLId.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\src\DataLayer\MySQL\MySQLItemDAO.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\include\GameServ\DataLayer\MySQL\MySQLItemDAO.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\src\DataLayer\MySQL\MySQLLevelDAO.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\include\GameServ\DataLayer\MySQL\MySQLLevelDAO.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\src\DataLayer\MySQL\MySQLMasterDAO.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\include\GameServ\DataLayer\MySQL\MySQLMasterDAO.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\src\DataLayer\MySQL\MySQLMonsterDAO.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\include\GameServ\DataLayer\MySQL\MySQLMonsterDAO.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\src\DataLayer\MySQL\MySQLPlayerDAO.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\include\GameServ\DataLayer\MySQL\MySQLPlayerDAO.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
</Filter>\r
<Filter\r
Name="GameLayer"\r
\r
FilePlayerDAO::~FilePlayerDAO()\r
{\r
+ WritePlayerCache();\r
}\r
\r
void FilePlayerDAO::Initialize(const string &filename)\r
spPlayerCache[id] = spPlayer;\r
// Load all the items into the player's inventory\r
shared_ptr<InventoryManager> inventory = InventoryManager::Instance();\r
- if (inventory->GetInventory(spPlayer).size() == 0)\r
+ if (!inventory->PlayerHasInventory(spPlayer))\r
{\r
LoadInventoryFromLine(spPlayer, line);\r
}\r
string id = spPlayer->Id();\r
to_lower(id);\r
spPlayerCache[id] = spPlayer;\r
- WritePlayerCache();\r
}\r
else\r
{\r
}\r
outfile << CreateLineFromPlayer(spPlayer) << endl;\r
outfile.close();*/\r
- WritePlayerCache();\r
}\r
else\r
{\r
--- /dev/null
+#define MYSQLPP_SSQLS_NO_STATICS\r
+#include <GameServ/DataLayer/MySQL/MySQLDAOFactory.h>\r
+#include <GameServ/DataLayer/MySQL/MySQLPlayerDAO.h>\r
+#include <GameServ/DataLayer/MySQL/MySQLItemDAO.h>\r
+#include <GameServ/DataLayer/MySQL/MySQLMonsterDAO.h>\r
+#include <GameServ/DataLayer/MySQL/MySQLMasterDAO.h>\r
+#include <GameServ/DataLayer/MySQL/MySQLLevelDAO.h>\r
+\r
+using GameServ::DataLayer::MySQL::MySQLDAOFactory;\r
+//using GameServ::DataLayer::MySQL::MySQLPlayerDAO;\r
+using GameServ::DataLayer::MySQL::MySQLItemDAO;\r
+//using GameServ::DataLayer::MySQL::MySQLMonsterDAO;\r
+//using GameServ::DataLayer::MySQL::MySQLMasterDAO;\r
+//using GameServ::DataLayer::MySQL::MySQLLevelDAO;\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+MySQLDAOFactory::MySQLDAOFactory(void)\r
+{\r
+}\r
+\r
+MySQLDAOFactory::~MySQLDAOFactory(void)\r
+{\r
+}\r
+\r
+shared_ptr<IPlayerDAO> MySQLDAOFactory::GetPlayerDAO(void) const\r
+{\r
+ //return shared_ptr<IPlayerDAO>(new MySQLPlayerDAO());\r
+ throw GameServException("Not implemented", __FILE__, __LINE__);\r
+}\r
+\r
+shared_ptr<IItemDAO> MySQLDAOFactory::GetItemDAO(void) const\r
+{\r
+ return shared_ptr<IItemDAO>(new MySQLItemDAO());\r
+}\r
+\r
+shared_ptr<IMonsterDAO> MySQLDAOFactory::GetMonsterDAO(void) const\r
+{\r
+ //return shared_ptr<IMonsterDAO>(new MySQLMonsterDAO());\r
+ throw GameServException("Not implemented", __FILE__, __LINE__);\r
+}\r
+\r
+shared_ptr<IMasterDAO> MySQLDAOFactory::GetMasterDAO(void) const\r
+{\r
+// return shared_ptr<IMasterDAO>(new MySQLMasterDAO());\r
+ throw GameServException("Not implemented", __FILE__, __LINE__);\r
+}\r
+\r
+shared_ptr<ILevelDAO> MySQLDAOFactory::GetLevelDAO(void) const\r
+{\r
+// return shared_ptr<ILevelDAO>(new MySQLLevelDAO());\r
+ throw GameServException("Not implemented", __FILE__, __LINE__);\r
+}\r
+\r
--- /dev/null
+#include <GameServ/DataLayer/MySQL/MySQLId.h>\r
+using GameServ::DataLayer::MySQL::MySQLId;\r
+\r
+#include <string>\r
+using std::string;\r
+\r
+#include <GameServ/Types.h>\r
+using GameServ::Types::ItemTypes;\r
+\r
+#include <GameServ/GameServException.h>\r
+using GameServ::Exceptions::GameServException;\r
+\r
+#include <boost/format.hpp>\r
+#include <boost/algorithm/string.hpp>\r
+#include <boost/lexical_cast.hpp>\r
+using boost::str;\r
+using boost::format;\r
+using boost::lexical_cast;\r
+\r
+MySQLId::MySQLId()\r
+{\r
+}\r
+\r
+MySQLId::~MySQLId()\r
+{\r
+}\r
+\r
+string MySQLId::CreatePlayerId(const string &Name)\r
+{\r
+ return Name;\r
+}\r
+\r
+string MySQLId::GetNameFromPlayerId(const string &Id)\r
+{\r
+ return Id;\r
+}\r
+\r
+string MySQLId::CreateItemId(const string &Number)\r
+{\r
+ return Number;\r
+}\r
+\r
+unsigned int MySQLId::GetItemNumberFromId(const string &Id)\r
+{\r
+ return lexical_cast<unsigned int>(Id);\r
+}\r
+\r
+string MySQLId::CreateMonsterId(const string &LevelId, const string &Name)\r
+{\r
+ return str(format("%1%:%2%") % LevelId % Name);\r
+}\r
+\r
+string MySQLId::CreateLevelId(const unsigned int &Number)\r
+{\r
+ return lexical_cast<string>(Number);\r
+}\r
+\r
+unsigned int MySQLId::GetLevelNumberFromId(const string &Id)\r
+{\r
+ return lexical_cast<unsigned int>(Id);\r
+}\r
+\r
+string MySQLId::CreateMasterId(const unsigned int &LevelNumber, const string &Name)\r
+{\r
+ return str(format("%1%:%2%") % LevelNumber % Name);\r
+}
\ No newline at end of file
--- /dev/null
+#include <GameServ/DataLayer/MySQL/MySQLItemDAO.h>\r
+using GameServ::DataLayer::MySQL::MySQLItemDAO;\r
+#include <GameServ/GameLayer/GameObjects/ItemGO.h>\r
+using GameServ::GameLayer::GameObjects::ItemGO;\r
+#include <GameServ/GameLayer/GameObjects/ArmorGO.h>\r
+using GameServ::GameLayer::GameObjects::ArmorGO;\r
+#include <GameServ/GameLayer/GameObjects/WeaponGO.h>\r
+using GameServ::GameLayer::GameObjects::WeaponGO;\r
+#include <GameServ/GameLayer/GameObjects/PotionGO.h>\r
+using GameServ::GameLayer::GameObjects::PotionGO;\r
+\r
+#include <GameServ/DataLayer/DataLayerExceptions.h>\r
+using GameServ::DataLayer::Exceptions::ResourceException;\r
+using GameServ::DataLayer::Exceptions::DataLayerException;\r
+\r
+#include <GameServ/DataLayer/MySQL/MySQLId.h>\r
+using GameServ::DataLayer::MySQL::MySQLId;\r
+\r
+#include <GameServ/Types.h>\r
+using GameServ::Types::ItemTypes;\r
+using GameServ::Types::Modifiers;\r
+using GameServ::Types::Exceptions::TypeException;\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
+\r
+#include <string>\r
+using std::string;\r
+\r
+#include <vector>\r
+using std::vector;\r
+\r
+#include <mysql++.h>\r
+#include <ssqls.h>\r
+\r
+MySQLItemDAO::MySQLItemDAO()\r
+{\r
+ Initialize("items");\r
+}\r
+\r
+MySQLItemDAO::~MySQLItemDAO()\r
+{\r
+}\r
+\r
+void MySQLItemDAO::Initialize(const string &tablename)\r
+{\r
+ mTableName = tablename;\r
+}\r
+\r
+shared_ptr<ItemGO> MySQLItemDAO::GetById(const string &Id) const\r
+{\r
+ mysqlpp::Connection conn(false);\r
+ if (conn.connect("gameserv", "localhost", "gameserv", "gameserv", 3306))\r
+ {\r
+ mysqlpp::Query query = conn.query();\r
+ query << "select * from items where id = 1";\r
+ \r
+ vector<item> items;\r
+ query.storein(items);\r
+\r
+ if (items.size() == 1)\r
+ {\r
+ return CreateItemFromItemSSQLS(items[0]);\r
+ }\r
+ else if (items.size() == 0)\r
+ {\r
+ return shared_ptr<ItemGO>();\r
+ }\r
+ else\r
+ {\r
+ throw DataLayerException("Problem with key... more than one row returned on getbyid", __FILE__,\r
+ __LINE__);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ throw DataLayerException("Unable to connect to the database", __FILE__, __LINE__);\r
+ }\r
+}\r
+\r
+shared_ptr<ItemGO> MySQLItemDAO::CreateItemFromItemSSQLS(const GameServ::DataLayer::MySQL::item &i) const\r
+{\r
+ shared_ptr<ItemGO> spItem;\r
+\r
+ ItemTypes::ItemType type = ItemTypes::Parse(i.type);\r
+\r
+ switch (type)\r
+ {\r
+ case ItemTypes::Armor:\r
+ spItem = shared_ptr<ArmorGO>(new ArmorGO());\r
+ break;\r
+ case ItemTypes::Weapon:\r
+ spItem = shared_ptr<WeaponGO>(new WeaponGO());\r
+ break;\r
+ case ItemTypes::Potion:\r
+ spItem = shared_ptr<PotionGO>(new PotionGO());\r
+ break;\r
+ case ItemTypes::NOTYPE:\r
+ default:\r
+ throw DataLayerException(str(format("Invalid item type %1%") % i.type));\r
+ }\r
+ spItem->Id(i.id);\r
+ spItem->Number(MySQLId::GetItemNumberFromId(i.id));\r
+ spItem->Name(i.name);\r
+ spItem->Uses(i.startinguses);\r
+ map<Modifiers::Modifier, Range<int> > modifiers;\r
+ modifiers[Modifiers::strength] = Range<int>(i.strengthhigh, i.strengthlow);\r
+ modifiers[Modifiers::defense] = Range<int>(i.defensehigh, i.defenselow);\r
+ modifiers[Modifiers::bank] = Range<int>(i.bankhigh, i.banklow);\r
+ modifiers[Modifiers::gold] = Range<int>(i.goldhigh, i.goldlow);\r
+ modifiers[Modifiers::forestfights] = Range<int>(i.forestfightshigh, i.forestfightslow);\r
+ modifiers[Modifiers::health] = Range<int>(i.healthhigh, i.healthlow);\r
+ modifiers[Modifiers::maxhealth] = Range<int>(i.maxhealthhigh, i.maxhealthlow);\r
+ modifiers[Modifiers::playerfights] = Range<int>(i.playerfightshigh, i.playerfightslow);\r
+ modifiers[Modifiers::experience] = Range<int>(i.experiencehigh, i.experiencelow);\r
+ \r
+ \r
+ spItem->Modifiers(modifiers);\r
+\r
+ return spItem;\r
+}\r
+\r
+bool MySQLItemDAO::IdExists(const std::string &Id) const\r
+{\r
+ return false;\r
+}\r
+\r
+string MySQLItemDAO::GetItemTableName(void) const\r
+{\r
+ return mTableName;\r
+}\r
+\r
+\r
using boost::str;\r
using boost::format;\r
\r
-ItemGO::ItemGO() : GameObject(), mName(""), mPrice(0), mUses(1)\r
+ItemGO::ItemGO() : GameObject()\r
{\r
+ mName = "";\r
+ mPrice = 0;\r
+ mUses = 0;\r
+ mNumber = 0;\r
}\r
\r
ItemGO::~ItemGO()\r
{\r
}\r
\r
+unsigned int ItemGO::Number(void) const\r
+{\r
+ return mNumber;\r
+}\r
+\r
+void ItemGO::Number(const unsigned int &value)\r
+{\r
+ mNumber = value;\r
+}\r
+\r
string ItemGO::Name(void) const\r
{\r
return mName;\r
}\r
}\r
\r
+bool InventoryManager::PlayerHasInventory(shared_ptr<PlayerGO> spPlayer) const\r
+{\r
+ PlayerInventoryMap::const_iterator iter = mInventoryTable.find(spPlayer->Id());\r
+ return (iter != mInventoryTable.end());\r
+}\r
+\r
ItemList InventoryManager::GetInventory(shared_ptr<PlayerGO> spPlayer) const\r
{\r
PlayerInventoryMap::const_iterator iter = mInventoryTable.find(spPlayer->Id());\r
#include <boost/smart_ptr/shared_ptr.hpp>\r
using boost::shared_ptr;\r
\r
+// just to test\r
+#define MYSQLPP_SSQLS_NO_STATICS\r
+#include <GameServ/DataLayer/MySQL/MySQLItemDAO.h>\r
+using GameServ::DataLayer::MySQL::MySQLItemDAO;\r
+\r
string ItemInfo(shared_ptr<ItemGO> spItem);\r
string MonsterInfo(shared_ptr<MonsterGO> spMonster);\r
string PlayerInfo(shared_ptr<PlayerGO> spPlayer);\r
{\r
try\r
{\r
- PlayerGL pgl;\r
- shared_ptr<PlayerGO> spPlayer = pgl.GetById("Kain");\r
- \r
- \r
- \r
- cout << "Name: " << spPlayer->Name() << endl\r
- << "Level: " << spPlayer->LevelNumber() << endl\r
- << "Exp: " << spPlayer->Experience() << endl\r
- << "Strength: " << spPlayer->Strength() << endl\r
- << "Defense: " << spPlayer->Defense() << endl\r
- << "Gold: " << spPlayer->Gold() << endl\r
- << "Bank: " << spPlayer->Bank() << endl\r
- << "Items: " << endl;\r
-\r
-\r
-\r
- shared_ptr<InventoryManager> spInventory = InventoryManager::Instance();\r
- ItemList inventory = spInventory->GetInventory(spPlayer);\r
- ItemList::const_iterator iter;\r
- for (iter = inventory.begin(); iter != inventory.end(); iter++)\r
- {\r
- shared_ptr<ItemGO> spItem = (*iter);\r
- cout << ItemInfo(spItem) << endl;\r
- }\r
-\r
- ForestGL forestGL;\r
- FightGL fightGL;\r
- string cmd = "";\r
- while (cmd != "quit")\r
- {\r
- spPlayer->Health(spPlayer->MaxHealth());\r
- spPlayer->Alive(true);\r
- DisplayPlayer(spPlayer);\r
- getline(cin, cmd);\r
- if (cmd == "search")\r
- {\r
- cout << "Searching the forest..." << endl;\r
- shared_ptr<MonsterGO> spMonster = forestGL.GetRandomMonsterForPlayer(spPlayer);\r
- \r
- while (spPlayer->Alive() && spMonster->Alive())\r
- {\r
- DisplayMonster(spMonster);\r
- cout << "Hit Enter to attack: " << endl;\r
- getline(cin, cmd);\r
- cout << "You hit " << spMonster->Name() << " for " <<\r
- fightGL.PlayerAttackMonster(spPlayer, spMonster) << endl;\r
- if (!spMonster->Alive())\r
- {\r
- cout << "You have killed " << spMonster->Name() << endl;\r
- cout << "He shouts: " << spMonster->DeathCry() << endl;\r
- }\r
- else\r
- {\r
- cout << spMonster->Name() << " hits you with their "\r
- << spMonster->WeaponName() << " for " << fightGL.MonsterAttackPlayer(spMonster, spPlayer)\r
- << endl;\r
- if (!spPlayer->Alive())\r
- {\r
- cout << spMonster->Name() << " has killed you!" << endl;\r
- }\r
- }\r
- }\r
- }\r
- }\r
+ //PlayerGL pgl;\r
+ //shared_ptr<PlayerGO> spPlayer = pgl.GetById("Kain");\r
+ //\r
+ //\r
+ //\r
+ //cout << "Name: " << spPlayer->Name() << endl\r
+ // << "Level: " << spPlayer->LevelNumber() << endl\r
+ // << "Exp: " << spPlayer->Experience() << endl\r
+ // << "Strength: " << spPlayer->Strength() << endl\r
+ // << "Defense: " << spPlayer->Defense() << endl\r
+ // << "Gold: " << spPlayer->Gold() << endl\r
+ // << "Bank: " << spPlayer->Bank() << endl\r
+ // << "Items: " << endl;\r
+\r
+\r
+\r
+ //shared_ptr<InventoryManager> spInventory = InventoryManager::Instance();\r
+ //ItemList inventory = spInventory->GetInventory(spPlayer);\r
+ //ItemList::const_iterator iter;\r
+ //for (iter = inventory.begin(); iter != inventory.end(); iter++)\r
+ //{\r
+ // shared_ptr<ItemGO> spItem = (*iter);\r
+ // cout << ItemInfo(spItem) << endl;\r
+ //}\r
+\r
+ //ForestGL forestGL;\r
+ //FightGL fightGL;\r
+ //string cmd = "";\r
+ ////while (cmd != "quit")\r
+ //for (int x = 0; x < 10000; x++)\r
+ //{\r
+ // spPlayer->Health(spPlayer->MaxHealth());\r
+ // spPlayer->Alive(true);\r
+ // //DisplayPlayer(spPlayer);\r
+ // //getline(cin, cmd);\r
+ // cmd="search";\r
+ // if (cmd == "search")\r
+ // {\r
+ // //cout << "Searching the forest..." << endl;\r
+ // shared_ptr<MonsterGO> spMonster = forestGL.GetRandomMonsterForPlayer(spPlayer);\r
+ // \r
+ // while (spPlayer->Alive() && spMonster->Alive())\r
+ // {\r
+ // //DisplayMonster(spMonster);\r
+ // //cout << "Hit Enter to attack: " << endl;\r
+ // //getline(cin, cmd);\r
+ // unsigned int attack = fightGL.PlayerAttackMonster(spPlayer, spMonster);\r
+ // //cout << "You hit " << spMonster->Name() << " for " << attack << endl;\r
+ // if (!spMonster->Alive())\r
+ // {\r
+ // //cout << "You have killed " << spMonster->Name() << endl;\r
+ // //cout << "He shouts: " << spMonster->DeathCry() << endl;\r
+ // }\r
+ // else\r
+ // {\r
+ // unsigned int mAttack = fightGL.MonsterAttackPlayer(spMonster, spPlayer);\r
+ // /*cout << spMonster->Name() << " hits you with their "\r
+ // << spMonster->WeaponName() << " for " << mAttack\r
+ // << endl;*/\r
+ // if (!spPlayer->Alive())\r
+ // {\r
+ // /*cout << spMonster->Name() << " has killed you!" << endl;*/\r
+ // }\r
+ // }\r
+ // }\r
+ // }\r
+ //}\r
+\r
\r
+ MySQLItemDAO test;\r
+ shared_ptr<ItemGO> spItem = test.GetById("test");\r
\r
//map <int, int> frequencies;\r
//int x;\r
AdditionalIncludeDirectories="$(SolutionDir)/libgameservgldl/include;$(SolutionDir)/libgameservcore/include"\r
MinimalRebuild="true"\r
BasicRuntimeChecks="3"\r
- RuntimeLibrary="1"\r
+ RuntimeLibrary="3"\r
WarningLevel="3"\r
DebugInformationFormat="4"\r
/>\r