-}
-
-/* ------------------------------------------------------------------------- */
-/* new setup functions */
-/* ------------------------------------------------------------------------- */
-
-#define TOKEN_STR_FILE_IDENTIFIER "file_identifier"
-#define TOKEN_STR_LAST_LEVEL_SERIES "last_level_series"
-#define TOKEN_STR_ALIAS_NAME "alias_name"
-
-#define TOKEN_STR_PLAYER_PREFIX "player_"
-#define TOKEN_VALUE_POSITION 30
-#define TOKEN_INVALID -1
-#define TOKEN_IGNORE -99
-
-#define SETUP_TOKEN_ALIAS_NAME 100
-
-#define SETUP_TOKEN_SOUND 0
-#define SETUP_TOKEN_SOUND_LOOPS 1
-#define SETUP_TOKEN_SOUND_MUSIC 2
-#define SETUP_TOKEN_SOUND_SIMPLE 3
-#define SETUP_TOKEN_TOONS 4
-#define SETUP_TOKEN_DIRECT_DRAW 5
-#define SETUP_TOKEN_SCROLL_DELAY 6
-#define SETUP_TOKEN_SOFT_SCROLLING 7
-#define SETUP_TOKEN_FADING 8
-#define SETUP_TOKEN_AUTORECORD 9
-#define SETUP_TOKEN_QUICK_DOORS 10
-#define SETUP_TOKEN_USE_JOYSTICK 11
-#define SETUP_TOKEN_JOYSTICK_NR 12
-#define SETUP_TOKEN_JOY_SNAP 13
-#define SETUP_TOKEN_JOY_BOMB 14
-#define SETUP_TOKEN_KEY_LEFT 15
-#define SETUP_TOKEN_KEY_RIGHT 16
-#define SETUP_TOKEN_KEY_UP 17
-#define SETUP_TOKEN_KEY_DOWN 18
-#define SETUP_TOKEN_KEY_SNAP 19
-#define SETUP_TOKEN_KEY_BOMB 20
-
-#define NUM_SETUP_TOKENS 21
-
-static struct
-{
- char *token, *value_true, *value_false;
-} setup_info[] =
-{
- { "sound", "on", "off" },
- { "repeating_sound_loops", "on", "off" },
- { "background_music", "on", "off" },
- { "simple_sound_effects", "on", "off" },
- { "toons", "on", "off" },
- { "double_buffering", "off", "on" },
- { "scroll_delay", "on", "off" },
- { "soft_scrolling", "on", "off" },
- { "screen_fading", "on", "off" },
- { "automatic_tape_recording", "on", "off" },
- { "quick_doors", "on", "off" },
-
- /* for each player: */
- { ".use_joystick", "true", "false" },
- { ".joystick_device", "second", "first" },
- { ".joy.snap_field", "", "" },
- { ".joy.place_bomb", "", "" },
- { ".key.move_left", "", "" },
- { ".key.move_right", "", "" },
- { ".key.move_up", "", "" },
- { ".key.move_down", "", "" },
- { ".key.snap_field", "", "" },
- { ".key.place_bomb", "", "" }
+ { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
+ { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" },
+ { TYPE_SWITCH, &si.fading, "screen_fading" },
+ { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording" },
+ { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
+ { TYPE_SWITCH, &si.team_mode, "team_mode" },
+ { TYPE_SWITCH, &si.handicap, "handicap" },
+ { TYPE_SWITCH, &si.time_limit, "time_limit" },
+ { TYPE_SWITCH, &si.fullscreen, "fullscreen" },
+
+ /* player setup */
+ { TYPE_BOOLEAN, &sii.use_joystick, ".use_joystick" },
+ { TYPE_STRING, &sii.joy.device_name, ".joy.device_name" },
+ { TYPE_INTEGER, &sii.joy.xleft, ".joy.xleft" },
+ { TYPE_INTEGER, &sii.joy.xmiddle, ".joy.xmiddle" },
+ { TYPE_INTEGER, &sii.joy.xright, ".joy.xright" },
+ { TYPE_INTEGER, &sii.joy.yupper, ".joy.yupper" },
+ { TYPE_INTEGER, &sii.joy.ymiddle, ".joy.ymiddle" },
+ { TYPE_INTEGER, &sii.joy.ylower, ".joy.ylower" },
+ { TYPE_INTEGER, &sii.joy.snap, ".joy.snap_field" },
+ { TYPE_INTEGER, &sii.joy.bomb, ".joy.place_bomb" },
+ { TYPE_KEY, &sii.key.left, ".key.move_left" },
+ { TYPE_KEY, &sii.key.right, ".key.move_right" },
+ { TYPE_KEY, &sii.key.up, ".key.move_up" },
+ { TYPE_KEY, &sii.key.down, ".key.move_down" },
+ { TYPE_KEY, &sii.key.snap, ".key.snap_field" },
+ { TYPE_KEY, &sii.key.bomb, ".key.place_bomb" },
+
+ /* level directory info */
+ { TYPE_STRING, &ldi.name, "name" },
+ { TYPE_STRING, &ldi.name_short, "name_short" },
+ { TYPE_STRING, &ldi.name_sorting, "name_sorting" },
+ { TYPE_STRING, &ldi.author, "author" },
+ { TYPE_STRING, &ldi.imported_from, "imported_from" },
+ { TYPE_INTEGER, &ldi.levels, "levels" },
+ { TYPE_INTEGER, &ldi.first_level, "first_level" },
+ { TYPE_INTEGER, &ldi.sort_priority, "sort_priority" },
+ { TYPE_BOOLEAN, &ldi.level_group, "level_group" },
+ { TYPE_BOOLEAN, &ldi.readonly, "readonly" }