1 /* 2000-08-10T16:43:50Z
9 struct LevelInfo_EM native_em_level;
11 void setLevelInfoToDefaults_EM(void)
15 native_em_level.file_version = FILE_VERSION_EM_ACTUAL;
16 native_em_level.cav = &cav;
19 for (i = 0; i < MAX_PLAYERS; i++)
20 game_em.ply[i] = &ply[i];
25 for (i = 0; i < MAX_PLAYERS; i++)
40 cav.emerald_score = 0;
41 cav.diamond_score = 0;
42 cav.dynamite_score = 0;
45 cav.magnify_score = 0;
48 cav.android_move_time = 0;
49 cav.android_clone_time= 0;
52 cav.wonderwall_time = 0;
59 cav.wind_direction = 0;
63 cav.wonderwall_state = 0;
69 cav.num_ball_arrays = 8;
71 for (i = 0; i < 8; i++)
72 for (j = 0; j < 9; j++)
73 cav.eater_array[i][j] = Cblank;
75 for (i = 0; i < 8; i++)
76 for (j = 0; j < 8; j++)
77 cav.ball_array[i][j] = Cblank;
79 for (i = 0; i < TILE_MAX; i++)
80 cav.android_array[i] = Cblank;
82 for (x = 0; x < CAVE_WIDTH; x++)
83 for (y = 0; y < CAVE_HEIGHT; y++)
84 cav.cave[x][y] = Cblank;
90 * completely initializes the level structure, ready for a game
93 #define MAX_EM_LEVEL_SIZE 16384
95 boolean LoadNativeLevel_EM(char *filename, boolean level_info_only)
97 unsigned char raw_leveldata[MAX_EM_LEVEL_SIZE];
98 int raw_leveldata_length;
102 /* always start with reliable default values */
103 setLevelInfoToDefaults_EM();
105 if (!(file = openFile(filename, MODE_READ)))
107 if (!level_info_only)
108 Error(ERR_WARN, "cannot open level '%s' -- using empty level", filename);
113 raw_leveldata_length = readFile(file, raw_leveldata, 1, MAX_EM_LEVEL_SIZE);
117 if (raw_leveldata_length <= 0)
119 Error(ERR_WARN, "cannot read level '%s' -- using empty level", filename);
124 file_version = cleanup_em_level(raw_leveldata, raw_leveldata_length,filename);
126 if (file_version == FILE_VERSION_EM_UNKNOWN)
128 Error(ERR_WARN, "unknown EM level '%s' -- using empty level", filename);
133 convert_em_level(raw_leveldata, file_version);