X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.c;h=79390657382cccc35e86959196d1ae3d2f28b686;hb=50e762bca8b7cbca1d0a12674b559e81a4f2c3f9;hp=0788345993944f363825f4ca4744ae852812f5b8;hpb=84b4d1874b7dfed42ace079941a65baea0ac4ff6;p=rocksndiamonds.git diff --git a/src/main.c b/src/main.c index 07883459..79390657 100644 --- a/src/main.c +++ b/src/main.c @@ -21,7 +21,6 @@ #include "config.h" Bitmap *bitmap_db_field; -Bitmap *bitmap_db_panel; Bitmap *bitmap_db_door_1; Bitmap *bitmap_db_door_2; Bitmap *bitmap_db_store_1; @@ -125,7 +124,8 @@ int BX2, BY2; int SBX_Left, SBX_Right; int SBY_Upper, SBY_Lower; -int TimeFrames, TimePlayed, TimeLeft, TapeTime; +int TimeFrames, TimePlayed, TimeLeft; +int TapeTimeFrames, TapeTime; boolean network_player_action_received = FALSE; @@ -174,10 +174,12 @@ struct HelpAnimInfo *helpanim_info = NULL; SetupFileHash *helptext_info = NULL; SetupFileHash *image_config_hash = NULL; +SetupFileHash *sound_config_hash = NULL; SetupFileHash *element_token_hash = NULL; SetupFileHash *graphic_token_hash = NULL; SetupFileHash *font_token_hash = NULL; SetupFileHash *hide_setup_hash = NULL; +SetupFileHash *anim_url_hash = NULL; // ---------------------------------------------------------------------------- @@ -4663,7 +4665,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "mm_kettle", "mm_kettle", - "magic kettle" + "magic cauldron" }, { "mm_bomb", @@ -5218,17 +5220,17 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "mm_mirror_fixed_2", "mm_mirror_fixed", - "fixed mirror (0\xb0)" + "fixed mirror (45\xb0)" }, { "mm_mirror_fixed_3", "mm_mirror_fixed", - "fixed mirror (0\xb0)" + "fixed mirror (90\xb0)" }, { "mm_mirror_fixed_4", "mm_mirror_fixed", - "fixed mirror (0\xb0)" + "fixed mirror (135\xb0)" }, { "mm_steel_lock", @@ -5296,24 +5298,24 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "extra energy ball (empty)" }, { - "mm_unused_156", - "unused", - "(not used)" + "mm_envelope_1", + "mm_envelope", + "mail envelope 1 (MM style)" }, { - "mm_unused_157", - "unused", - "(not used)" + "mm_envelope_2", + "mm_envelope", + "mail envelope 2 (MM style)" }, { - "mm_unused_158", - "unused", - "(not used)" + "mm_envelope_3", + "mm_envelope", + "mail envelope 3 (MM style)" }, { - "mm_unused_159", - "unused", - "(not used)" + "mm_envelope_4", + "mm_envelope", + "mail envelope 4 (MM style)" }, { "df_mirror_1", @@ -5398,82 +5400,82 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "df_wooden_grid_fixed_1", "df_wooden_grid_fixed", - "fixed wooden polarizer (0\xb0)" + "fixed wooden polarizer (DF) (0\xb0)" }, { "df_wooden_grid_fixed_2", "df_wooden_grid_fixed", - "fixed wooden polarizer (22.5\xb0)" + "fixed wooden polarizer (DF) (22.5\xb0)" }, { "df_wooden_grid_fixed_3", "df_wooden_grid_fixed", - "fixed wooden polarizer (45\xb0)" + "fixed wooden polarizer (DF) (45\xb0)" }, { "df_wooden_grid_fixed_4", "df_wooden_grid_fixed", - "fixed wooden polarizer (67.5\xb0)" + "fixed wooden polarizer (DF) (67.5\xb0)" }, { "df_wooden_grid_fixed_5", "df_wooden_grid_fixed", - "fixed wooden polarizer (90\xb0)" + "fixed wooden polarizer (DF) (90\xb0)" }, { "df_wooden_grid_fixed_6", "df_wooden_grid_fixed", - "fixed wooden polarizer (112.5\xb0)" + "fixed wooden polarizer (DF) (112.5\xb0)" }, { "df_wooden_grid_fixed_7", "df_wooden_grid_fixed", - "fixed wooden polarizer (135\xb0)" + "fixed wooden polarizer (DF) (135\xb0)" }, { "df_wooden_grid_fixed_8", "df_wooden_grid_fixed", - "fixed wooden polarizer (157.5\xb0)" + "fixed wooden polarizer (DF) (157.5\xb0)" }, { "df_steel_grid_fixed_1", "df_steel_grid_fixed", - "fixed steel polarizer (0\xb0)" + "fixed steel polarizer (DF) (0\xb0)" }, { "df_steel_grid_fixed_2", "df_steel_grid_fixed", - "fixed steel polarizer (22.5\xb0)" + "fixed steel polarizer (DF) (22.5\xb0)" }, { "df_steel_grid_fixed_3", "df_steel_grid_fixed", - "fixed steel polarizer (45\xb0)" + "fixed steel polarizer (DF) (45\xb0)" }, { "df_steel_grid_fixed_4", "df_steel_grid_fixed", - "fixed steel polarizer (67.5\xb0)" + "fixed steel polarizer (DF) (67.5\xb0)" }, { "df_steel_grid_fixed_5", "df_steel_grid_fixed", - "fixed steel polarizer (90\xb0)" + "fixed steel polarizer (DF) (90\xb0)" }, { "df_steel_grid_fixed_6", "df_steel_grid_fixed", - "fixed steel polarizer (112.5\xb0)" + "fixed steel polarizer (DF) (112.5\xb0)" }, { "df_steel_grid_fixed_7", "df_steel_grid_fixed", - "fixed steel polarizer (135\xb0)" + "fixed steel polarizer (DF) (135\xb0)" }, { "df_steel_grid_fixed_8", "df_steel_grid_fixed", - "fixed steel polarizer (157.5\xb0)" + "fixed steel polarizer (DF) (157.5\xb0)" }, { "df_wooden_wall_1", @@ -6360,6 +6362,766 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "empty_space", "empty space 16" }, + { + "df_mirror_fixed_1", + "df_mirror_fixed", + "fixed mirror (DF style) (0\xb0)" + }, + { + "df_mirror_fixed_2", + "df_mirror_fixed", + "fixed mirror (DF style) (11.25\xb0)" + }, + { + "df_mirror_fixed_3", + "df_mirror_fixed", + "fixed mirror (DF style) (22.5\xb0)" + }, + { + "df_mirror_fixed_4", + "df_mirror_fixed", + "fixed mirror (DF style) (33.75\xb0)" + }, + { + "df_mirror_fixed_5", + "df_mirror_fixed", + "fixed mirror (DF style) (45\xb0)" + }, + { + "df_mirror_fixed_6", + "df_mirror_fixed", + "fixed mirror (DF style) (56.25\xb0)" + }, + { + "df_mirror_fixed_7", + "df_mirror_fixed", + "fixed mirror (DF style) (67.5\xb0)" + }, + { + "df_mirror_fixed_8", + "df_mirror_fixed", + "fixed mirror (DF style) (78.75\xb0)" + }, + { + "df_mirror_fixed_9", + "df_mirror_fixed", + "fixed mirror (DF style) (90\xb0)" + }, + { + "df_mirror_fixed_10", + "df_mirror_fixed", + "fixed mirror (DF style) (101.25\xb0)" + }, + { + "df_mirror_fixed_11", + "df_mirror_fixed", + "fixed mirror (DF style) (112.5\xb0)" + }, + { + "df_mirror_fixed_12", + "df_mirror_fixed", + "fixed mirror (DF style) (123.75\xb0)" + }, + { + "df_mirror_fixed_13", + "df_mirror_fixed", + "fixed mirror (DF style) (135\xb0)" + }, + { + "df_mirror_fixed_14", + "df_mirror_fixed", + "fixed mirror (DF style) (146.25\xb0)" + }, + { + "df_mirror_fixed_15", + "df_mirror_fixed", + "fixed mirror (DF style) (157.5\xb0)" + }, + { + "df_mirror_fixed_16", + "df_mirror_fixed", + "fixed mirror (DF style) (168.75\xb0)" + }, + { + "df_slope_1", + "df_slope", + "slope (DF style) (45\xb0)" + }, + { + "df_slope_2", + "df_slope", + "slope (DF style) (135\xb0)" + }, + { + "df_slope_3", + "df_slope", + "slope (DF style) (225\xb0)" + }, + { + "df_slope_4", + "df_slope", + "slope (DF style) (315\xb0)" + }, + { + "bd_player", + "bd_player", + "player" + }, + { + "bd_sand", + "bd_sand", + "sand" + }, + { + "bd_sand_2", + "bd_sand", + "sand (alternative)" + }, + { + "bd_sand_ball", + "bd_sand_ball", + "sand ball" + }, + { + "bd_sand_loose", + "bd_sand_loose", + "sand (loose)" + }, + { + "bd_sand_sloped_up_right", + "bd_sand_sloped", + "sand (sloped up right)" + }, + { + "bd_sand_sloped_up_left", + "bd_sand_sloped", + "sand (sloped up left)" + }, + { + "bd_sand_sloped_down_left", + "bd_sand_sloped", + "sand (sloped down left)" + }, + { + "bd_sand_sloped_down_right", + "bd_sand_sloped", + "sand (sloped down right)" + }, + { + "bd_sand_glued", + "bd_sane_glued", + "glued sand" + }, + { + "bd_wall_sloped_up_right", + "bd_wall_sloped", + "wall (sloped up right)" + }, + { + "bd_wall_sloped_up_left", + "bd_wall_sloped", + "wall (sloped up left)" + }, + { + "bd_wall_sloped_down_left", + "bd_wall_sloped", + "wall (sloped down left)" + }, + { + "bd_wall_sloped_down_right", + "bd_wall_sloped", + "wall (sloped down right)" + }, + { + "bd_wall_non_sloped", + "bd_wall", + "wall (non sloped)" + }, + { + "bd_wall_diggable", + "bd_wall_diggable", + "diggable wall" + }, + { + "bd_wall_diamond", + "bd_wall", + "wall with diamond" + }, + { + "bd_wall_key_1", + "bd_wall_key", + "wall with key 1" + }, + { + "bd_wall_key_2", + "bd_wall_key", + "wall with key 2" + }, + { + "bd_wall_key_3", + "bd_wall_key", + "wall with key 3" + }, + { + "bd_falling_wall", + "bd_falling_wall", + "falling wall" + }, + { + "bd_steelwall", + "bd_steelwall", + "steel wall" + }, + { + "bd_steelwall_sloped_up_right", + "bd_steelwall_sloped", + "steel wall (sloped up right)" + }, + { + "bd_steelwall_sloped_up_left", + "bd_steelwall_sloped", + "steel wall (sloped up left)" + }, + { + "bd_steelwall_sloped_down_left", + "bd_steelwall_sloped", + "steel wall (sloped down left)" + }, + { + "bd_steelwall_sloped_down_right", + "bd_steelwall_sloped", + "steel wall (sloped down right)" + }, + { + "bd_steelwall_explodable", + "bd_steelwall_explodable", + "explodable steel wall" + }, + { + "bd_steelwall_diggable", + "bd_steelwall_diggable", + "diggable steel wall" + }, + { + "bd_expandable_wall_horizontal", + "bd_expandable_wall", + "expandable wall (horizontal)" + }, + { + "bd_expandable_wall_vertical", + "bd_expandable_wall", + "expandable wall (vertical)" + }, + { + "bd_expandable_wall_any", + "bd_expandable_wall", + "expandable wall (any direction)" + }, + { + "bd_expandable_steelwall_horizontal", + "bd_expandable_steelwall", + "expandable steelwall (horizontal)" + }, + { + "bd_expandable_steelwall_vertical", + "bd_expandable_steelwall", + "expandable steelwall (vertical)" + }, + { + "bd_expandable_steelwall_any", + "bd_expandable_steelwall", + "expandable steelwall (any direction)" + }, + { + "bd_expandable_wall_switch_horizontal", + "bd_expandable_wall_switch", + "switch for expandable wall (horizontal)" + }, + { + "bd_expandable_wall_switch_vertical", + "bd_expandable_wall_switch", + "switch for expandable wall (vertical)" + }, + { + "bd_inbox", + "bd_inbox", + "inbox" + }, + { + "bd_exit_closed", + "bd_exit", + "closed exit" + }, + { + "bd_exit_open", + "bd_exit", + "open exit" + }, + { + "bd_invisible_exit_closed", + "bd_invisible_exit", + "invisible exit (closed)" + }, + { + "bd_invisible_exit_open", + "bd_invisible_exit", + "invisible exit (open)" + }, + { + "bd_flying_rock", + "bd_flying_rock", + "flying rock" + }, + { + "bd_mega_rock", + "bd_mega_rock", + "mega rock" + }, + { + "bd_rock_glued", + "bd_rock_glued", + "glued rock" + }, + { + "bd_flying_diamond", + "bd_flying_diamond", + "flying diamond" + }, + { + "bd_diamond_glued", + "bd_diamond_glued", + "glued diamond" + }, + { + "bd_diamond_key", + "bd_diamond_key", + "diamond key" + }, + { + "bd_trapped_diamond", + "bd_trapped_diamond", + "trapped diamond" + }, + { + "bd_nut", + "bd_nut", + "nut with diamond" + }, + { + "bd_amoeba_2", + "bd_amoeba", + "amoeba (alternative)" + }, + { + "bd_bladder", + "bd_bladder", + "bladder" + }, + { + "bd_bladder_spender", + "bd_bladder_spender", + "bladder spender" + }, + { + "bd_creature_switch", + "bd_creature_switch", + "switch for creature (off)" + }, + { + "bd_creature_switch.active", + "bd_creature_switch", + "switch for creature (on)" + }, + { + "bd_biter_switch_1", + "bd_biter_switch", + "switch for biter" + }, + { + "bd_biter_switch_2", + "bd_biter_switch", + "switch for biter" + }, + { + "bd_biter_switch_3", + "bd_biter_switch", + "switch for biter" + }, + { + "bd_biter_switch_4", + "bd_biter_switch", + "switch for biter" + }, + { + "bd_replicator", + "bd_replicator", + "replicator" + }, + { + "bd_replicator.active", + "bd_replicator", + "replicator (active)" + }, + { + "bd_replicator_switch", + "bd_replicator_switch", + "switch for replicator (off)" + }, + { + "bd_replicator_switch.active", + "bd_replicator_switch", + "switch for replicator (on)" + }, + { + "bd_conveyor_left", + "bd_conveyor", + "conveyor belt (left)" + }, + { + "bd_conveyor_left.active", + "bd_conveyor", + "conveyor belt (left) (active)" + }, + { + "bd_conveyor_right", + "bd_conveyor", + "conveyor belt (right)" + }, + { + "bd_conveyor_right.active", + "bd_conveyor", + "conveyor belt (right) (active)" + }, + { + "bd_conveyor_switch", + "bd_conveyor_switch", + "switch for conveyor belt (off)" + }, + { + "bd_conveyor_switch.active", + "bd_conveyor_switch", + "switch for conveyor belt (on)" + }, + { + "bd_conveyor_dir_switch_left", + "bd_conveyor_dir_switch", + "switch for conveyor belt direction (left)" + }, + { + "bd_conveyor_dir_switch_right", + "bd_conveyor_dir_switch", + "switch for conveyor belt direction (right)" + }, + { + "bd_gravity_switch", + "bd_gravity_switch", + "gravity switch" + }, + { + "bd_gravity_switch.active", + "bd_gravity_switch", + "gravity switch (active)" + }, + { + "bd_acid", + "bd_acid", + "acid" + }, + { + "bd_box", + "bd_box", + "box" + }, + { + "bd_time_penalty", + "bd_time_penalty", + "time penalty" + }, + { + "bd_gravestone", + "bd_gravestone", + "gravestone" + }, + { + "bd_clock", + "bd_clock", + "clock" + }, + { + "bd_pot", + "bd_pot", + "pot" + }, + { + "bd_pneumatic_hammer", + "bd_pneumatic_hammer", + "pneumatic hammer" + }, + { + "bd_teleporter", + "bd_teleporter", + "teleporter" + }, + { + "bd_skeleton", + "bd_skeleton", + "skeleton" + }, + { + "bd_water", + "bd_water", + "water" + }, + { + "bd_key_1", + "bd_key", + "key 1" + }, + { + "bd_key_2", + "bd_key", + "key 2" + }, + { + "bd_key_3", + "bd_key", + "key 3" + }, + { + "bd_gate_1", + "bd_gate", + "door 1" + }, + { + "bd_gate_2", + "bd_gate", + "door 2" + }, + { + "bd_gate_3", + "bd_gate", + "door 3" + }, + { + "bd_lava", + "bd_lava", + "lava" + }, + { + "bd_sweet", + "bd_sweet", + "sweet" + }, + { + "bd_voodoo_doll", + "bd_voodoo_doll", + "voodoo doll" + }, + { + "bd_slime", + "bd_slime", + "slime" + }, + { + "bd_waiting_rock", + "bd_waiting_rock", + "waiting rock" + }, + { + "bd_chasing_rock", + "bd_chasing_rock", + "chasing rock" + }, + { + "bd_ghost", + "bd_ghost", + "ghost" + }, + { + "bd_cow", + "bd_cow", + "cow (random start direction)" + }, + { + "bd_cow.left", + "bd_cow", + "cow (starts moving left)" + }, + { + "bd_cow.up", + "bd_cow", + "cow (starts moving up)" + }, + { + "bd_cow.right", + "bd_cow", + "cow (starts moving right)" + }, + { + "bd_cow.down", + "bd_cow", + "cow (starts moving down)" + }, + { + "bd_butterfly_2", + "bd_butterfly", + "butterfly (alternative, random start direction)" + }, + { + "bd_butterfly_2.right", + "bd_butterfly", + "butterfly (alternative, starts moving right)" + }, + { + "bd_butterfly_2.up", + "bd_butterfly", + "butterfly (alternative, starts moving up)" + }, + { + "bd_butterfly_2.left", + "bd_butterfly", + "butterfly (alternative, starts moving left)" + }, + { + "bd_butterfly_2.down", + "bd_butterfly", + "butterfly (alternative, starts moving down)" + }, + { + "bd_firefly_2.right", + "bd_firefly", + "firefly (alternative, starts moving right)" + }, + { + "bd_firefly_2", + "bd_firefly", + "firefly (alternative, random start direction)" + }, + { + "bd_firefly_2.up", + "bd_firefly", + "firefly (alternative, starts moving up)" + }, + { + "bd_firefly_2.left", + "bd_firefly", + "firefly (alternative, starts moving left)" + }, + { + "bd_firefly_2.down", + "bd_firefly", + "firefly (alternative, starts moving down)" + }, + { + "bd_stonefly", + "bd_stonefly", + "stonefly (random start direction)" + }, + { + "bd_stonefly.right", + "bd_stonefly", + "stonefly (starts moving right)" + }, + { + "bd_stonefly.up", + "bd_stonefly", + "stonefly (starts moving up)" + }, + { + "bd_stonefly.left", + "bd_stonefly", + "stonefly (starts moving left)" + }, + { + "bd_stonefly.down", + "bd_stonefly", + "stonefly (starts moving down)" + }, + { + "bd_biter", + "bd_biter", + "biter (random start direction)" + }, + { + "bd_biter.right", + "bd_biter", + "biter (starts moving right)" + }, + { + "bd_biter.up", + "bd_biter", + "biter (starts moving up)" + }, + { + "bd_biter.left", + "bd_biter", + "biter (starts moving left)" + }, + { + "bd_biter.down", + "bd_biter", + "biter (starts moving down)" + }, + { + "bd_dragonfly", + "bd_dragonfly", + "dragonfly (random start direction)" + }, + { + "bd_dragonfly.right", + "bd_dragonfly", + "dragonfly (starts moving right)" + }, + { + "bd_dragonfly.up", + "bd_dragonfly", + "dragonfly (starts moving up)" + }, + { + "bd_dragonfly.left", + "bd_dragonfly", + "dragonfly (starts moving left)" + }, + { + "bd_dragonfly.down", + "bd_dragonfly", + "dragonfly (starts moving down)" + }, + { + "bd_bomb", + "bd_bomb", + "bomb" + }, + { + "bd_nitro_pack", + "bd_nitro_pack", + "nitro pack" + }, + { + "bd_player_with_bomb", + "bd_player", + "player with bomb", + }, + { + "bd_player_glued", + "bd_player", + "glued player", + }, + { + "bd_player_stirring", + "bd_player", + "stirring player" + }, + { + "bd_fake_bonus", + "bd_fake_bonus", + "fake bonus" + }, + { + "bd_covered", + "bd_covered", + "covered" + }, // -------------------------------------------------------------------------- // "real" (and therefore drawable) runtime elements @@ -6736,6 +7498,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "mm_exit", "-" }, + { + "mm_gray_ball.active", + "mm_gray_ball", + "-", + }, { "mm_gray_ball.opening", "mm_gray_ball", @@ -6771,6 +7538,16 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "mm_pacman", "pac man (eating down)" }, + { + "mm_bomb.active", + "mm_bomb", + "active bomb (MM style)" + }, + { + "df_mine.active", + "df_mine", + "active mine" + }, // -------------------------------------------------------------------------- // "unreal" (and therefore not drawable) runtime elements @@ -7021,56 +7798,6 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "-", "-" }, - { - "mm_mask_mcduffin.right", - "-", - "-" - }, - { - "mm_mask_mcduffin.up", - "-", - "-" - }, - { - "mm_mask_mcduffin.left", - "-", - "-" - }, - { - "mm_mask_mcduffin.down", - "-", - "-" - }, - { - "mm_mask_grid_1", - "-", - "-" - }, - { - "mm_mask_grid_2", - "-", - "-" - }, - { - "mm_mask_grid_3", - "-", - "-" - }, - { - "mm_mask_grid_4", - "-", - "-" - }, - { - "mm_mask_rectangle", - "-", - "-" - }, - { - "mm_mask_circle", - "-", - "-" - }, { "[default]", "default", @@ -7166,6 +7893,16 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "internal", "hide Boulder Dash elements" }, + { + "internal_cascade_bd_native", + "internal", + "show native Boulder Dash elements" + }, + { + "internal_cascade_bd_native.active", + "internal", + "hide native Boulder Dash elements" + }, { "internal_cascade_em", "internal", @@ -7579,6 +8316,7 @@ struct FontInfo font_info[NUM_FONTS + 1] = { "font.envelope_2" }, { "font.envelope_3" }, { "font.envelope_4" }, + { "font.request_narrow" }, { "font.request" }, { "font.input_1.active" }, { "font.input_2.active" }, @@ -7709,10 +8447,11 @@ static void print_usage(void) "\n" "Options:\n" " -b, --basepath DIRECTORY alternative base DIRECTORY\n" - " -l, --level DIRECTORY alternative level DIRECTORY\n" + " -l, --levels DIRECTORY alternative levels DIRECTORY\n" " -g, --graphics DIRECTORY alternative graphics DIRECTORY\n" " -s, --sounds DIRECTORY alternative sounds DIRECTORY\n" " -m, --music DIRECTORY alternative music DIRECTORY\n" + " --display NR open program window on display NR\n" " --mytapes use private tapes for tape tests\n" " -n, --network network multiplayer game\n" " --serveronly only start network server\n" @@ -7795,33 +8534,13 @@ static void InitProgramConfig(char *command_filename) char *program_title = PROGRAM_TITLE_STRING; char *program_icon_file = PROGRAM_ICON_FILENAME; char *program_version = getProgramRealVersionString(); + char *program_basename = getBaseNameNoSuffix(command_filename); char *config_filename = getProgramConfigFilename(command_filename); - char *userdata_basename = getBaseNameNoSuffix(command_filename); char *userdata_subdir; -#if defined(PLATFORM_UNIX) - char *userdata_subdir_unix; -#endif // read default program config, if existing if (fileExists(config_filename)) - { - // if program config file exists, derive Unix user data directory from it - // (but only if the program config file is not generic "setup.conf" file) - if (!strEqual(getBaseNamePtr(config_filename), SETUP_FILENAME)) - { - userdata_basename = getBaseName(config_filename); - - if (strSuffix(userdata_basename, ".conf")) - userdata_basename[strlen(userdata_basename) - 5] = '\0'; - } - LoadSetupFromFilename(config_filename); - } - -#if defined(PLATFORM_UNIX) - // set user data directory for Linux/Unix (but not Mac OS X) - userdata_subdir_unix = getStringCat2(".", userdata_basename); -#endif // set program title from potentially redefined program title if (setup.internal.program_title != NULL && @@ -7838,10 +8557,10 @@ static void InitProgramConfig(char *command_filename) strlen(setup.internal.program_icon_file) > 0) program_icon_file = getStringCopy(setup.internal.program_icon_file); -#if defined(PLATFORM_WIN32) || defined(PLATFORM_MACOSX) +#if defined(PLATFORM_WINDOWS) || defined(PLATFORM_MAC) || defined(PLATFORM_EMSCRIPTEN) userdata_subdir = program_title; #elif defined(PLATFORM_UNIX) - userdata_subdir = userdata_subdir_unix; + userdata_subdir = getStringCat2(".", program_basename); #else userdata_subdir = USERDATA_DIRECTORY_OTHER; #endif @@ -7857,7 +8576,7 @@ static void InitProgramConfig(char *command_filename) InitProgramInfo(command_filename, config_filename, userdata_subdir, - program_title, + program_basename, program_title, program_icon_file, COOKIE_PREFIX,