]>
jfr.im git - irc/gameservirc.git/blob - gameserv-2.0/testdriver/main.cpp
3 #include <GameServ/GameLayer/GameObjects/PlayerGO.h>
4 using GameServ::GameLayer::GameObjects::PlayerGO
;
5 #include <GameServ/GameLayer/PlayerGL.h>
6 using GameServ::GameLayer::PlayerGL
;
7 #include <GameServ/GameLayer/ForestGL.h>
8 using GameServ::GameLayer::ForestGL
;
9 #include <GameServ/GameLayer/FightGL.h>
10 using GameServ::GameLayer::FightGL
;
12 #include <GameServ/GameLayer/GameObjects/ItemGO.h>
13 using GameServ::GameLayer::GameObjects::ItemGO
;
14 #include <GameServ/GameLayer/GameObjects/WeaponGO.h>
15 using GameServ::GameLayer::GameObjects::WeaponGO
;
16 #include <GameServ/GameLayer/GameObjects/ArmorGO.h>
17 using GameServ::GameLayer::GameObjects::ArmorGO
;
18 #include <GameServ/GameLayer/GameObjects/PotionGO.h>
19 using GameServ::GameLayer::GameObjects::PotionGO
;
20 #include <GameServ/GameLayer/GameObjects/MonsterGO.h>
21 using GameServ::GameLayer::GameObjects::MonsterGO
;
24 #include <GameServ/GameServException.h>
25 using GameServ::Exceptions::GameServException
;
27 #include <GameServ/Types.h>
28 using GameServ::Types::IntRange
;
29 using GameServ::Types::ItemTypes
;
30 using GameServ::Types::Modifiers
;
32 #include <GameServ/GameLayer/Helpers/InventoryManager.h>
33 using namespace GameServ::GameLayer::Helpers
;
35 #include <boost/algorithm/string.hpp>
36 #include <boost/format.hpp>
40 #include <boost/smart_ptr/shared_ptr.hpp>
41 #include <boost/bind.hpp>
42 #include <boost/enable_shared_from_this.hpp>
47 #include <GameServ/DataLayer/MySQL/MySQLPlayerDAO.h>
48 using GameServ::DataLayer::MySQL::MySQLPlayerDAO
;
49 #include <GameServ/DataLayer/MySQL/MySQLItemDAO.h>
50 using GameServ::DataLayer::MySQL::MySQLItemDAO
;
52 string
ItemInfo(boost::shared_ptr
<ItemGO
> spItem
);
53 string
MonsterInfo(boost::shared_ptr
<MonsterGO
> spMonster
);
54 string
PlayerInfo(boost::shared_ptr
<PlayerGO
> spPlayer
);
55 void DisplayMonster(boost::shared_ptr
<MonsterGO
> spMonster
);
56 void DisplayPlayer(boost::shared_ptr
<PlayerGO
> spPlayer
);
58 std::string
make_daytime_string()
60 using namespace std
; // For time_t, time and ctime;
66 : public boost::enable_shared_from_this
<tcp_connection
>
69 typedef boost::shared_ptr
<tcp_connection
> pointer
;
71 static pointer
create(asio::io_service
& io_service
)
73 return pointer(new tcp_connection(io_service
));
83 message_
= make_daytime_string();
85 asio::async_write(socket_
, asio::buffer(message_
),
86 boost::bind(&tcp_connection::handle_write
, shared_from_this(),
87 asio::placeholders::error
,
88 asio::placeholders::bytes_transferred
));
92 tcp_connection(asio::io_service
& io_service
)
97 void handle_write(const asio::error_code
& /*error*/,
98 size_t /*bytes_transferred*/)
103 std::string message_
;
109 tcp_server(asio::io_service
& io_service
)
110 : acceptor_(io_service
, tcp::endpoint(tcp::v4(), 13))
118 tcp_connection::pointer new_connection
=
119 tcp_connection::create(acceptor_
.io_service());
121 acceptor_
.async_accept(new_connection
->socket(),
122 boost::bind(&tcp_server::handle_accept
, this, new_connection
,
123 asio::placeholders::error
));
126 void handle_accept(tcp_connection::pointer new_connection
,
127 const asio::error_code
& error
)
131 new_connection
->start();
136 tcp::acceptor acceptor_
;
145 boost::shared_ptr<PlayerGO> spPlayer = pgl.GetById("Kain");
147 cout << "Name: " << spPlayer->Name() << endl
148 << "Level: " << spPlayer->LevelNumber() << endl
149 << "Exp: " << spPlayer->Experience() << endl
150 << "Strength: " << spPlayer->Strength() << endl
151 << "Defense: " << spPlayer->Defense() << endl
152 << "Gold: " << spPlayer->Gold() << endl
153 << "Bank: " << spPlayer->Bank() << endl
154 << "Items: " << endl;
156 boost::shared_ptr<InventoryManager> spInventory = InventoryManager::Instance();
157 ItemList inventory = spInventory->GetInventory(spPlayer->Id());
158 ItemList::const_iterator iter;
159 for (iter = inventory.begin(); iter != inventory.end(); iter++)
161 boost::shared_ptr<ItemGO> spItem = (*iter);
162 cout << ItemInfo(spItem) << endl;
165 spInventory->AddItem(spPlayer->Id(), boost::shared_ptr<ItemGO>(new PotionGO("Test potion", 123, 10, 10, 10, 0)));
166 inventory = spInventory->GetInventory(spPlayer->Id());
167 for (iter = inventory.begin(); iter != inventory.end(); iter++)
169 boost::shared_ptr<ItemGO> spItem = (*iter);
170 cout << ItemInfo(spItem) << endl;
173 boost::shared_ptr<InventoryManager> spInventory2 = InventoryManager::Instance();
174 inventory = spInventory2->GetInventory(spPlayer->Id());
175 for (iter = inventory.begin(); iter != inventory.end(); iter++)
177 boost::shared_ptr<ItemGO> spItem = (*iter);
178 cout << ItemInfo(spItem) << endl;
185 while (cmd.compare("quit") != 0)
187 spPlayer->Health(spPlayer->MaxHealth());
188 spPlayer->Alive(true);
189 DisplayPlayer(spPlayer);
194 cout << "Searching the forest..." << endl;
195 boost::shared_ptr<MonsterGO> spMonster = forestGL.GetRandomMonsterForPlayer(spPlayer);
197 while (spPlayer->Alive() && spMonster->Alive())
199 DisplayMonster(spMonster);
200 cout << "Hit Enter to attack: " << endl;
202 unsigned int attack = fightGL.PlayerAttackMonster(spPlayer, spMonster);
203 cout << "You hit " << spMonster->Name() << " for " << attack << endl;
204 if (!spMonster->Alive())
206 cout << "You have killed " << spMonster->Name() << endl;
207 cout << "He shouts: " << spMonster->DeathCry() << endl;
211 unsigned int mAttack = fightGL.MonsterAttackPlayer(spMonster, spPlayer);
212 cout << spMonster->Name() << " hits you with their "
213 << spMonster->WeaponName() << " for " << mAttack
215 if (!spPlayer->Alive())
217 cout << spMonster->Name() << " has killed you!" << endl;
224 string what = "what";*/
226 //boost::shared_ptr<ItemGO> spItem = test.GetById("3");
227 //spItem->Name("Testin' again!!");
229 //test.Insert(spItem);
231 //MySQLPlayerDAO playerTest;
233 //map <int, int> frequencies;
235 //for (x = 0; x < 10000; x++)
237 // IntRangetestrange(-100, 100);
238 // int randnum = testrange.Random();
239 // frequencies[randnum]++;
241 //map<int, int>::const_iterator iter;
242 //for (iter = frequencies.begin(); iter != frequencies.end(); iter++)
244 // cout << iter->first << ": ";
245 // cout << (iter->second / (double)(x + 1)) * 100 << '%' << endl;
251 asio::io_service io_service
;
252 tcp_server
server(io_service
);
255 catch (std::exception
& e
)
257 std::cerr
<< e
.what() << std::endl
;
260 catch (GameServException
&e
)
262 cout
<< e
.VerboseError() << endl
;
265 cout
<< "Done. Hit enter to quit." << endl
;
271 string
ItemInfo(boost::shared_ptr
<ItemGO
> spItem
)
273 return str(format("Name: %1% Type: %2%") % spItem
->Name() % ItemTypes::GetName(spItem
->Type()));
276 string
MonsterInfo(boost::shared_ptr
<MonsterGO
> spMonster
)
278 string info
= str(format("Name: %1% Weapon: %2%\nStrength: %3% Defense %4% ") %
279 spMonster
->Name() % spMonster
->WeaponName() % spMonster
->Strength() %
280 spMonster
->Defense());
281 info
+= str(format("Health: %1%/%2%") % spMonster
->Health() % spMonster
->MaxHealth());
285 string
PlayerInfo(boost::shared_ptr
<PlayerGO
> spPlayer
)
287 string info
= str(format("Name: %1% Level: %2%\nHealth: %3%/%4%") %
288 spPlayer
->Name() % spPlayer
->LevelNumber() % spPlayer
->Health() %
289 spPlayer
->MaxHealth());
293 void DisplayMonster(boost::shared_ptr
<MonsterGO
> spMonster
)
295 cout
<< "Monster:\n" << MonsterInfo(spMonster
) << endl
;
298 void DisplayPlayer(boost::shared_ptr
<PlayerGO
> spPlayer
)
300 cout
<< "Player:\n" << PlayerInfo(spPlayer
) << endl
;