DrawBuffer *drawto_field;
int game_status = -1;
+boolean game_status_last_screen = -1;
boolean level_editor_test_game = FALSE;
boolean network_playing = FALSE;
int key_joystick_mapping = 0;
-boolean redraw[2 + MAX_LEV_FIELDX + 2][2 + MAX_LEV_FIELDY + 2];
-int redraw_x1 = 0, redraw_y1 = 0;
-
short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
int SXSIZE = SXSIZE_DEFAULT;
int SYSIZE = SYSIZE_DEFAULT;
+int FADE_SX = 6, FADE_SY = 6;
+int FADE_SXSIZE = 2 + SXSIZE_DEFAULT + 2;
+int FADE_SYSIZE = 2 + SXSIZE_DEFAULT + 2;
+
int DXSIZE = 100;
int DYSIZE = 280;
int VXSIZE = 100;
static void print_usage()
{
- printf("\n"
- "Usage: %s [OPTION]... [HOSTNAME [PORT]]\n"
- "\n"
- "Options:\n"
- " -d, --display HOSTNAME[:SCREEN] specify X server display\n"
- " -b, --basepath DIRECTORY alternative base DIRECTORY\n"
- " -l, --level DIRECTORY alternative level DIRECTORY\n"
- " -g, --graphics DIRECTORY alternative graphics DIRECTORY\n"
- " -s, --sounds DIRECTORY alternative sounds DIRECTORY\n"
- " -m, --music DIRECTORY alternative music DIRECTORY\n"
- " -n, --network network multiplayer game\n"
- " --serveronly only start network server\n"
- " -v, --verbose verbose mode\n"
- " -V, --version show program version\n"
- " --debug display debugging information\n"
- " -e, --execute COMMAND execute batch COMMAND\n"
- "\n"
- "Valid commands for '--execute' option:\n"
- " \"print graphicsinfo.conf\" print default graphics config\n"
- " \"print soundsinfo.conf\" print default sounds config\n"
- " \"print musicinfo.conf\" print default music config\n"
- " \"print editorsetup.conf\" print default editor config\n"
- " \"print helpanim.conf\" print default helpanim config\n"
- " \"print helptext.conf\" print default helptext config\n"
- " \"dump level FILE\" dump level data from FILE\n"
- " \"dump tape FILE\" dump tape data from FILE\n"
- " \"autoplay LEVELDIR [NR ...]\" play level tapes for LEVELDIR\n"
- " \"convert LEVELDIR [NR]\" convert levels in LEVELDIR\n"
- " \"create images DIRECTORY\" write BMP images to DIRECTORY\n"
- " \"create CE image DIRECTORY\" write BMP image to DIRECTORY\n"
- "\n",
- program.command_basename);
+ Print("\n"
+ "Usage: %s [OPTION]... [HOSTNAME [PORT]]\n"
+ "\n"
+ "Options:\n"
+ " -d, --display HOSTNAME[:SCREEN] specify X server display\n"
+ " -b, --basepath DIRECTORY alternative base DIRECTORY\n"
+ " -l, --level DIRECTORY alternative level DIRECTORY\n"
+ " -g, --graphics DIRECTORY alternative graphics DIRECTORY\n"
+ " -s, --sounds DIRECTORY alternative sounds DIRECTORY\n"
+ " -m, --music DIRECTORY alternative music DIRECTORY\n"
+ " -n, --network network multiplayer game\n"
+ " --serveronly only start network server\n"
+ " -v, --verbose verbose mode\n"
+ " -V, --version show program version\n"
+ " --debug display debugging information\n"
+ " -e, --execute COMMAND execute batch COMMAND\n"
+ "\n"
+ "Valid commands for '--execute' option:\n"
+ " \"print graphicsinfo.conf\" print default graphics config\n"
+ " \"print soundsinfo.conf\" print default sounds config\n"
+ " \"print musicinfo.conf\" print default music config\n"
+ " \"print editorsetup.conf\" print default editor config\n"
+ " \"print helpanim.conf\" print default helpanim config\n"
+ " \"print helptext.conf\" print default helptext config\n"
+ " \"dump level FILE\" dump level data from FILE\n"
+ " \"dump tape FILE\" dump tape data from FILE\n"
+ " \"autotest LEVELDIR [NR ...]\" test level tapes for LEVELDIR\n"
+ " \"autoplay LEVELDIR [NR ...]\" play level tapes for LEVELDIR\n"
+ " \"autoffwd LEVELDIR [NR ...]\" ffwd level tapes for LEVELDIR\n"
+ " \"convert LEVELDIR [NR]\" convert levels in LEVELDIR\n"
+ " \"create images DIRECTORY\" write BMP images to DIRECTORY\n"
+ " \"create CE image DIRECTORY\" write BMP image to DIRECTORY\n"
+ "\n",
+ program.command_basename);
}
static void print_version()
{
- printf("%s %d.%d.%d.%d\n",
- PROGRAM_TITLE_STRING,
- PROGRAM_VERSION_MAJOR,
- PROGRAM_VERSION_MINOR,
- PROGRAM_VERSION_PATCH,
- PROGRAM_VERSION_BUILD);
+ Print("%s %d.%d.%d.%d\n",
+ PROGRAM_TITLE_STRING,
+ PROGRAM_VERSION_MAJOR,
+ PROGRAM_VERSION_MINOR,
+ PROGRAM_VERSION_PATCH,
+ PROGRAM_VERSION_BUILD);
if (options.debug)
{
SDL_version sdl_version;
SDL_VERSION(&sdl_version);
- printf("- SDL %d.%d.%d\n",
- sdl_version.major,
- sdl_version.minor,
- sdl_version.patch);
+ Print("- SDL %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
SDL_IMAGE_VERSION(&sdl_version);
- printf("- SDL_image %d.%d.%d\n",
- sdl_version.major,
- sdl_version.minor,
- sdl_version.patch);
+ Print("- SDL_image %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
SDL_MIXER_VERSION(&sdl_version);
- printf("- SDL_mixer %d.%d.%d\n",
- sdl_version.major,
- sdl_version.minor,
- sdl_version.patch);
+ Print("- SDL_mixer %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
SDL_NET_VERSION(&sdl_version);
- printf("- SDL_net %d.%d.%d\n",
- sdl_version.major,
- sdl_version.minor,
- sdl_version.patch);
+ Print("- SDL_net %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
}
}
static void InitProgramConfig(char *command_filename)
{
- char *command_basename = getBaseName(command_filename);
- char *config_filename = getProgramConfigFilename(command_filename);
char *program_title = PROGRAM_TITLE_STRING;
char *program_icon_file = PROGRAM_ICON_FILENAME;
+ char *config_filename = getProgramConfigFilename(command_filename);
+ char *userdata_basename = getBaseNameNoSuffix(command_filename);
char *userdata_subdir;
char *userdata_subdir_unix;
// read default program config, if existing
if (fileExists(config_filename))
+ {
+ // if program config file exists, derive Unix user data directory from it
+ userdata_basename = getBaseName(config_filename);
+
+ if (strSuffix(userdata_basename, ".conf"))
+ userdata_basename[strlen(userdata_basename) - 5] = '\0';
+
LoadSetupFromFilename(config_filename);
+ }
+
+ // set user data directory for Linux/Unix (but not Mac OS X)
+ userdata_subdir_unix = getStringCat2(".", userdata_basename);
// set program title from potentially redefined program title
if (setup.internal.program_title != NULL &&
strlen(setup.internal.program_icon_file) > 0)
program_icon_file = getStringCopy(setup.internal.program_icon_file);
- // strip trailing executable suffix from command basename
- if (strSuffix(command_basename, ".exe"))
- command_basename[strlen(command_basename) - 4] = '\0';
-
- userdata_subdir_unix = getStringCat2(".", command_basename);
-
#if defined(PLATFORM_WIN32) || defined(PLATFORM_MACOSX)
userdata_subdir = program_title;
#elif defined(PLATFORM_UNIX)
InitProgramInfo(command_filename,
config_filename,
userdata_subdir,
- userdata_subdir_unix,
program_title,
program_title,
program_icon_file,
InitExitFunction(CloseAllAndExit);
InitPlatformDependentStuff();
- GetOptions(argv, print_usage, print_version);
+ GetOptions(argc, argv, print_usage, print_version);
OpenAll();
EventLoop();