projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f652f5f
)
changed initializing CE properties to older versions only for CE levels
author
Holger Schemel
<info@artsoft.org>
Wed, 1 Mar 2017 08:21:00 +0000
(09:21 +0100)
committer
Holger Schemel
<info@artsoft.org>
Fri, 23 Mar 2018 22:21:09 +0000
(23:21 +0100)
src/files.c
patch
|
blob
|
history
src/main.h
patch
|
blob
|
history
diff --git
a/src/files.c
b/src/files.c
index 57a1cb37f615ef9646b73e6bf8c6d183743c0dcc..a803819762d3daca9157ef986524a5e7d32a2480 100644
(file)
--- a/
src/files.c
+++ b/
src/files.c
@@
-1638,6
+1638,9
@@
static void setLevelInfoToDefaults_Level(struct LevelInfo *level)
BorderElement = EL_STEELWALL;
BorderElement = EL_STEELWALL;
+ /* detect custom elements when loading them */
+ level->file_has_custom_elements = FALSE;
+
/* set all bug compatibility flags to "false" => do not emulate this bug */
level->use_action_after_change_bug = FALSE;
/* set all bug compatibility flags to "false" => do not emulate this bug */
level->use_action_after_change_bug = FALSE;
@@
-2582,6
+2585,8
@@
static int LoadLevel_CUS1(File *file, int chunk_size, struct LevelInfo *level)
element_info[element].push_delay_random = 8;
}
element_info[element].push_delay_random = 8;
}
+ level->file_has_custom_elements = TRUE;
+
return chunk_size;
}
return chunk_size;
}
@@
-2608,6
+2613,8
@@
static int LoadLevel_CUS2(File *file, int chunk_size, struct LevelInfo *level)
Error(ERR_WARN, "invalid custom element number %d", element);
}
Error(ERR_WARN, "invalid custom element number %d", element);
}
+ level->file_has_custom_elements = TRUE;
+
return chunk_size;
}
return chunk_size;
}
@@
-2699,6
+2706,8
@@
static int LoadLevel_CUS3(File *file, int chunk_size, struct LevelInfo *level)
ei->modified_settings = TRUE;
}
ei->modified_settings = TRUE;
}
+ level->file_has_custom_elements = TRUE;
+
return chunk_size;
}
return chunk_size;
}
@@
-2847,6
+2856,8
@@
static int LoadLevel_CUS4(File *file, int chunk_size, struct LevelInfo *level)
/* mark this custom element as modified */
ei->modified_settings = TRUE;
/* mark this custom element as modified */
ei->modified_settings = TRUE;
+ level->file_has_custom_elements = TRUE;
+
return chunk_size;
}
return chunk_size;
}
@@
-2891,6
+2902,8
@@
static int LoadLevel_GRP1(File *file, int chunk_size, struct LevelInfo *level)
/* mark this group element as modified */
element_info[element].modified_settings = TRUE;
/* mark this group element as modified */
element_info[element].modified_settings = TRUE;
+ level->file_has_custom_elements = TRUE;
+
return chunk_size;
}
return chunk_size;
}
@@
-3183,6
+3196,8
@@
static int LoadLevel_CUSX(File *file, int chunk_size, struct LevelInfo *level)
break;
}
break;
}
+ level->file_has_custom_elements = TRUE;
+
return real_chunk_size;
}
return real_chunk_size;
}
@@
-3208,6
+3223,8
@@
static int LoadLevel_GRPX(File *file, int chunk_size, struct LevelInfo *level)
*ei = xx_ei;
*group = xx_group;
*ei = xx_ei;
*group = xx_group;
+ level->file_has_custom_elements = TRUE;
+
return real_chunk_size;
}
return real_chunk_size;
}
@@
-6304,9
+6321,25
@@
static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename)
level->em_explodes_by_fire = TRUE;
}
level->em_explodes_by_fire = TRUE;
}
-static void LoadLevel_Init
Elements(struct LevelInfo *level, char *filename
)
+static void LoadLevel_Init
StandardElements(struct LevelInfo *level
)
{
{
- int i, j, x, y;
+ int i, x, y;
+
+ /* map elements that have changed in newer versions */
+ level->amoeba_content = getMappedElementByVersion(level->amoeba_content,
+ level->game_version);
+ for (i = 0; i < MAX_ELEMENT_CONTENTS; i++)
+ for (x = 0; x < 3; x++)
+ for (y = 0; y < 3; y++)
+ level->yamyam_content[i].e[x][y] =
+ getMappedElementByVersion(level->yamyam_content[i].e[x][y],
+ level->game_version);
+
+}
+
+static void LoadLevel_InitCustomElements(struct LevelInfo *level)
+{
+ int i, j;
/* map custom element change events that have changed in newer versions
(these following values were accidentally changed in version 3.0.1)
/* map custom element change events that have changed in newer versions
(these following values were accidentally changed in version 3.0.1)
@@
-6419,20
+6452,20
@@
static void LoadLevel_InitElements(struct LevelInfo *level, char *filename)
}
}
}
}
}
}
+}
- /* map elements that have changed in newer versions */
- level->amoeba_content = getMappedElementByVersion(level->amoeba_content,
-
level->game_version
);
- for (i = 0; i < MAX_ELEMENT_CONTENTS; i++)
-
for (x = 0; x < 3; x++
)
- for (y = 0; y < 3; y++)
- level->yamyam_content[i].e[x][y] =
- getMappedElementByVersion(level->yamyam_content[i].e[x][y],
-
level->game_version);
+static void LoadLevel_InitElements(struct LevelInfo *level, char *filename)
+{
+
LoadLevel_InitStandardElements(level
);
+
+
if (level->file_has_custom_elements
)
+ LoadLevel_InitCustomElements(level);
+
+ if (level->file_has_custom_elements)
+
InitElementPropertiesAfterLoading(
level->game_version);
/* initialize element properties for level editor etc. */
InitElementPropertiesEngine(level->game_version);
/* initialize element properties for level editor etc. */
InitElementPropertiesEngine(level->game_version);
- InitElementPropertiesAfterLoading(level->game_version);
InitElementPropertiesGfxElement();
}
InitElementPropertiesGfxElement();
}
diff --git
a/src/main.h
b/src/main.h
index b535fed953f1dd34de643eb4a5706a86630ceca3..336fe8c9a806eb1493c343759489d395874a3d33 100644
(file)
--- a/
src/main.h
+++ b/
src/main.h
@@
-3027,6
+3027,8
@@
struct LevelInfo
boolean use_custom_template; /* use custom properties from template file */
boolean use_custom_template; /* use custom properties from template file */
+ boolean file_has_custom_elements; /* set when level file contains CEs */
+
boolean no_valid_file; /* set when level file missing or invalid */
boolean no_level_file; /* set when falling back to level template */
boolean no_valid_file; /* set when level file missing or invalid */
boolean no_level_file; /* set when falling back to level template */