- Error(ERR_WARN, "cannot save score for level %d", nr);
- return;
- }
-
- fprintf(file, "%s\n\n", SCORE_COOKIE);
-
- for (i = 0; i < MAX_SCORE_ENTRIES; i++)
- fprintf(file, "%d %s\n", highscore[i].Score, highscore[i].Name);
-
- fclose(file);
-
- SetFilePermissions(filename, PERMS_PUBLIC);
-}
-
-
-/* ========================================================================= */
-/* setup file functions */
-/* ========================================================================= */
-
-#define TOKEN_STR_PLAYER_PREFIX "player_"
-
-/* global setup */
-#define SETUP_TOKEN_PLAYER_NAME 0
-#define SETUP_TOKEN_SOUND 1
-#define SETUP_TOKEN_SOUND_LOOPS 2
-#define SETUP_TOKEN_SOUND_MUSIC 3
-#define SETUP_TOKEN_SOUND_SIMPLE 4
-#define SETUP_TOKEN_TOONS 5
-#define SETUP_TOKEN_SCROLL_DELAY 6
-#define SETUP_TOKEN_SCROLL_DELAY_VALUE 7
-#define SETUP_TOKEN_SOFT_SCROLLING 8
-#define SETUP_TOKEN_FADE_SCREENS 9
-#define SETUP_TOKEN_AUTORECORD 10
-#define SETUP_TOKEN_SHOW_TITLESCREEN 11
-#define SETUP_TOKEN_QUICK_DOORS 12
-#define SETUP_TOKEN_TEAM_MODE 13
-#define SETUP_TOKEN_HANDICAP 14
-#define SETUP_TOKEN_SKIP_LEVELS 15
-#define SETUP_TOKEN_TIME_LIMIT 16
-#define SETUP_TOKEN_FULLSCREEN 17
-#define SETUP_TOKEN_FULLSCREEN_MODE 18
-#define SETUP_TOKEN_WINDOW_SCALING_PERCENT 19
-#define SETUP_TOKEN_WINDOW_SCALING_QUALITY 20
-#define SETUP_TOKEN_ASK_ON_ESCAPE 21
-#define SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR 22
-#define SETUP_TOKEN_QUICK_SWITCH 23
-#define SETUP_TOKEN_INPUT_ON_FOCUS 24
-#define SETUP_TOKEN_PREFER_AGA_GRAPHICS 25
-#define SETUP_TOKEN_GAME_FRAME_DELAY 26
-#define SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS 27
-#define SETUP_TOKEN_SMALL_GAME_GRAPHICS 28
-#define SETUP_TOKEN_GRAPHICS_SET 29
-#define SETUP_TOKEN_SOUNDS_SET 30
-#define SETUP_TOKEN_MUSIC_SET 31
-#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 32
-#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 33
-#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 34
-#define SETUP_TOKEN_VOLUME_SIMPLE 35
-#define SETUP_TOKEN_VOLUME_LOOPS 36
-#define SETUP_TOKEN_VOLUME_MUSIC 37
-#define SETUP_TOKEN_TOUCH_CONTROL_TYPE 38
-#define SETUP_TOKEN_TOUCH_MOVE_DISTANCE 39
-#define SETUP_TOKEN_TOUCH_DROP_DISTANCE 40
-
-#define NUM_GLOBAL_SETUP_TOKENS 41
-
-/* editor setup */
-#define SETUP_TOKEN_EDITOR_EL_BOULDERDASH 0
-#define SETUP_TOKEN_EDITOR_EL_EMERALD_MINE 1
-#define SETUP_TOKEN_EDITOR_EL_EMERALD_MINE_CLUB 2
-#define SETUP_TOKEN_EDITOR_EL_MORE 3
-#define SETUP_TOKEN_EDITOR_EL_SOKOBAN 4
-#define SETUP_TOKEN_EDITOR_EL_SUPAPLEX 5
-#define SETUP_TOKEN_EDITOR_EL_DIAMOND_CAVES 6
-#define SETUP_TOKEN_EDITOR_EL_DX_BOULDERDASH 7
-#define SETUP_TOKEN_EDITOR_EL_CHARS 8
-#define SETUP_TOKEN_EDITOR_EL_STEEL_CHARS 9
-#define SETUP_TOKEN_EDITOR_EL_CUSTOM 10
-#define SETUP_TOKEN_EDITOR_EL_HEADLINES 11
-#define SETUP_TOKEN_EDITOR_EL_USER_DEFINED 12
-#define SETUP_TOKEN_EDITOR_EL_DYNAMIC 13
-#define SETUP_TOKEN_EDITOR_EL_BY_GAME 14
-#define SETUP_TOKEN_EDITOR_EL_BY_TYPE 15
-#define SETUP_TOKEN_EDITOR_SHOW_ELEMENT_TOKEN 16
-
-#define NUM_EDITOR_SETUP_TOKENS 17
-
-/* editor cascade setup */
-#define SETUP_TOKEN_EDITOR_CASCADE_BD 0
-#define SETUP_TOKEN_EDITOR_CASCADE_EM 1
-#define SETUP_TOKEN_EDITOR_CASCADE_EMC 2
-#define SETUP_TOKEN_EDITOR_CASCADE_RND 3
-#define SETUP_TOKEN_EDITOR_CASCADE_SB 4
-#define SETUP_TOKEN_EDITOR_CASCADE_SP 5
-#define SETUP_TOKEN_EDITOR_CASCADE_DC 6
-#define SETUP_TOKEN_EDITOR_CASCADE_DX 7
-#define SETUP_TOKEN_EDITOR_CASCADE_TEXT 8
-#define SETUP_TOKEN_EDITOR_CASCADE_STEELTEXT 9
-#define SETUP_TOKEN_EDITOR_CASCADE_CE 10
-#define SETUP_TOKEN_EDITOR_CASCADE_GE 11
-#define SETUP_TOKEN_EDITOR_CASCADE_REF 12
-#define SETUP_TOKEN_EDITOR_CASCADE_USER 13
-#define SETUP_TOKEN_EDITOR_CASCADE_DYNAMIC 14
-
-#define NUM_EDITOR_CASCADE_SETUP_TOKENS 15
-
-/* shortcut setup */
-#define SETUP_TOKEN_SHORTCUT_SAVE_GAME 0
-#define SETUP_TOKEN_SHORTCUT_LOAD_GAME 1
-#define SETUP_TOKEN_SHORTCUT_TOGGLE_PAUSE 2
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_1 3
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_2 4
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_3 5
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_4 6
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_ALL 7
-#define SETUP_TOKEN_SHORTCUT_TAPE_EJECT 8
-#define SETUP_TOKEN_SHORTCUT_TAPE_EXTRA 9
-#define SETUP_TOKEN_SHORTCUT_TAPE_STOP 10
-#define SETUP_TOKEN_SHORTCUT_TAPE_PAUSE 11
-#define SETUP_TOKEN_SHORTCUT_TAPE_RECORD 12
-#define SETUP_TOKEN_SHORTCUT_TAPE_PLAY 13
-#define SETUP_TOKEN_SHORTCUT_SOUND_SIMPLE 14
-#define SETUP_TOKEN_SHORTCUT_SOUND_LOOPS 15
-#define SETUP_TOKEN_SHORTCUT_SOUND_MUSIC 16
-#define SETUP_TOKEN_SHORTCUT_SNAP_LEFT 17
-#define SETUP_TOKEN_SHORTCUT_SNAP_RIGHT 18
-#define SETUP_TOKEN_SHORTCUT_SNAP_UP 19
-#define SETUP_TOKEN_SHORTCUT_SNAP_DOWN 20
-
-#define NUM_SHORTCUT_SETUP_TOKENS 21
-
-/* player setup */
-#define SETUP_TOKEN_PLAYER_USE_JOYSTICK 0
-#define SETUP_TOKEN_PLAYER_JOY_DEVICE_NAME 1
-#define SETUP_TOKEN_PLAYER_JOY_XLEFT 2
-#define SETUP_TOKEN_PLAYER_JOY_XMIDDLE 3
-#define SETUP_TOKEN_PLAYER_JOY_XRIGHT 4
-#define SETUP_TOKEN_PLAYER_JOY_YUPPER 5
-#define SETUP_TOKEN_PLAYER_JOY_YMIDDLE 6
-#define SETUP_TOKEN_PLAYER_JOY_YLOWER 7
-#define SETUP_TOKEN_PLAYER_JOY_SNAP 8
-#define SETUP_TOKEN_PLAYER_JOY_DROP 9
-#define SETUP_TOKEN_PLAYER_KEY_LEFT 10
-#define SETUP_TOKEN_PLAYER_KEY_RIGHT 11
-#define SETUP_TOKEN_PLAYER_KEY_UP 12
-#define SETUP_TOKEN_PLAYER_KEY_DOWN 13
-#define SETUP_TOKEN_PLAYER_KEY_SNAP 14
-#define SETUP_TOKEN_PLAYER_KEY_DROP 15
-
-#define NUM_PLAYER_SETUP_TOKENS 16
-
-/* system setup */
-#define SETUP_TOKEN_SYSTEM_SDL_VIDEODRIVER 0
-#define SETUP_TOKEN_SYSTEM_SDL_AUDIODRIVER 1
-#define SETUP_TOKEN_SYSTEM_AUDIO_FRAGMENT_SIZE 2
-
-#define NUM_SYSTEM_SETUP_TOKENS 3
-
-/* options setup */
-#define SETUP_TOKEN_OPTIONS_VERBOSE 0
-
-#define NUM_OPTIONS_SETUP_TOKENS 1
-
-
-static struct SetupInfo si;
-static struct SetupEditorInfo sei;
-static struct SetupEditorCascadeInfo seci;
-static struct SetupShortcutInfo ssi;
-static struct SetupInputInfo sii;
-static struct SetupSystemInfo syi;
-static struct OptionInfo soi;
-
-static struct TokenInfo global_setup_tokens[] =
-{
- { TYPE_STRING, &si.player_name, "player_name" },
- { TYPE_SWITCH, &si.sound, "sound" },
- { TYPE_SWITCH, &si.sound_loops, "repeating_sound_loops" },
- { TYPE_SWITCH, &si.sound_music, "background_music" },
- { TYPE_SWITCH, &si.sound_simple, "simple_sound_effects" },
- { TYPE_SWITCH, &si.toons, "toons" },
- { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
- { TYPE_INTEGER,&si.scroll_delay_value, "scroll_delay_value" },
- { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" },
- { TYPE_SWITCH, &si.fade_screens, "fade_screens" },
- { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording"},
- { TYPE_SWITCH, &si.show_titlescreen, "show_titlescreen" },
- { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
- { TYPE_SWITCH, &si.team_mode, "team_mode" },
- { TYPE_SWITCH, &si.handicap, "handicap" },
- { TYPE_SWITCH, &si.skip_levels, "skip_levels" },
- { TYPE_SWITCH, &si.time_limit, "time_limit" },
- { TYPE_SWITCH, &si.fullscreen, "fullscreen" },
- { TYPE_STRING, &si.fullscreen_mode, "fullscreen_mode" },
- { TYPE_INTEGER,&si.window_scaling_percent, "window_scaling_percent" },
- { TYPE_STRING, &si.window_scaling_quality, "window_scaling_quality" },
- { TYPE_SWITCH, &si.ask_on_escape, "ask_on_escape" },
- { TYPE_SWITCH, &si.ask_on_escape_editor, "ask_on_escape_editor" },
- { TYPE_SWITCH, &si.quick_switch, "quick_player_switch" },
- { TYPE_SWITCH, &si.input_on_focus, "input_on_focus" },
- { TYPE_SWITCH, &si.prefer_aga_graphics, "prefer_aga_graphics" },
- { TYPE_INTEGER,&si.game_frame_delay, "game_frame_delay" },
- { TYPE_SWITCH, &si.sp_show_border_elements, "sp_show_border_elements" },
- { TYPE_SWITCH, &si.small_game_graphics, "small_game_graphics" },
- { TYPE_STRING, &si.graphics_set, "graphics_set" },
- { TYPE_STRING, &si.sounds_set, "sounds_set" },
- { TYPE_STRING, &si.music_set, "music_set" },
- { TYPE_SWITCH3,&si.override_level_graphics, "override_level_graphics" },
- { TYPE_SWITCH3,&si.override_level_sounds, "override_level_sounds" },
- { TYPE_SWITCH3,&si.override_level_music, "override_level_music" },
- { TYPE_INTEGER,&si.volume_simple, "volume_simple" },
- { TYPE_INTEGER,&si.volume_loops, "volume_loops" },
- { TYPE_INTEGER,&si.volume_music, "volume_music" },
- { TYPE_STRING, &si.touch.control_type, "touch.control_type" },
- { TYPE_INTEGER,&si.touch.move_distance, "touch.move_distance" },
- { TYPE_INTEGER,&si.touch.drop_distance, "touch.drop_distance" },
-};
-
-static boolean not_used = FALSE;
-static struct TokenInfo editor_setup_tokens[] =
-{
-#if 1
- { TYPE_SWITCH, ¬_used, "editor.el_boulderdash" },
- { TYPE_SWITCH, ¬_used, "editor.el_emerald_mine" },
- { TYPE_SWITCH, ¬_used, "editor.el_emerald_mine_club" },
- { TYPE_SWITCH, ¬_used, "editor.el_more" },
- { TYPE_SWITCH, ¬_used, "editor.el_sokoban" },
- { TYPE_SWITCH, ¬_used, "editor.el_supaplex" },
- { TYPE_SWITCH, ¬_used, "editor.el_diamond_caves" },
- { TYPE_SWITCH, ¬_used, "editor.el_dx_boulderdash" },
-#else
- { TYPE_SWITCH, &sei.el_boulderdash, "editor.el_boulderdash" },
- { TYPE_SWITCH, &sei.el_emerald_mine, "editor.el_emerald_mine" },
- { TYPE_SWITCH, &sei.el_emerald_mine_club,"editor.el_emerald_mine_club"},
- { TYPE_SWITCH, &sei.el_more, "editor.el_more" },
- { TYPE_SWITCH, &sei.el_sokoban, "editor.el_sokoban" },
- { TYPE_SWITCH, &sei.el_supaplex, "editor.el_supaplex" },
- { TYPE_SWITCH, &sei.el_diamond_caves, "editor.el_diamond_caves" },
- { TYPE_SWITCH, &sei.el_dx_boulderdash,"editor.el_dx_boulderdash" },
-#endif
- { TYPE_SWITCH, &sei.el_chars, "editor.el_chars" },
- { TYPE_SWITCH, &sei.el_steel_chars, "editor.el_steel_chars" },
- { TYPE_SWITCH, &sei.el_custom, "editor.el_custom" },
-#if 1
- { TYPE_SWITCH, ¬_used, "editor.el_headlines" },
-#else
- { TYPE_SWITCH, &sei.el_headlines, "editor.el_headlines" },
-#endif
- { TYPE_SWITCH, &sei.el_user_defined, "editor.el_user_defined" },
- { TYPE_SWITCH, &sei.el_dynamic, "editor.el_dynamic" },
- { TYPE_SWITCH, &sei.el_by_game, "editor.el_by_game" },
- { TYPE_SWITCH, &sei.el_by_type, "editor.el_by_type" },
- { TYPE_SWITCH, &sei.show_element_token,"editor.show_element_token" },