]>
Commit | Line | Data |
---|---|---|
ce4e8c42 | 1 | #include <GameServ/DataLayer/File/FilePlayerDAO.h>\r |
2 | using GameServ::DataLayer::File::FilePlayerDAO;\r | |
3 | #include <GameServ/GameLayer/GameObjects/PlayerGO.h>\r | |
4 | using GameServ::GameLayer::GameObjects::PlayerGO;\r | |
5 | \r | |
6 | #include <GameServ/DataLayer/DataLayerExceptions.h>\r | |
7 | using GameServ::DataLayer::Exceptions::ResourceException;\r | |
8 | using GameServ::DataLayer::Exceptions::DataLayerException;\r | |
9 | \r | |
10 | #include <boost/shared_ptr.hpp>\r | |
11 | #include <boost/format.hpp>\r | |
12 | #include <boost/algorithm/string.hpp>\r | |
13 | #include <boost/lexical_cast.hpp>\r | |
14 | using boost::shared_ptr;\r | |
15 | using boost::format;\r | |
16 | using boost::str;\r | |
17 | using boost::algorithm::to_upper;\r | |
18 | using boost::lexical_cast;\r | |
19 | #include <boost/tokenizer.hpp>\r | |
20 | typedef boost::tokenizer<boost::char_separator<char> > \r | |
21 | tokenizer;\r | |
22 | \r | |
23 | #include <string>\r | |
24 | using std::string;\r | |
25 | \r | |
26 | #include <fstream>\r | |
27 | using std::ifstream;\r | |
28 | using std::getline;\r | |
29 | \r | |
30 | \r | |
31 | \r | |
32 | FilePlayerDAO::FilePlayerDAO() : mFilename("players.dat")\r | |
33 | {\r | |
34 | Initialize(GetPlayerFilePath());\r | |
35 | }\r | |
36 | \r | |
37 | FilePlayerDAO::FilePlayerDAO(const string &filename)\r | |
38 | {\r | |
39 | Initialize(filename);\r | |
40 | }\r | |
41 | \r | |
42 | FilePlayerDAO::~FilePlayerDAO()\r | |
43 | {\r | |
44 | }\r | |
45 | \r | |
46 | void FilePlayerDAO::Initialize(const string &filename)\r | |
47 | {\r | |
48 | mFilename = filename;\r | |
49 | }\r | |
50 | \r | |
51 | string FilePlayerDAO::GetPlayerFilePath() const\r | |
52 | {\r | |
53 | return mFilename;\r | |
54 | }\r | |
55 | \r | |
56 | shared_ptr<PlayerGO> FilePlayerDAO::GetById(const string &Id) const\r | |
57 | {\r | |
58 | string line;\r | |
59 | ifstream infile;\r | |
60 | infile.open(GetPlayerFilePath().c_str());\r | |
61 | \r | |
62 | if (infile.fail())\r | |
63 | {\r | |
64 | throw ResourceException(str(format("Unable to open file %1%") % GetPlayerFilePath()), __FILE__, __LINE__);\r | |
65 | }\r | |
66 | \r | |
67 | \r | |
68 | while (getline(infile, line))\r | |
69 | {\r | |
70 | shared_ptr<PlayerGO> spPlayer = CreatePlayerFromLine(line);\r | |
71 | if (spPlayer->Id() == Id)\r | |
72 | {\r | |
73 | return spPlayer;\r | |
74 | }\r | |
75 | }\r | |
76 | return shared_ptr<PlayerGO>();\r | |
77 | }\r | |
78 | \r | |
79 | shared_ptr<PlayerGO> FilePlayerDAO::CreatePlayerFromLine(const string &line) const\r | |
80 | {\r | |
81 | shared_ptr<PlayerGO> spPlayer;\r | |
82 | spPlayer = shared_ptr<PlayerGO>(new PlayerGO());\r | |
2a8a990d | 83 | boost::char_separator<char> sep(" ", 0, boost::keep_empty_tokens);\r |
ce4e8c42 | 84 | tokenizer tokens(line, sep);\r |
85 | tokenizer::iterator tok_iter = tokens.begin();\r | |
86 | \r | |
2a8a990d | 87 | spPlayer->Level(lexical_cast<int>((*tok_iter)));\r |
88 | tok_iter++;\r | |
89 | spPlayer->Experience(lexical_cast<unsigned long int>((*tok_iter)));\r | |
90 | tok_iter++;\r | |
91 | spPlayer->Gold(lexical_cast<unsigned long int>((*tok_iter)));\r | |
92 | tok_iter++;\r | |
93 | spPlayer->Bank(lexical_cast<unsigned long int>((*tok_iter)));\r | |
94 | tok_iter++;\r | |
95 | spPlayer->Health(lexical_cast<int>((*tok_iter)));\r | |
96 | tok_iter++;\r | |
97 | spPlayer->MaxHealth(lexical_cast<int>((*tok_iter)));\r | |
98 | tok_iter++;\r | |
99 | spPlayer->Strength(lexical_cast<int>((*tok_iter)));\r | |
100 | tok_iter++;\r | |
101 | spPlayer->Defense(lexical_cast<int>((*tok_iter)));\r | |
102 | tok_iter++;\r | |
103 | spPlayer->ForestFights(lexical_cast<int>((*tok_iter)));\r | |
104 | tok_iter++;\r | |
105 | spPlayer->PlayerFights(lexical_cast<int>((*tok_iter)));\r | |
106 | tok_iter++;\r | |
107 | int flags = lexical_cast<int>((*tok_iter));\r | |
108 | SetFlags(spPlayer, flags);\r | |
109 | tok_iter++;\r | |
110 | spPlayer->Password((*tok_iter));\r | |
ce4e8c42 | 111 | \r |
112 | return spPlayer;\r | |
113 | }\r | |
114 | \r | |
2a8a990d | 115 | void FilePlayerDAO::SetFlags(shared_ptr<PlayerGO> spPlayer, const int &flags) const\r |
116 | {\r | |
ce4e8c42 | 117 | \r |
2a8a990d | 118 | }\r |
ce4e8c42 | 119 | \r |
f21affc9 | 120 | void FilePlayerDAO::Update(shared_ptr<PlayerGO> spPlayer)\r |
121 | {\r | |
122 | throw DataLayerException("Undefined Function", __FILE__, __LINE__);\r | |
123 | }\r | |
124 | \r | |
125 | void FilePlayerDAO::Insert(shared_ptr<PlayerGO> spPlayer)\r | |
126 | {\r | |
127 | throw DataLayerException("Undefined Function", __FILE__, __LINE__);\r | |
128 | }\r | |
ce4e8c42 | 129 | \r |
f21affc9 | 130 | bool FilePlayerDAO::IdExists(const string &Id) const\r |
131 | {\r | |
132 | throw DataLayerException("Undefined Function", __FILE__, __LINE__);\r | |
133 | return false;\r | |
134 | }\r | |
135 | \r | |
136 | list<string> FilePlayerDAO::GetIdsByName(const string &Name) const\r | |
137 | {\r | |
138 | throw DataLayerException("Undefined Function", __FILE__, __LINE__);\r | |
139 | } |