1 #include <Game/ScoreFile.hpp>
2 #include <Game/BoardParser.hpp>
3 #include <Misc/Utils.hpp>
4 #include <Config/INI.hpp>
23 board_scroll_delay(0),
24 board_scroll_left(false),
25 board_scroll_right(false),
26 board_scroll_up(false),
27 board_scroll_down(false)
40 if (this->
level.empty())
45 this->speed == other.
speed &&
46 this->board_scroll_delay == other.board_scroll_delay &&
47 this->board_scroll_left == other.board_scroll_left &&
48 this->board_scroll_right == other.board_scroll_right &&
49 this->board_scroll_up == other.board_scroll_up &&
50 this->board_scroll_down == other.board_scroll_down &&
59 this->speed == other.
speed &&
60 this->board_scroll_delay == other.board_scroll_delay &&
61 this->board_scroll_left == other.board_scroll_left &&
62 this->board_scroll_right == other.board_scroll_right &&
63 this->board_scroll_up == other.board_scroll_up &&
64 this->board_scroll_down == other.board_scroll_down);
81 for (
size_t i = 0; i < files.size(); i++)
110 if (this->level_name.empty())
111 score_file = Globals::Config::scoresFile;
118 file.open(score_file.c_str());
120 std::stringstream buffer;
121 buffer << file.rdbuf();
124 std::stringstream contents;
133 std::string version = ini[
"version"];
138 Globals::Error::old_version_score_file =
true;
154 entry.
level = ini_score[
"level"];
155 entry.
points = Utils::String::to<unsigned int>(ini_score[
"points"]);
156 entry.
speed = Utils::String::to<unsigned int>(ini_score[
"speed"]);
157 entry.
fruits = Utils::String::to<int>(ini_score[
"fruits"]);
158 entry.
random_walls = Utils::String::to<bool>(ini_score[
"random_walls"]);
159 entry.
teleport = Utils::String::to<bool>(ini_score[
"teleport"]);
161 entry.board_scroll_delay = Utils::String::to<int>(ini_score[
"board_scroll_delay"]);
162 entry.board_scroll_left = Utils::String::to<bool>(ini_score[
"board_scroll_left"]);
163 entry.board_scroll_right = Utils::String::to<bool>(ini_score[
"board_scroll_right"]);
164 entry.board_scroll_up = Utils::String::to<bool>(ini_score[
"board_scroll_up"]);
165 entry.board_scroll_down = Utils::String::to<bool>(ini_score[
"board_scroll_down"]);
167 int board_size = Utils::String::to<int>(ini_score[
"board_size"]);
168 entry.
board_size = Globals::Game::intToBoardSize(board_size);
170 this->entries.push_back(entry);
176 tmp_score.
level = this->level_name;
177 tmp_score.
speed = Globals::Game::starting_speed;
178 tmp_score.
fruits = Globals::Game::fruits_at_once;
180 tmp_score.
teleport = Globals::Game::teleport;
181 tmp_score.
board_size = Globals::Game::board_size;
182 tmp_score.board_scroll_delay = Globals::Game::board_scroll_delay;
183 tmp_score.board_scroll_left = Globals::Game::board_scroll_left;
184 tmp_score.board_scroll_right = Globals::Game::board_scroll_right;
185 tmp_score.board_scroll_up = Globals::Game::board_scroll_up;
186 tmp_score.board_scroll_down = Globals::Game::board_scroll_down;
188 for (
size_t i = 0; i < (this->entries.size()); i++)
190 if (tmp_score.
isLike(this->entries[i]))
198 this->entries.push_back(tmp_score);
199 this->
highScore = &(this->entries[this->entries.size() - 1]);
212 if (this->level_name.empty())
213 score_file = Globals::Config::scoresFile;
228 ini.
top().
addKey(
"version", std::string(VERSION));
231 for (
size_t i = 0; i < (this->entries.size()); i++)
233 std::string score_name =
"score" + Utils::String::toString(i);
237 ini(score_name).addKey(
"level", this->entries[i].level);
238 ini(score_name).addKey(
"points", Utils::String::toString(this->entries[i].points));
239 ini(score_name).addKey(
"speed", Utils::String::toString(this->entries[i].speed));
240 ini(score_name).addKey(
"fruits", Utils::String::toString(this->entries[i].fruits));
242 ini(score_name).addKey(
"random_walls", Utils::String::toString(this->entries[i].random_walls));
243 ini(score_name).addKey(
"teleport", Utils::String::toString(this->entries[i].teleport));
245 int board_size = Globals::Game::boardSizeToInt(this->entries[i].board_size);
246 ini(score_name).addKey(
"board_size", Utils::String::toString(board_size));
248 ini(score_name).addKey(
"board_scroll_delay", Utils::String::toString(this->entries[i].board_scroll_delay));
249 ini(score_name).addKey(
"board_scroll_left", Utils::String::toString(this->entries[i].board_scroll_left));
250 ini(score_name).addKey(
"board_scroll_right", Utils::String::toString(this->entries[i].board_scroll_right));
251 ini(score_name).addKey(
"board_scroll_up", Utils::String::toString(this->entries[i].board_scroll_up));
252 ini(score_name).addKey(
"board_scroll_down", Utils::String::toString(this->entries[i].board_scroll_down));
255 std::stringstream contents;
259 file.open(score_file.c_str());
268 this->entries.push_back(*score);
269 this->
highScore = &(this->entries[this->entries.size() - 1]);
274 if (! score->
isLike(*this->highScore))