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;
61 cav.num_ball_arrays = 8;
67 cav.ball_random = FALSE;
68 cav.ball_active = FALSE;
69 cav.wonderwall_active = FALSE;
70 cav.wheel_active = FALSE;
71 cav.lenses_active = FALSE;
72 cav.magnify_active = FALSE;
74 for (i = 0; i < 8; i++)
75 for (j = 0; j < 9; j++)
76 cav.eater_array[i][j] = Cblank;
78 for (i = 0; i < 8; i++)
79 for (j = 0; j < 8; j++)
80 cav.ball_array[i][j] = Cblank;
82 for (i = 0; i < GAME_TILE_MAX; i++)
83 cav.android_array[i] = Cblank;
85 for (x = 0; x < CAVE_WIDTH; x++)
86 for (y = 0; y < CAVE_HEIGHT; y++)
87 cav.cave[x][y] = Cblank;
93 * completely initializes the level structure, ready for a game
96 #define MAX_EM_LEVEL_SIZE 16384
98 boolean LoadNativeLevel_EM(char *filename, boolean level_info_only)
100 unsigned char raw_leveldata[MAX_EM_LEVEL_SIZE];
101 int raw_leveldata_length;
105 /* always start with reliable default values */
106 setLevelInfoToDefaults_EM();
108 if (!(file = openFile(filename, MODE_READ)))
110 if (!level_info_only)
111 Error(ERR_WARN, "cannot open level '%s' -- using empty level", filename);
116 raw_leveldata_length = readFile(file, raw_leveldata, 1, MAX_EM_LEVEL_SIZE);
120 if (raw_leveldata_length <= 0)
122 Error(ERR_WARN, "cannot read level '%s' -- using empty level", filename);
127 file_version = cleanup_em_level(raw_leveldata, raw_leveldata_length,filename);
129 if (file_version == FILE_VERSION_EM_UNKNOWN)
131 Error(ERR_WARN, "unknown EM level '%s' -- using empty level", filename);
136 convert_em_level(raw_leveldata, file_version);