]>
jfr.im git - irc/gameservirc.git/blob - gameserv-2.0/libgameservgldl/src/DataLayer/File/FilePlayerDAO.cpp
59e6e64755d86b1a0ebee0b3a2592e715178f87c
1 #include <GameServ/DataLayer/File/FilePlayerDAO.h>
2 using GameServ::DataLayer::File::FilePlayerDAO
;
3 #include <GameServ/GameLayer/GameObjects/PlayerGO.h>
4 using GameServ::GameLayer::GameObjects::PlayerGO
;
6 #include <GameServ/DataLayer/DataLayerExceptions.h>
7 using GameServ::DataLayer::Exceptions::ResourceException
;
8 using GameServ::DataLayer::Exceptions::DataLayerException
;
10 #include <boost/shared_ptr.hpp>
11 #include <boost/format.hpp>
12 #include <boost/algorithm/string.hpp>
13 #include <boost/lexical_cast.hpp>
14 using boost::shared_ptr
;
17 using boost::algorithm::to_upper
;
18 using boost::lexical_cast
;
19 #include <boost/tokenizer.hpp>
20 typedef boost::tokenizer
<boost::char_separator
<char> >
32 FilePlayerDAO::FilePlayerDAO() : mFilename("players.dat")
34 Initialize(GetPlayerFilePath());
37 FilePlayerDAO::FilePlayerDAO(const string
&filename
)
42 FilePlayerDAO::~FilePlayerDAO()
46 void FilePlayerDAO::Initialize(const string
&filename
)
51 string
FilePlayerDAO::GetPlayerFilePath() const
56 shared_ptr
<PlayerGO
> FilePlayerDAO::GetById(const string
&Id
) const
60 infile
.open(GetPlayerFilePath().c_str());
64 throw ResourceException(str(format("Unable to open file %1%") % GetPlayerFilePath()), __FILE__
, __LINE__
);
68 while (getline(infile
, line
))
70 shared_ptr
<PlayerGO
> spPlayer
= CreatePlayerFromLine(line
);
71 if (spPlayer
->Id() == Id
)
76 return shared_ptr
<PlayerGO
>();
79 shared_ptr
<PlayerGO
> FilePlayerDAO::CreatePlayerFromLine(const string
&line
) const
81 shared_ptr
<PlayerGO
> spPlayer
;
82 spPlayer
= shared_ptr
<PlayerGO
>(new PlayerGO());
83 boost::char_separator
<char> sep(" ", 0, boost::keep_empty_tokens
);
84 tokenizer
tokens(line
, sep
);
85 tokenizer::iterator tok_iter
= tokens
.begin();
87 spPlayer
->Level(lexical_cast
<int>((*tok_iter
)));
89 spPlayer
->Experience(lexical_cast
<unsigned long int>((*tok_iter
)));
91 spPlayer
->Gold(lexical_cast
<unsigned long int>((*tok_iter
)));
93 spPlayer
->Bank(lexical_cast
<unsigned long int>((*tok_iter
)));
95 spPlayer
->Health(lexical_cast
<int>((*tok_iter
)));
97 spPlayer
->MaxHealth(lexical_cast
<int>((*tok_iter
)));
99 spPlayer
->Strength(lexical_cast
<int>((*tok_iter
)));
101 spPlayer
->Defense(lexical_cast
<int>((*tok_iter
)));
103 spPlayer
->ForestFights(lexical_cast
<int>((*tok_iter
)));
105 spPlayer
->PlayerFights(lexical_cast
<int>((*tok_iter
)));
107 int flags
= lexical_cast
<int>((*tok_iter
));
108 SetFlags(spPlayer
, flags
);
110 spPlayer
->Password((*tok_iter
));
115 void FilePlayerDAO::SetFlags(shared_ptr
<PlayerGO
> spPlayer
, const int &flags
) const
120 void FilePlayerDAO::Update(shared_ptr
<PlayerGO
> spPlayer
)
122 throw DataLayerException("Undefined Function", __FILE__
, __LINE__
);
125 void FilePlayerDAO::Insert(shared_ptr
<PlayerGO
> spPlayer
)
127 throw DataLayerException("Undefined Function", __FILE__
, __LINE__
);
130 bool FilePlayerDAO::IdExists(const string
&Id
) const
132 throw DataLayerException("Undefined Function", __FILE__
, __LINE__
);
136 list
<string
> FilePlayerDAO::GetIdsByName(const string
&Name
) const
138 throw DataLayerException("Undefined Function", __FILE__
, __LINE__
);