&xx_envelope.ysize, MAX_ENVELOPE_YSIZE,
},
+ {
+ -1, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(3),
+ &xx_envelope.autowrap, FALSE
+ },
+ {
+ -1, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(4),
+ &xx_envelope.centered, FALSE
+ },
+
{
-1, -1,
TYPE_STRING, CONF_VALUE_BYTES(1),
break;
case 0x0e77: /* quicksand (boulder) */
- element = EL_QUICKSAND_FULL;
+ element = EL_QUICKSAND_FAST_FULL;
break;
case 0x0e99: /* slow quicksand (boulder) */
break;
case 0x0ed2:
- element = EL_EXIT_OPEN;
+ element = EL_EM_EXIT_OPEN;
break;
case 0x0ee3:
- element = EL_EXIT_CLOSED;
+ element = EL_EM_EXIT_CLOSED;
break;
case 0x0eeb:
- element = EL_STEEL_EXIT_OPEN;
+ element = EL_EM_STEEL_EXIT_OPEN;
break;
case 0x0efc:
- element = EL_STEEL_EXIT_CLOSED;
+ element = EL_EM_STEEL_EXIT_CLOSED;
break;
case 0x0f4f: /* dynamite (lit 1) */
- element = EL_DYNAMITE_ACTIVE;
+ element = EL_EM_DYNAMITE_ACTIVE;
break;
case 0x0f57: /* dynamite (lit 2) */
- element = EL_DYNAMITE_ACTIVE;
+ element = EL_EM_DYNAMITE_ACTIVE;
break;
case 0x0f5f: /* dynamite (lit 3) */
- element = EL_DYNAMITE_ACTIVE;
+ element = EL_EM_DYNAMITE_ACTIVE;
break;
case 0x0f67: /* dynamite (lit 4) */
- element = EL_DYNAMITE_ACTIVE;
+ element = EL_EM_DYNAMITE_ACTIVE;
break;
case 0x0f81:
break;
case 0x0fb9:
- element = EL_MAGIC_WALL;
+ element = EL_DC_MAGIC_WALL;
break;
case 0x0fd0:
break;
case 0x1437:
- element = EL_SWITCHGATE_SWITCH_UP;
+ element = EL_DC_SWITCHGATE_SWITCH_UP;
break;
case 0x143a:
break;
case 0x14ce: /* growing steel wall (left/right) */
- element = EL_EXPANDABLE_WALL_HORIZONTAL;
+ element = EL_EXPANDABLE_STEELWALL_HORIZONTAL;
break;
case 0x14df: /* growing steel wall (up/down) */
- element = EL_EXPANDABLE_WALL_VERTICAL;
+ element = EL_EXPANDABLE_STEELWALL_VERTICAL;
break;
case 0x14e8: /* growing steel wall (up/down/left/right) */
- element = EL_EXPANDABLE_WALL_ANY;
+ element = EL_EXPANDABLE_STEELWALL_ANY;
break;
case 0x14e9:
- element = EL_SHIELD_NORMAL;
+ element = EL_SHIELD_DEADLY;
break;
case 0x1501:
break;
case 0x1578: /* quicksand (empty) */
- element = EL_QUICKSAND_EMPTY;
+ element = EL_QUICKSAND_FAST_EMPTY;
break;
case 0x1579: /* slow quicksand (empty) */
/* EL_SAND */
/* 0x1590 - 0x159f: */
- /* EL_LANDMINE */
+ /* EL_DC_LANDMINE */
case 0x15a0:
- element = EL_DYNAMITE;
+ element = EL_EM_DYNAMITE;
break;
case 0x15a1: /* key (red) */
break;
case 0x15a5: /* key (white) */
- element = EL_KEY_WHITE;
+ element = EL_DC_KEY_WHITE;
break;
case 0x15a6:
break;
case 0x1689: /* gate (white) */
- element = EL_DOOR_WHITE;
+ element = EL_DC_GATE_WHITE;
break;
case 0x168a: /* secret gate (white) */
- element = EL_DOOR_WHITE_GRAY;
+ element = EL_DC_GATE_WHITE_GRAY;
break;
case 0x168b: /* secret gate (no key) */
- element = EL_UNKNOWN;
+ element = EL_DC_GATE_FAKE_GRAY;
break;
case 0x168c:
break;
case 0x168d:
- element = EL_TIMEGATE_SWITCH;
+ element = EL_DC_TIMEGATE_SWITCH;
break;
case 0x168e:
else if (element >= 0x157c && element <= 0x158b)
element = EL_SAND;
else if (element >= 0x1590 && element <= 0x159f)
- element = EL_LANDMINE;
+ element = EL_DC_LANDMINE;
else if (element >= 0x16bc && element <= 0x16cb)
element = EL_INVISIBLE_SAND;
else
level->envelope[0].text[envelope_size] = '\0';
+ level->envelope[0].xsize = MAX_ENVELOPE_XSIZE;
+ level->envelope[0].ysize = 10;
+ level->envelope[0].autowrap = TRUE;
+ level->envelope[0].centered = TRUE;
+
for (i = 0; i < level_name_len; i++)
level->name[i] = header[level_name_pos + 1 + i];
level->name[level_name_len] = '\0';
fclose(file);
+ /* Diamond Caves has the same (strange) behaviour as Emerald Mine that gems
+ can slip down from flat walls, like normal walls and steel walls */
+ level->em_slippery_gems = TRUE;
+
+#if 0
/* Diamond Caves II levels are always surrounded by indestructible wall, but
not necessarily in a rectangular way -- fill with invisible steel wall */
+ /* !!! not always true !!! keep level and set BorderElement instead !!! */
+
for (y = 0; y < level->fieldy; y++) for (x = 0; x < level->fieldx; x++)
{
#if 1
level->field, level->fieldx, level->fieldy);
#endif
}
+#endif
}
lev_fieldy = level->fieldy;
/* determine border element for this level */
- SetBorderElement();
+ if (level->file_info.type == LEVEL_FILE_TYPE_DC)
+ BorderElement = EL_EMPTY; /* (in editor, SetBorderElement() is used) */
+ else
+ SetBorderElement();
}
static void LoadLevel_InitNativeEngines(struct LevelInfo *level,char *filename)