X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.c;h=9659af05c781dd6d8b7bf3b1559d403bda194658;hp=683276e94c6d672a07c5c435f3c474eb344c04c1;hb=eb72f4adc74084da40e39484b2545e3d49d39eaa;hpb=4dad971280a07058d01449d5e6db2b036470015d diff --git a/src/main.c b/src/main.c index 683276e9..9659af05 100644 --- a/src/main.c +++ b/src/main.c @@ -31,6 +31,7 @@ DrawBuffer *fieldbuffer; DrawBuffer *drawto_field; int game_status = -1; +boolean game_status_last_screen = -1; boolean level_editor_test_game = FALSE; boolean network_playing = FALSE; @@ -41,9 +42,6 @@ SDL_Thread *server_thread; 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]; @@ -104,6 +102,10 @@ int FULL_SYSIZE = 2 + SYSIZE_DEFAULT + 2; 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; @@ -144,9 +146,17 @@ struct ViewportInfo viewport; struct TitleFadingInfo fading; struct TitleFadingInfo title_initial_default; struct TitleFadingInfo title_default; +struct TitleMessageInfo titlescreen_initial_default; +struct TitleMessageInfo titlescreen_initial_first[MAX_NUM_TITLE_IMAGES]; +struct TitleMessageInfo titlescreen_initial[MAX_NUM_TITLE_IMAGES]; +struct TitleMessageInfo titlescreen_default; +struct TitleMessageInfo titlescreen_first[MAX_NUM_TITLE_IMAGES]; +struct TitleMessageInfo titlescreen[MAX_NUM_TITLE_IMAGES]; struct TitleMessageInfo titlemessage_initial_default; +struct TitleMessageInfo titlemessage_initial_first[MAX_NUM_TITLE_MESSAGES]; struct TitleMessageInfo titlemessage_initial[MAX_NUM_TITLE_MESSAGES]; struct TitleMessageInfo titlemessage_default; +struct TitleMessageInfo titlemessage_first[MAX_NUM_TITLE_MESSAGES]; struct TitleMessageInfo titlemessage[MAX_NUM_TITLE_MESSAGES]; struct TitleMessageInfo readme; struct InitInfo init, init_last; @@ -5578,7 +5588,9 @@ static void print_usage() " \"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" @@ -5627,16 +5639,27 @@ static void print_version() 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 && @@ -5648,12 +5671,6 @@ static void InitProgramConfig(char *command_filename) 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) @@ -5665,7 +5682,6 @@ static void InitProgramConfig(char *command_filename) InitProgramInfo(command_filename, config_filename, userdata_subdir, - userdata_subdir_unix, program_title, program_title, program_icon_file, @@ -5682,7 +5698,7 @@ int main(int argc, char *argv[]) InitExitFunction(CloseAllAndExit); InitPlatformDependentStuff(); - GetOptions(argv, print_usage, print_version); + GetOptions(argc, argv, print_usage, print_version); OpenAll(); EventLoop();