]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv-2.0/testdriver/main.cpp
I implemented a mock forest driver and found a problem in using the singleton design...
[irc/gameservirc.git] / gameserv-2.0 / testdriver / main.cpp
index fe97ad3e4d74206428350fa86090e47b29cc3e97..4a8dcc7c31b02123b82187013d19fd8334dc5a1c 100644 (file)
@@ -6,6 +6,8 @@ using GameServ::GameLayer::GameObjects::PlayerGO;
 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
@@ -40,6 +42,9 @@ using boost::shared_ptr;
 \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
@@ -47,6 +52,9 @@ int main()
        {\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
@@ -57,6 +65,7 @@ int main()
                         << "Items: " << endl;\r
 \r
 \r
+\r
                shared_ptr<InventoryManager> spInventory = InventoryManager::Instance();\r
                ItemList inventory = spInventory->GetInventory(spPlayer);\r
                ItemList::const_iterator iter;\r
@@ -66,11 +75,44 @@ int main()
                        cout << ItemInfo(spItem) << endl;\r
                }\r
 \r
-               ForestGL fgl;\r
-               for (int x = 0; x < 10000; x++)\r
+               ForestGL forestGL;\r
+               FightGL fightGL;\r
+               string cmd = "";\r
+               while (cmd != "quit")\r
                {\r
-                       shared_ptr<MonsterGO> spMonster = fgl.GetRandomMonsterForPlayer(spPlayer);\r
-                       //cout << "\nMonster:\n" << MonsterInfo(spMonster) << 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
@@ -94,7 +136,7 @@ int main()
                cout << e.VerboseError() << endl;\r
 \r
        }\r
-       cout << "Done. Type a key and hit enter to quit." << endl;\r
+       cout << "Done. Hit enter to quit." << endl;\r
        string temp;\r
        getline(cin, temp);\r
        return 0;\r
@@ -107,10 +149,27 @@ string ItemInfo(shared_ptr<ItemGO> spItem)
 \r
 string MonsterInfo(shared_ptr<MonsterGO> spMonster)\r
 {\r
-       string info = str(format("Name: %1% Weapon: %2%\nDeath Cry: %3%\nStrength: %4% Defense %5%  Gold: %6%\n") %\r
-               spMonster->Name() % spMonster->WeaponName() % spMonster->DeathCry() % spMonster->Strength() %\r
-               spMonster->Defense() % spMonster->Gold());\r
-       info += str(format("Health: %1%/%2%  Exp: %3%") % spMonster->Health() % spMonster->MaxHealth() %\r
-               spMonster->Experience());\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