From 089fc010abe439aea154813e3e31bc9477a84308 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Mon, 23 Jun 2014 15:55:47 -0400 Subject: [PATCH] Store the maximum player file tries in a constant --- src/constants.h | 5 +++++ src/environment.cpp | 2 +- src/player.cpp | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/constants.h b/src/constants.h index 53ef1801..526e4415 100644 --- a/src/constants.h +++ b/src/constants.h @@ -89,6 +89,11 @@ with this program; if not, write to the Free Software Foundation, Inc., // Maximum hit points of a player #define PLAYER_MAX_HP 20 +// Number of different files to try to save a player to if the first fails +// (because of a case-insensitive filesystem) +// TODO: Use case-insensitive player names instead of this hack. +#define PLAYER_FILE_ALTERNATE_TRIES 1000 + /* * GUI related things */ diff --git a/src/environment.cpp b/src/environment.cpp index d068aa78..845928a2 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -455,7 +455,7 @@ Player *ServerEnvironment::loadPlayer(const std::string &playername) RemotePlayer testplayer(m_gamedef); std::string path = players_path + playername; - for (u32 i = 0; i < 1000; i++) { + for (u32 i = 0; i < PLAYER_FILE_ALTERNATE_TRIES; i++) { // Open file and deserialize std::ifstream is(path.c_str(), std::ios_base::binary); if (!is.good()) { diff --git a/src/player.cpp b/src/player.cpp index a52385f2..0d506ec9 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -297,7 +297,7 @@ void RemotePlayer::save(std::string savedir) savedir += DIR_DELIM; std::string path = savedir + m_name; - for (u32 i = 0; i < 1000; i++) { + for (u32 i = 0; i < PLAYER_FILE_ALTERNATE_TRIES; i++) { if (!fs::PathExists(path)) { // Open file and serialize std::ostringstream ss(std::ios_base::binary);