]> jfr.im git - irc/gameservirc.git/blame - gameserv-2.0/libgameservgldl/src/GameLayer/ForestGL.cpp
Changed Range to be a template class so it can be used with unsigned & signed ints...
[irc/gameservirc.git] / gameserv-2.0 / libgameservgldl / src / GameLayer / ForestGL.cpp
CommitLineData
fd2ef47d 1#include <GameServ/GameLayer/ForestGL.h>\r
2using GameServ::GameLayer::ForestGL;\r
3\r
4#include <GameServ/DataLayer/IMonsterDAO.h>\r
5using GameServ::DataLayer::DataAccessObjects::IMonsterDAO;\r
6#include <GameServ/DataLayer/ILevelDAO.h>\r
7using GameServ::DataLayer::DataAccessObjects::ILevelDAO;\r
8\r
9\r
10#include <GameServ/DataLayer/DataAccess.h>\r
11using GameServ::DataLayer::DataAccess;\r
12#include <GameServ/DataLayer/IDAOFactory.h>\r
13using GameServ::DataLayer::IDAOFactory;\r
14\r
15#include <GameServ/GameLayer/GameObjects/PlayerGO.h>\r
16#include <GameServ/GameLayer/GameObjects/MonsterGO.h>\r
17#include <GameServ/GameLayer/GameObjects/LevelGO.h>\r
18using GameServ::GameLayer::GameObjects::PlayerGO;\r
19using GameServ::GameLayer::GameObjects::MonsterGO;\r
20\r
21#include <boost/smart_ptr/shared_ptr.hpp>\r
22using boost::shared_ptr;\r
23\r
24#include <string>\r
25using std::string;\r
26\r
27ForestGL::ForestGL()\r
28{\r
29 Initialize();\r
30}\r
31\r
32ForestGL::~ForestGL()\r
33{\r
34}\r
35\r
36void ForestGL::Initialize(void)\r
37{\r
38 // TODO: Change this to be loaded from a config file\r
39 shared_ptr<IDAOFactory> spFactory = DataAccess::GetDataAccessFactory("File");\r
40\r
41 mspMonsterDAO = spFactory->GetMonsterDAO();\r
42 mspLevelDAO = spFactory->GetLevelDAO();\r
43}\r
44\r
45shared_ptr<MonsterGO> ForestGL::GetRandomMonsterForPlayer(shared_ptr<PlayerGO> spPlayer)\r
46{\r
47 assert (spPlayer != 0);\r
48 shared_ptr<LevelGO> spLevel = mspLevelDAO->GetById(spPlayer->LevelId());\r
fadef98f 49 vector<string> monsterIds = mspMonsterDAO->GetMonsterIdsByLevelId(spLevel->Id());\r
50 if (monsterIds.size() > 0)\r
fd2ef47d 51 {\r
fadef98f 52 Range<unsigned int> r(monsterIds.size() - 1, 0);\r
53 shared_ptr<MonsterGO> spMonster = mspMonsterDAO->GetById(monsterIds[r.Random()]);\r
fd2ef47d 54 spMonster->MaxHealth(spLevel->HealthRange().Random());\r
55 spMonster->Health(spMonster->MaxHealth());\r
56 spMonster->Strength(spLevel->StrengthRange().Random());\r
57 spMonster->Defense(spLevel->DefenseRange().Random());\r
58 spMonster->Gold(spLevel->GoldRange().Random());\r
59 spMonster->Experience(spLevel->ExperienceRange().Random());\r
60 return spMonster;\r
61 }\r
62 return shared_ptr<MonsterGO>();\r
63}\r