X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=020b4d1d5e7607c044f72fc7c851bafcdaad0e16;hb=f07148acec44f0cba1897a2088a1fbf651faf77a;hp=43065f6053070fcc6286a3545ba40f0849c61880;hpb=ba0f8b82068a5c0d6f245efea2b2c04cb3411c8d;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 43065f60..020b4d1d 100644 --- a/src/init.c +++ b/src/init.c @@ -2236,6 +2236,13 @@ static void InitMusicInfo(void) } } + +static void InitGameInfoFromArtworkInfo(void) +{ + // special case: store initial value of custom artwork setting + game.use_masked_elements_initial = game.use_masked_elements; +} + static void ReinitializeGraphics(void) { print_timestamp_init("ReinitializeGraphics"); @@ -2279,6 +2286,8 @@ static void ReinitializeGraphics(void) InitDoors(); print_timestamp_time("InitDoors"); + InitGameInfoFromArtworkInfo(); + print_timestamp_done("ReinitializeGraphics"); } @@ -4747,7 +4756,7 @@ void InitElementPropertiesEngine(int engine_version) // ---------- CAN_BE_CLONED_BY_ANDROID ------------------------------------ for (j = 0; j < level.num_android_clone_elements; j++) SET_PROPERTY(i, EP_CAN_BE_CLONED_BY_ANDROID, - (i != EL_EMPTY && + (!IS_EMPTY(i) && IS_EQUAL_OR_IN_GROUP(i, level.android_clone_element[j]))); // ---------- CAN_CHANGE -------------------------------------------------- @@ -5307,6 +5316,8 @@ static void InitGameInfo(void) game.request_active = FALSE; game.request_active_or_moving = FALSE; + + game.use_masked_elements_initial = FALSE; } static void InitPlayerInfo(void) @@ -6010,10 +6021,8 @@ static void InitOverrideArtwork(void) static char *getNewArtworkIdentifier(int type) { - static char *last_leveldir_identifier[3] = { NULL, NULL, NULL }; static char *last_artwork_identifier[3] = { NULL, NULL, NULL }; static boolean last_override_level_artwork[3] = { FALSE, FALSE, FALSE }; - static boolean last_has_level_artwork_set[3] = { FALSE, FALSE, FALSE }; static boolean initialized[3] = { FALSE, FALSE, FALSE }; TreeInfo *artwork_first_node = ARTWORK_FIRST_NODE(artwork, type); boolean setup_override_artwork = GFX_OVERRIDE_ARTWORK(type); @@ -6021,7 +6030,6 @@ static char *getNewArtworkIdentifier(int type) char *leveldir_identifier = leveldir_current->identifier; // !!! setLevelArtworkDir() should be moved to an earlier stage !!! char *leveldir_artwork_set = setLevelArtworkDir(artwork_first_node); - boolean has_level_artwork_set = (leveldir_artwork_set != NULL); char *artwork_current_identifier; char *artwork_new_identifier = NULL; // default: nothing has changed @@ -6049,14 +6057,6 @@ static char *getNewArtworkIdentifier(int type) /* 2nd step: check if it is really needed to reload artwork set ------------------------------------------------------------ */ - // ---------- reload if level set and also artwork set has changed ---------- - if (last_leveldir_identifier[type] != leveldir_identifier && - (last_has_level_artwork_set[type] || has_level_artwork_set)) - artwork_new_identifier = artwork_current_identifier; - - last_leveldir_identifier[type] = leveldir_identifier; - last_has_level_artwork_set[type] = has_level_artwork_set; - // ---------- reload if "override artwork" setting has changed -------------- if (last_override_level_artwork[type] != setup_override_artwork) artwork_new_identifier = artwork_current_identifier;