mirror of https://github.com/OpenTTD/OpenTTD
(svn r970) Added 2nd data path for all non-windows OSes
added completely customizable lang path (all non-Windows OSes)release/0.4.5
parent
a3a2f0617c
commit
051134ac9f
28
Makefile
28
Makefile
|
@ -89,6 +89,10 @@
|
||||||
# stored. You cannot use ~ here, define USE_HOMEDIR for that.
|
# stored. You cannot use ~ here, define USE_HOMEDIR for that.
|
||||||
# USE_HOMEDIR: If this variable is set, PERSONAL_DIR will be prefixed with
|
# USE_HOMEDIR: If this variable is set, PERSONAL_DIR will be prefixed with
|
||||||
# ~/ at runtime (the user's homedir)
|
# ~/ at runtime (the user's homedir)
|
||||||
|
# SECOND_DATA_PATH Use this data dir if a file is not found in the data dir in the data path
|
||||||
|
# CUSTOM_LANG_PATH If this is set, it will use the path given to search for lng files
|
||||||
|
# instead of the lang dir in the data path
|
||||||
|
# NOTE: both SECOND_DATA_PATH and CUSTOM_LANG_PATH uses paths relative to where OTTD is opened
|
||||||
#
|
#
|
||||||
# DEST_DIR: make install will use this directory instead of the filesystem
|
# DEST_DIR: make install will use this directory instead of the filesystem
|
||||||
# root to install its files. This should normally not be used by
|
# root to install its files. This should normally not be used by
|
||||||
|
@ -113,7 +117,7 @@
|
||||||
|
|
||||||
# Makefile version tag
|
# Makefile version tag
|
||||||
# it checks if the version tag in makefile.config is the same and force update outdated config files
|
# it checks if the version tag in makefile.config is the same and force update outdated config files
|
||||||
MAKEFILE_VERSION:=4
|
MAKEFILE_VERSION:=5
|
||||||
|
|
||||||
# CONFIG_WRITER have to be found even for manual configuration
|
# CONFIG_WRITER have to be found even for manual configuration
|
||||||
CONFIG_WRITER=makefiledir/Makefile.config_writer
|
CONFIG_WRITER=makefiledir/Makefile.config_writer
|
||||||
|
@ -444,6 +448,12 @@ ifdef OSX
|
||||||
ifndef MIDI
|
ifndef MIDI
|
||||||
MIDI:=$(OSXAPP)/contents/macos/track_starter
|
MIDI:=$(OSXAPP)/contents/macos/track_starter
|
||||||
endif
|
endif
|
||||||
|
ifndef SECOND_DATA_PATH
|
||||||
|
SECOND_DATA_PATH:="$(OSXAPP)/contents/data/"
|
||||||
|
endif
|
||||||
|
ifndef CUSTOM_LANG_DIR
|
||||||
|
CUSTOM_LANG_DIR:="$(OSXAPP)/contents/lang/"
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef MIDI
|
ifdef MIDI
|
||||||
|
@ -469,6 +479,15 @@ endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
ifdef SECOND_DATA_PATH
|
||||||
|
CDEFS += -DSECOND_DATA_DIR=\"$(SECOND_DATA_PATH)/\"
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef CUSTOM_LANG_DIR
|
||||||
|
CDEFS += -DCUSTOM_LANG_DIR=\"$(CUSTOM_LANG_DIR)/\"
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef WITH_DIRECTMUSIC
|
ifdef WITH_DIRECTMUSIC
|
||||||
CDEFS += -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT
|
CDEFS += -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT
|
||||||
endif
|
endif
|
||||||
|
@ -604,8 +623,11 @@ $(TTD): table/strings.h $(ttd_OBJS) $(MAKE_CONFIG)
|
||||||
$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS) $(VERBOSE_FILTER)
|
$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS) $(VERBOSE_FILTER)
|
||||||
|
|
||||||
$(OSX):
|
$(OSX):
|
||||||
|
@rm -fr $(OSXAPP)
|
||||||
@mkdir -p $(OSXAPP)/Contents/MacOS
|
@mkdir -p $(OSXAPP)/Contents/MacOS
|
||||||
@mkdir -p $(OSXAPP)/Contents/Resources
|
@mkdir -p $(OSXAPP)/Contents/Resources
|
||||||
|
@mkdir -p $(OSXAPP)/Contents/Data
|
||||||
|
@mkdir -p $(OSXAPP)/Contents/Lang
|
||||||
@echo "APPL????" > $(OSXAPP)/Contents/PkgInfo
|
@echo "APPL????" > $(OSXAPP)/Contents/PkgInfo
|
||||||
@cp os/macos/ttd.icns $(OSXAPP)/Contents/Resources/openttd.icns
|
@cp os/macos/ttd.icns $(OSXAPP)/Contents/Resources/openttd.icns
|
||||||
@os/macos/plistgen.sh $(OSXAPP) $(REV)
|
@os/macos/plistgen.sh $(OSXAPP) $(REV)
|
||||||
|
@ -613,7 +635,11 @@ $(OSX):
|
||||||
@ls os/macos | grep -q "\.class" || \
|
@ls os/macos | grep -q "\.class" || \
|
||||||
javac os/macos/OpenTTDMidi.java
|
javac os/macos/OpenTTDMidi.java
|
||||||
@cp os/macos/OpenTTDMidi.class $(OSXAPP)/contents/macos
|
@cp os/macos/OpenTTDMidi.class $(OSXAPP)/contents/macos
|
||||||
|
@cp data/* $(OSXAPP)/Contents/data/
|
||||||
|
@cp lang/*.lng $(OSXAPP)/Contents/lang/
|
||||||
@cp $(TTD) $(OSXAPP)/Contents/MacOS/$(TTD)
|
@cp $(TTD) $(OSXAPP)/Contents/MacOS/$(TTD)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$(endwarnings): $(64_bit_warnings)
|
$(endwarnings): $(64_bit_warnings)
|
||||||
|
|
||||||
|
|
10
fileio.c
10
fileio.c
|
@ -110,6 +110,16 @@ void FioOpenFile(int slot, const char *filename)
|
||||||
for(s=buf + strlen(_path.data_dir) - 1; *s != 0; s++)
|
for(s=buf + strlen(_path.data_dir) - 1; *s != 0; s++)
|
||||||
*s = tolower(*s);
|
*s = tolower(*s);
|
||||||
f = fopen(buf, "rb");
|
f = fopen(buf, "rb");
|
||||||
|
|
||||||
|
#if defined SECOND_DATA_DIR
|
||||||
|
// tries in the 2nd data directory
|
||||||
|
if (f == NULL) {
|
||||||
|
sprintf(buf, "%s%s", _path.second_data_dir, filename);
|
||||||
|
for(s=buf + strlen(_path.second_data_dir) - 1; *s != 0; s++)
|
||||||
|
*s = tolower(*s);
|
||||||
|
f = fopen(buf, "rb");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,8 @@ $(MAKE_CONFIG):
|
||||||
$(call CONFIG_LINE,DATA_DIR:=$(DATA_DIR))
|
$(call CONFIG_LINE,DATA_DIR:=$(DATA_DIR))
|
||||||
$(call CONFIG_LINE,USE_HOMEDIR:=$(USE_HOMEDIR))
|
$(call CONFIG_LINE,USE_HOMEDIR:=$(USE_HOMEDIR))
|
||||||
$(call CONFIG_LINE,PERSONAL_DIR:=$(PERSONAL_DIR))
|
$(call CONFIG_LINE,PERSONAL_DIR:=$(PERSONAL_DIR))
|
||||||
|
$(call CONFIG_LINE,SECOND_DATA_PATH:=$(SECOND_DATA_PATH))
|
||||||
|
$(call CONFIG_LINE,CUSTOM_LANG_PATH:=$(CUSTOM_LANG_PATH))
|
||||||
$(call CONFIG_LINE,)
|
$(call CONFIG_LINE,)
|
||||||
|
|
||||||
$(call CONFIG_LINE,\# Experimental)
|
$(call CONFIG_LINE,\# Experimental)
|
||||||
|
|
11
ttd.c
11
ttd.c
|
@ -496,8 +496,15 @@ void LoadIntroGame()
|
||||||
// Generate a world.
|
// Generate a world.
|
||||||
sprintf(filename, "%sopntitle.dat", _path.data_dir);
|
sprintf(filename, "%sopntitle.dat", _path.data_dir);
|
||||||
if (SaveOrLoad(filename, SL_LOAD) != SL_OK)
|
if (SaveOrLoad(filename, SL_LOAD) != SL_OK)
|
||||||
GenerateWorld(1); // if failed loading, make empty world.
|
#if defined SECOND_DATA_DIR
|
||||||
|
{
|
||||||
|
sprintf(filename, "%sopntitle.dat", _path.second_data_dir);
|
||||||
|
if (SaveOrLoad(filename, SL_LOAD) != SL_OK)
|
||||||
|
#endif
|
||||||
|
GenerateWorld(1); // if failed loading, make empty world.
|
||||||
|
#if defined SECOND_DATA_DIR
|
||||||
|
}
|
||||||
|
#endif
|
||||||
_opt.currency = _new_opt.currency;
|
_opt.currency = _new_opt.currency;
|
||||||
|
|
||||||
_pause = 0;
|
_pause = 0;
|
||||||
|
|
22
unix.c
22
unix.c
|
@ -424,7 +424,7 @@ void ShowOSErrorBox(const char *buf)
|
||||||
// this creates an error in the console and then opens the console.
|
// this creates an error in the console and then opens the console.
|
||||||
// Colourcodes are not used in the console, so they are skipped here
|
// Colourcodes are not used in the console, so they are skipped here
|
||||||
fprintf(stderr, "Error: %s", buf);
|
fprintf(stderr, "Error: %s", buf);
|
||||||
system("/Applications/Utilities/Console.app/Contents/MacOS/Console");
|
system("/Applications/Utilities/Console.app/Contents/MacOS/Console &");
|
||||||
#else
|
#else
|
||||||
// all systems, but OSX
|
// all systems, but OSX
|
||||||
fprintf(stderr, "\033[1;31mError: %s\033[0;39m\n", buf);
|
fprintf(stderr, "\033[1;31mError: %s\033[0;39m\n", buf);
|
||||||
|
@ -452,7 +452,11 @@ void DeterminePaths()
|
||||||
char *s;
|
char *s;
|
||||||
|
|
||||||
_path.game_data_dir = malloc( MAX_PATH );
|
_path.game_data_dir = malloc( MAX_PATH );
|
||||||
strcpy(_path.game_data_dir, GAME_DATA_DIR);
|
ttd_strlcpy(_path.game_data_dir, GAME_DATA_DIR, MAX_PATH);
|
||||||
|
#if defined SECOND_DATA_DIR
|
||||||
|
_path.second_data_dir = malloc( MAX_PATH );
|
||||||
|
ttd_strlcpy( _path.second_data_dir, SECOND_DATA_DIR, MAX_PATH);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(USE_HOMEDIR)
|
#if defined(USE_HOMEDIR)
|
||||||
{
|
{
|
||||||
|
@ -470,7 +474,7 @@ void DeterminePaths()
|
||||||
#else /* not defined(USE_HOMEDIR) */
|
#else /* not defined(USE_HOMEDIR) */
|
||||||
|
|
||||||
_path.personal_dir = malloc( MAX_PATH );
|
_path.personal_dir = malloc( MAX_PATH );
|
||||||
strcpy(_path.personal_dir, PERSONAL_DIR);
|
ttd_strlcpy(_path.personal_dir, PERSONAL_DIR, MAX_PATH);
|
||||||
|
|
||||||
// check if absolute or relative path
|
// check if absolute or relative path
|
||||||
s = strchr(_path.personal_dir, '/');
|
s = strchr(_path.personal_dir, '/');
|
||||||
|
@ -480,7 +484,7 @@ void DeterminePaths()
|
||||||
getcwd(_path.personal_dir, MAX_PATH);
|
getcwd(_path.personal_dir, MAX_PATH);
|
||||||
s = strchr(_path.personal_dir, 0);
|
s = strchr(_path.personal_dir, 0);
|
||||||
*s++ = '/';
|
*s++ = '/';
|
||||||
strcpy(s, PERSONAL_DIR);
|
ttd_strlcpy(s, PERSONAL_DIR, MAX_PATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* defined(USE_HOMEDIR) */
|
#endif /* defined(USE_HOMEDIR) */
|
||||||
|
@ -495,9 +499,15 @@ void DeterminePaths()
|
||||||
_path.scenario_dir = str_fmt("%sscenario", _path.personal_dir);
|
_path.scenario_dir = str_fmt("%sscenario", _path.personal_dir);
|
||||||
_path.gm_dir = str_fmt("%sgm/", _path.game_data_dir);
|
_path.gm_dir = str_fmt("%sgm/", _path.game_data_dir);
|
||||||
_path.data_dir = str_fmt("%sdata/", _path.game_data_dir);
|
_path.data_dir = str_fmt("%sdata/", _path.game_data_dir);
|
||||||
_path.lang_dir = str_fmt("%slang/", _path.game_data_dir);
|
|
||||||
|
|
||||||
_config_file = str_fmt("%sopenttd.cfg", _path.personal_dir);
|
_config_file = str_fmt("%sopenttd.cfg", _path.personal_dir);
|
||||||
|
|
||||||
|
#if defined CUSTOM_LANG_DIR
|
||||||
|
// sets the search path for lng files to the custom one
|
||||||
|
_path.lang_dir = malloc( MAX_PATH );
|
||||||
|
ttd_strlcpy( _path.lang_dir, CUSTOM_LANG_DIR, MAX_PATH);
|
||||||
|
#else
|
||||||
|
_path.lang_dir = str_fmt("%slang/", _path.game_data_dir);
|
||||||
|
#endif
|
||||||
|
|
||||||
// create necessary folders
|
// create necessary folders
|
||||||
mkdir(_path.personal_dir, 0755);
|
mkdir(_path.personal_dir, 0755);
|
||||||
|
|
|
@ -199,6 +199,7 @@ typedef struct Paths {
|
||||||
char *save_dir;
|
char *save_dir;
|
||||||
char *autosave_dir;
|
char *autosave_dir;
|
||||||
char *scenario_dir;
|
char *scenario_dir;
|
||||||
|
char *second_data_dir;
|
||||||
} Paths;
|
} Paths;
|
||||||
|
|
||||||
VARDEF Paths _path;
|
VARDEF Paths _path;
|
||||||
|
|
Loading…
Reference in New Issue