Skip to content

Commit

Permalink
FIXED loading character and item data from relative paths (thanks lin…
Browse files Browse the repository at this point in the history
…uxwarrior!)
  • Loading branch information
unknown authored and unknown committed Oct 15, 2009
1 parent fed752e commit 380eb0e
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 18 deletions.
11 changes: 6 additions & 5 deletions src/base/paths.cc
Expand Up @@ -125,9 +125,10 @@ bool paths::init (const std::string & game, const std::string & userdatadir)
// set path to saved game (before loading the game from that directory)
void paths::set_save_dir (const std::string & dir)
{
if (dir != "" && exists (CfgDataDir + dir))
if (dir != "" && exists (dir))
{
SaveDataDir = CfgDataDir + dir;
SaveDataDir = dir;
if (SaveDataDir[SaveDataDir.size () - 1] != '/') SaveDataDir += "/";
IncludeSaveDir = true;
}
else
Expand Down Expand Up @@ -178,17 +179,17 @@ bool paths::find_in_path (std::string & path) const
// try whether path exists in the search path
if (IncludeSaveDir && stat ((SaveDataDir + path).c_str (), &statbuf) != -1)
{
path.insert (0, SaveDataDir + "/");
path.insert (0, SaveDataDir);
return true;
}
if (IncludeUserDir && stat ((UserDataDir + path).c_str (), &statbuf) != -1)
{
path.insert (0, UserDataDir + "/");
path.insert (0, UserDataDir);
return true;
}
if (stat ((GameDataDir + path).c_str (), &statbuf) != -1)
{
path.insert (0, GameDataDir + "/");
path.insert (0, GameDataDir);
return true;
}

Expand Down
5 changes: 2 additions & 3 deletions src/base/savegame.cc
Expand Up @@ -210,7 +210,7 @@ void savegame::init (const std::string & name)
Games.push_back (new savegame_data ("", "Start New Game", 0));

// create auto save slot
std::string save_dir = base::Paths.cfg_data_dir() + "/" + name;
std::string save_dir = base::Paths.cfg_data_dir() + name;
if (!load_meta_data (save_dir + "-auto-save"))
{
Games.push_back (new savegame_data (save_dir + "-auto-save", "Autosave", 0));
Expand All @@ -230,8 +230,7 @@ void savegame::init (const std::string & name)

while ((dirent = readdir (dir)) != NULL)
{
std::string filepath = base::Paths.cfg_data_dir() + "/";
filepath += dirent->d_name;
std::string filepath = base::Paths.cfg_data_dir() + dirent->d_name;

if (strncmp (name_save.c_str (), dirent->d_name, name_save.length ()) == 0)
{
Expand Down
6 changes: 1 addition & 5 deletions src/event/date.cc
Expand Up @@ -76,13 +76,9 @@ void date::update ()
bool date::load ()
{
base::diskio file;
std::string filename (TIME_DATA);

// try to locate file in search path
if (!base::Paths.find_in_path (filename)) return false;

// try to read file from disk
if (!file.get_record (filename)) return false;
if (!file.get_record (TIME_DATA)) return false;

// read data from file
return date::get_state (file);
Expand Down
6 changes: 1 addition & 5 deletions src/rpg/character.cc
Expand Up @@ -174,13 +174,9 @@ bool character::load ()
Characters.clear();

base::diskio file;
std::string filename (CHARACTER_DATA);

// try to find character data in Adonthell's search path
if (!base::Paths.find_in_path (filename)) return false;

// try to load character
if (!file.get_record (filename)) return false;
if (!file.get_record (CHARACTER_DATA)) return false;

u_int32 size;
char *data;
Expand Down

0 comments on commit 380eb0e

Please sign in to comment.