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
+#include <GameServ/GameLayer/GameObjects/WeaponGO.h>\r
+using GameServ::GameLayer::GameObjects::WeaponGO;\r
+#include <GameServ/GameLayer/GameObjects/ArmorGO.h>\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 GameServ::Exceptions::GameServException;\r
\r
#include <GameServ/Types.h>\r
using GameServ::Types::Range;\r
+using GameServ::Types::ItemTypes;\r
+using GameServ::Types::Modifiers;\r
+\r
+#include <GameServ/GameLayer/Helpers/InventoryManager.h>\r
+using namespace GameServ::GameLayer::Helpers;\r
+\r
+#include <boost/algorithm/string.hpp>\r
+#include <boost/format.hpp>\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
- //cout << spPlayer->Name() << endl;\r
- //spPlayer->Name("Kainazzzo");\r
- //pgl.Insert(spPlayer);\r
-\r
+ PlayerGL pgl;\r
+ shared_ptr<PlayerGO> spPlayer = pgl.GetById("Kain");\r
+ \r
\r
- map <int, int> frequencies;\r
- int x;\r
- for (x = 0; x < 10000; x++)\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
- Range testrange(-100, 100);\r
- int randnum = testrange.Random();\r
- frequencies[randnum]++;\r
+ shared_ptr<ItemGO> spItem = (*iter);\r
+ cout << ItemInfo(spItem) << endl;\r
}\r
- map<int, int>::const_iterator iter;\r
- for (iter = frequencies.begin(); iter != frequencies.end(); iter++)\r
+\r
+ ForestGL forestGL;\r
+ FightGL fightGL;\r
+ string cmd = "";\r
+ while (cmd != "quit")\r
{\r
- cout << iter->first << ": ";\r
- cout << (iter->second / (double)(x + 1)) * 100 << '%' << endl;\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
+ //int x;\r
+ //for (x = 0; x < 10000; x++)\r
+ //{\r
+ // Range testrange(-100, 100);\r
+ // int randnum = testrange.Random();\r
+ // frequencies[randnum]++;\r
+ //}\r
+ //map<int, int>::const_iterator iter;\r
+ //for (iter = frequencies.begin(); iter != frequencies.end(); iter++)\r
+ //{\r
+ // cout << iter->first << ": ";\r
+ // cout << (iter->second / (double)(x + 1)) * 100 << '%' << endl;\r
+ //}\r
}\r
catch (GameServException &e)\r
{\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