level->field[ply2->x_initial - 1][ply2->y_initial - 1] = EL_PLAYER_2;
level->field[ply1->x_initial - 1][ply1->y_initial - 1] = EL_PLAYER_1;
-#if 1
+#if 0
printf("::: native Emerald Mine file version: %d\n", level_em->file_version);
#endif
}
break;
}
+ /* if level file is invalid, restore level structure to default values */
+ if (level->no_valid_file)
+ setLevelInfoToDefaults(level);
+
if (level->game_engine_type == GAME_ENGINE_TYPE_UNKNOWN)
level->game_engine_type = GAME_ENGINE_TYPE_RND;
- CopyNativeLevel_Native_to_RND(level);
+ if (level_file_info->type == LEVEL_FILE_TYPE_RND)
+ CopyNativeLevel_RND_to_Native(level);
+ else
+ CopyNativeLevel_Native_to_RND(level);
}
void LoadLevelFromFilename(struct LevelInfo *level, char *filename)
{
char *value = getHashEntry(element_hash, list->token);
- if (value)
+ if (value == NULL) /* try to find obsolete token mapping */
+ {
+ char *mapped_token = get_mapped_token(list->token);
+
+ if (mapped_token != NULL)
+ {
+ value = getHashEntry(element_hash, mapped_token);
+
+ free(mapped_token);
+ }
+ }
+
+ if (value != NULL)
{
(*elements)[(*num_elements)++] = atoi(value);
}