-/* values for "CONF" chunk */
-#define CONF_MASK_1_BYTE 0x00
-#define CONF_MASK_2_BYTE 0x40
-#define CONF_MASK_4_BYTE 0x80
-#define CONF_MASK_MULTI_BYTES 0xc0
-
-#define CONF_MASK_BYTES 0xc0
-#define CONF_MASK_TOKEN 0x3f
-
-#define CONF_LAST_ENTRY (CONF_MASK_1_BYTE | 0)
-
-#define CONF_VALUE_INTEGER_1 (CONF_MASK_1_BYTE | 1)
-#define CONF_VALUE_INTEGER_2 (CONF_MASK_1_BYTE | 2)
-#define CONF_VALUE_INTEGER_3 (CONF_MASK_1_BYTE | 3)
-#define CONF_VALUE_INTEGER_4 (CONF_MASK_1_BYTE | 4)
-#define CONF_VALUE_BOOLEAN_1 (CONF_MASK_1_BYTE | 5)
-#define CONF_VALUE_BOOLEAN_2 (CONF_MASK_1_BYTE | 6)
-#define CONF_VALUE_BOOLEAN_3 (CONF_MASK_1_BYTE | 7)
-#define CONF_VALUE_BOOLEAN_4 (CONF_MASK_1_BYTE | 8)
-
-#define CONF_VALUE_ELEMENT_1 (CONF_MASK_2_BYTE | 1)
-#define CONF_VALUE_ELEMENT_2 (CONF_MASK_2_BYTE | 2)
-#define CONF_VALUE_ELEMENT_3 (CONF_MASK_2_BYTE | 3)
-#define CONF_VALUE_ELEMENT_4 (CONF_MASK_2_BYTE | 4)
-
-#define CONF_VALUE_CONTENT_1 (CONF_MASK_MULTI_BYTES | 1)
-#define CONF_VALUE_CONTENT_8 (CONF_MASK_MULTI_BYTES | 2)
-
-#define CONF_VALUE_INTEGER(x) ((x) >= CONF_VALUE_INTEGER_1 && \
- (x) <= CONF_VALUE_INTEGER_4)
-
-#define CONF_VALUE_BOOLEAN(x) ((x) >= CONF_VALUE_BOOLEAN_1 && \
- (x) <= CONF_VALUE_BOOLEAN_4)
-
-#define CONF_VALUE_NUM_BYTES(x) ((x) == CONF_MASK_1_BYTE ? 1 : \
- (x) == CONF_MASK_2_BYTE ? 2 : \
- (x) == CONF_MASK_4_BYTE ? 4 : 0)
-
-#define CONF_CONTENT_NUM_ELEMENTS (3 * 3)
-#define CONF_CONTENT_NUM_BYTES (CONF_CONTENT_NUM_ELEMENTS * 2)
-
-#define CONF_CONTENT_ELEMENT_POS(c,x,y) ((c) * CONF_CONTENT_NUM_ELEMENTS + \
- (y) * 3 + (x))
-#define CONF_CONTENT_BYTE_POS(c,x,y) (CONF_CONTENT_ELEMENT_POS(c,x,y) * 2)
-#define CONF_CONTENT_ELEMENT(b,c,x,y) ((b[CONF_CONTENT_BYTE_POS(c,x,y)] << 8)|\
- (b[CONF_CONTENT_BYTE_POS(c,x,y) + 1]))
-
-static struct LevelInfo li;
-
-static struct
-{
- int element;
- int type;
- void *value;
- int default_value;
-} element_conf[] =
-{
- /* ---------- 1-byte values ---------------------------------------------- */
- {
- EL_EMC_ANDROID, CONF_VALUE_INTEGER_1,
- &li.android_move_time, 10
- },
- {
- EL_EMC_ANDROID, CONF_VALUE_INTEGER_2,
- &li.android_clone_time, 10
- },
- {
- EL_EMC_MAGIC_BALL, CONF_VALUE_INTEGER_1,
- &li.ball_time, 10
- },
- {
- EL_EMC_LENSES, CONF_VALUE_INTEGER_1,
- &li.lenses_score, 10
- },
- {
- EL_EMC_LENSES, CONF_VALUE_INTEGER_2,
- &li.lenses_time, 10
- },
- {
- EL_EMC_MAGNIFIER, CONF_VALUE_INTEGER_1,
- &li.magnify_score, 10
- },
- {
- EL_EMC_MAGNIFIER, CONF_VALUE_INTEGER_2,
- &li.magnify_time, 10
- },
- {
- EL_ROBOT, CONF_VALUE_INTEGER_1,
- &li.slurp_score, 10
- },
- {
- EL_GAME_OF_LIFE, CONF_VALUE_INTEGER_1,
- &li.game_of_life[0], 2
- },
- {
- EL_GAME_OF_LIFE, CONF_VALUE_INTEGER_2,
- &li.game_of_life[1], 3
- },
- {
- EL_GAME_OF_LIFE, CONF_VALUE_INTEGER_3,
- &li.game_of_life[2], 3
- },
- {
- EL_GAME_OF_LIFE, CONF_VALUE_INTEGER_4,
- &li.game_of_life[3], 3
- },
- {
- EL_BIOMAZE, CONF_VALUE_INTEGER_1,
- &li.biomaze[0], 2
- },
- {
- EL_BIOMAZE, CONF_VALUE_INTEGER_2,
- &li.biomaze[1], 3
- },
- {
- EL_BIOMAZE, CONF_VALUE_INTEGER_3,
- &li.biomaze[2], 3
- },
- {
- EL_BIOMAZE, CONF_VALUE_INTEGER_4,
- &li.biomaze[3], 3
- },
- {
- EL_BALLOON, CONF_VALUE_INTEGER_1,
- &li.wind_direction_initial, MV_NONE
- },
- {
- EL_TIMEGATE_SWITCH, CONF_VALUE_INTEGER_1,
- &li.time_timegate, 10
- },
- {
- EL_LIGHT_SWITCH_ACTIVE, CONF_VALUE_INTEGER_1,
- &li.time_light, 10
- },
- {
- EL_SHIELD_NORMAL, CONF_VALUE_INTEGER_1,
- &li.shield_normal_time, 10
- },
- {
- EL_SHIELD_DEADLY, CONF_VALUE_INTEGER_1,
- &li.shield_deadly_time, 10
- },
- {
- EL_EXTRA_TIME, CONF_VALUE_INTEGER_1,
- &li.extra_time, 10
- },
- {
- EL_TIME_ORB_FULL, CONF_VALUE_INTEGER_1,
- &li.time_orb_time, 10
- },
-
- /* ---------- multi-byte values ------------------------------------------ */
- {
- EL_EMC_MAGIC_BALL, CONF_VALUE_CONTENT_8,
- &li.ball_content, EL_EMPTY
- },
-
- {
- -1, -1,
- NULL, -1
- },
-};
-