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