Changeset - r6935:a7744b917c21
[Not reviewed]
master
0 4 0
rubidium - 17 years ago 2007-06-17 20:09:05
rubidium@openttd.org
(svn r10188) -Codechange: make it a little easier to load a savegame from the console:
-g <absolute path>
-g <relative path from current working directory>
-g <relative path from within the savegame directory>
4 files changed with 12 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/fileio.cpp
Show inline comments
 
@@ -279,7 +279,7 @@ FILE *FioFOpenFileSp(const char *filenam
 
	FILE *f = NULL;
 
	char buf[MAX_PATH];
 

	
 
	if (subdir == BASE_DIR) {
 
	if (subdir == NO_DIRECTORY) {
 
		ttd_strlcpy(buf, filename, lengthof(buf));
 
	} else {
 
		snprintf(buf, lengthof(buf), "%s%s%s", _searchpaths[sp], _subdirs[subdir], filename);
 
@@ -301,11 +301,11 @@ FILE *FioFOpenFile(const char *filename,
 
	FILE *f = NULL;
 
	Searchpath sp;
 

	
 
	assert(subdir < NUM_SUBDIRS);
 
	assert(subdir < NUM_SUBDIRS || subdir == NO_DIRECTORY);
 

	
 
	FOR_ALL_SEARCHPATHS(sp) {
 
		f = FioFOpenFileSp(filename, mode, sp, subdir);
 
		if (f != NULL || subdir == 0) break;
 
		if (f != NULL || subdir == NO_DIRECTORY) break;
 
	}
 

	
 
	return f;
src/fileio.h
Show inline comments
 
@@ -33,6 +33,7 @@ enum Subdirectory {
 
	DATA_DIR,      ///< Subdirectory for all data (GRFs, sample.cat, intro game)
 
	LANG_DIR,      ///< Subdirectory for all translation files
 
	NUM_SUBDIRS,   ///< Number of subdirectories
 
	NO_DIRECTORY,  ///< A path without any base directory
 
};
 

	
 
/**
src/openttd.cpp
Show inline comments
 
@@ -860,7 +860,7 @@ void SwitchMode(int new_mode)
 
		_opt_ptr = &_opt;
 
		ResetGRFConfig(true);
 

	
 
		if (!SafeSaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, GM_NORMAL, BASE_DIR)) {
 
		if (!SafeSaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, GM_NORMAL, NO_DIRECTORY)) {
 
			LoadIntroGame();
 
			ShowErrorMessage(INVALID_STRING_ID, STR_4009_GAME_LOAD_FAILED, 0, 0);
 
		} else {
 
@@ -894,7 +894,7 @@ void SwitchMode(int new_mode)
 
		break;
 

	
 
	case SM_LOAD_SCENARIO: { /* Load scenario from scenario editor */
 
		if (SafeSaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, GM_EDITOR, BASE_DIR)) {
 
		if (SafeSaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, GM_EDITOR, NO_DIRECTORY)) {
 
			_opt_ptr = &_opt;
 

	
 
			SetLocalPlayer(OWNER_NONE);
 
@@ -910,7 +910,7 @@ void SwitchMode(int new_mode)
 
		break;
 

	
 
	case SM_SAVE: /* Save game */
 
		if (SaveOrLoad(_file_to_saveload.name, SL_SAVE, BASE_DIR) != SL_OK) {
 
		if (SaveOrLoad(_file_to_saveload.name, SL_SAVE, NO_DIRECTORY) != SL_OK) {
 
			ShowErrorMessage(INVALID_STRING_ID, STR_4007_GAME_SAVE_FAILED, 0, 0);
 
		} else {
 
			DeleteWindowById(WC_SAVELOAD, 0);
src/saveload.cpp
Show inline comments
 
@@ -1584,6 +1584,11 @@ SaveOrLoadResult SaveOrLoad(const char *
 
	}
 

	
 
	_sl.fh = (mode == SL_SAVE) ? FioFOpenFile(filename, "wb", sb) : FioFOpenFile(filename, "rb", sb);
 

	
 
	/* Make it a little easier to load savegames from the console */
 
	if (_sl.fh == NULL && mode == SL_LOAD) _sl.fh = FioFOpenFile(filename, "rb", SAVE_DIR);
 
	if (_sl.fh == NULL && mode == SL_LOAD) _sl.fh = FioFOpenFile(filename, "rb", BASE_DIR);
 

	
 
	if (_sl.fh == NULL) {
 
		DEBUG(sl, 0, "Cannot open savegame '%s' for saving/loading.", filename);
 
		return SL_ERROR;
0 comments (0 inline, 0 general)