native_mm_level.time_bomb = 75;
native_mm_level.time_ball = 75;
native_mm_level.time_block = 75;
- native_mm_level.laser_red = FALSE;
- native_mm_level.laser_green = FALSE;
- native_mm_level.laser_blue = TRUE;
+ native_mm_level.mm_laser_red = FALSE;
+ native_mm_level.mm_laser_green = FALSE;
+ native_mm_level.mm_laser_blue = TRUE;
+ native_mm_level.df_laser_red = TRUE;
+ native_mm_level.df_laser_green = TRUE;
+ native_mm_level.df_laser_blue = FALSE;
for (i = 0; i < MAX_LEVEL_NAME_LEN; i++)
native_mm_level.name[i] = '\0';
for (i = 0; i < LEVEL_SCORE_ELEMENTS; i++)
native_mm_level.score[i] = 10;
+ int ball_content[] =
+ {
+ EL_MIRROR_START,
+ EL_MIRROR_FIXED_START,
+ EL_POLAR_START,
+ EL_POLAR_CROSS_START,
+ EL_PACMAN_START,
+ EL_KETTLE,
+ EL_BOMB,
+ EL_PRISM
+ };
+ int num_ball_contents = sizeof(ball_content) / sizeof(int);
+
+ native_mm_level.num_ball_contents = num_ball_contents;
+ native_mm_level.ball_choice_mode = ANIM_RANDOM;
+
+ for (i = 0; i < num_ball_contents; i++)
+ native_mm_level.ball_content[i] = ball_content[i];
+
native_mm_level.field[0][0] = Ur[0][0] = EL_MCDUFFIN_RIGHT;
native_mm_level.field[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] =
Ur[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] = EL_EXIT_CLOSED;
{
if (element >= EL_FIRST_RUNTIME_EL)
{
- Error(ERR_WARN, "invalid level element %d", element);
+ Warn("invalid level element %d", element);
+
element = EL_CHAR_FRAGE;
}
level->time_fuse = 25;
laser_color = getFile8Bit(file);
- level->laser_red = (laser_color >> 2) & 0x01;
- level->laser_green = (laser_color >> 1) & 0x01;
- level->laser_blue = (laser_color >> 0) & 0x01;
+ level->mm_laser_red = (laser_color >> 2) & 0x01;
+ level->mm_laser_green = (laser_color >> 1) & 0x01;
+ level->mm_laser_blue = (laser_color >> 0) & 0x01;
level->encoding_16bit_field = (getFile8Bit(file) == 1 ? TRUE : FALSE);
if (!(file = openFile(filename, MODE_READ)))
{
if (!level_info_only)
- Error(ERR_WARN, "cannot read level '%s' - creating new level", filename);
+ Warn("cannot read level '%s' - creating new level", filename);
return FALSE;
}
getFileChunk(file, chunk_name, NULL, BYTE_ORDER_BIG_ENDIAN);
if (strcmp(chunk_name, "CAVE") != 0)
{
- Error(ERR_WARN, "unknown format of level file '%s'", filename);
+ Warn("unknown format of level file '%s'", filename);
closeFile(file);
if (!checkCookieString(cookie, LEVEL_COOKIE_TMPL))
{
- Error(ERR_WARN, "unknown format of level file '%s'", filename);
+ Warn("unknown format of level file '%s'", filename);
closeFile(file);
if ((native_mm_level.file_version = getFileVersionFromCookieString(cookie))
== -1)
{
- Error(ERR_WARN, "unsupported version of level file '%s'", filename);
+ Warn("unsupported version of level file '%s'", filename);
closeFile(file);
if (chunk_info[i].name == NULL)
{
- Error(ERR_WARN, "unknown chunk '%s' in level file '%s'",
+ Warn("unknown chunk '%s' in level file '%s'",
chunk_name, filename);
ReadUnusedBytesFromFile(file, chunk_size);
else if (chunk_info[i].size != -1 &&
chunk_info[i].size != chunk_size)
{
- Error(ERR_WARN, "wrong size (%d) of chunk '%s' in level file '%s'",
+ Warn("wrong size (%d) of chunk '%s' in level file '%s'",
chunk_size, chunk_name, filename);
ReadUnusedBytesFromFile(file, chunk_size);
// chunks first (like "HEAD" and "BODY") that contain some header
// information, so check them here
if (chunk_size_expected != chunk_size)
- Error(ERR_WARN, "wrong size (%d) of chunk '%s' in level file '%s'",
+ Warn("wrong size (%d) of chunk '%s' in level file '%s'",
chunk_size, chunk_name, filename);
}
}
fputc(level->amoeba_speed, file);
fputc(level->time_fuse, file);
- laser_color = ((level->laser_red << 2) |
- (level->laser_green << 1) |
- (level->laser_blue << 0));
+ laser_color = ((level->mm_laser_red << 2) |
+ (level->mm_laser_green << 1) |
+ (level->mm_laser_blue << 0));
fputc(laser_color, file);
fputc((level->encoding_16bit_field ? 1 : 0), file);
if (!(file = fopen(filename, MODE_WRITE)))
{
- Error(ERR_WARN, "cannot save level file '%s'", filename);
+ Warn("cannot save level file '%s'", filename);
return;
}