using GameServ::GameLayer::GameObjects::PlayerGO;\r
#include <GameServ/GameLayer/PlayerGL.h>\r
using GameServ::GameLayer::PlayerGL;\r
+#include <GameServ/GameLayer/ForestGL.h>\r
+using GameServ::GameLayer::ForestGL;\r
+#include <GameServ/GameLayer/FightGL.h>\r
+using GameServ::GameLayer::FightGL;\r
\r
#include <GameServ/GameLayer/GameObjects/ItemGO.h>\r
using GameServ::GameLayer::GameObjects::ItemGO;\r
using GameServ::GameLayer::GameObjects::ArmorGO;\r
#include <GameServ/GameLayer/GameObjects/PotionGO.h>\r
using GameServ::GameLayer::GameObjects::PotionGO;\r
+#include <GameServ/GameLayer/GameObjects/MonsterGO.h>\r
+using GameServ::GameLayer::GameObjects::MonsterGO;\r
\r
\r
#include <GameServ/GameServException.h>\r
using boost::str;\r
using boost::format;\r
\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+string ItemInfo(shared_ptr<ItemGO> spItem);\r
+string MonsterInfo(shared_ptr<MonsterGO> spMonster);\r
+string PlayerInfo(shared_ptr<PlayerGO> spPlayer);\r
+void DisplayMonster(shared_ptr<MonsterGO> spMonster);\r
+void DisplayPlayer(shared_ptr<PlayerGO> spPlayer);\r
+\r
int main()\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->Level() << endl\r
+ << "Level: " << spPlayer->LevelNumber() << endl\r
<< "Exp: " << spPlayer->Experience() << endl\r
<< "Strength: " << spPlayer->Strength() << endl\r
<< "Defense: " << spPlayer->Defense() << 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 << str(format("Name: %1% Type: %2%") % spItem->Name() % ItemTypes::GetName(spItem->Type())) << endl;\r
+ cout << ItemInfo(spItem) << endl;\r
}\r
\r
- /* vector< shared_ptr<ItemGO> > spInventory = spPlayer->Inventory();\r
- vector< shared_ptr<ItemGO> >::const_iterator iter;\r
- for (iter = spInventory.begin(); iter != spInventory.end(); iter++)\r
+ ForestGL forestGL;\r
+ FightGL fightGL;\r
+ string cmd = "";\r
+ while (cmd != "quit")\r
{\r
- shared_ptr<ItemGO> spItem = (*iter);\r
- cout << str(format("Name: %1% Type: %2%") % spItem->Name() % ItemTypes::GetName(spItem->Type())) << endl;\r
- }*/\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
\r
\r
//map <int, int> frequencies;\r
cout << e.VerboseError() << endl;\r
\r
}\r
+ cout << "Done. Hit enter to quit." << endl;\r
string temp;\r
- cin >> temp;\r
+ getline(cin, temp);\r
return 0;\r
}\r
+\r
+string ItemInfo(shared_ptr<ItemGO> spItem)\r
+{\r
+ return str(format("Name: %1% Type: %2%") % spItem->Name() % ItemTypes::GetName(spItem->Type()));\r
+}\r
+\r
+string MonsterInfo(shared_ptr<MonsterGO> spMonster)\r
+{\r
+ string info = str(format("Name: %1% Weapon: %2%\nStrength: %3% Defense %4% ") %\r
+ spMonster->Name() % spMonster->WeaponName() % spMonster->Strength() %\r
+ spMonster->Defense());\r
+ info += str(format("Health: %1%/%2%") % spMonster->Health() % spMonster->MaxHealth());\r
+ return info;\r
+}\r
+\r
+string PlayerInfo(shared_ptr<PlayerGO> spPlayer)\r
+{\r
+ string info = str(format("Name: %1% Level: %2%\nHealth: %3%/%4%") % \r
+ spPlayer->Name() % spPlayer->LevelNumber() % spPlayer->Health() %\r
+ spPlayer->MaxHealth());\r
+ return info;\r
+}\r
+\r
+void DisplayMonster(shared_ptr<MonsterGO> spMonster)\r
+{\r
+ cout << "Monster:\n" << MonsterInfo(spMonster) << endl;\r
+}\r
+\r
+void DisplayPlayer(shared_ptr<PlayerGO> spPlayer)\r
+{\r
+ cout << "Player:\n" << PlayerInfo(spPlayer) << endl;\r
+}
\ No newline at end of file