TYPE_BOOLEAN, CONF_VALUE_8_BIT(12),
&li.shifted_relocation, FALSE
},
+ {
+ EL_PLAYER_1, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(15),
+ &li.lazy_relocation, FALSE
+ },
/* (these values are different for each player) */
{
int envelope_nr = element - EL_ENVELOPE_1;
int real_chunk_size = 2;
+ xx_envelope = level->envelope[envelope_nr]; /* copy into temporary buffer */
+
while (!checkEndOfFile(file))
{
real_chunk_size += LoadLevel_MicroChunk(file, chunk_config_NOTE,
break;
}
- level->envelope[envelope_nr] = xx_envelope;
+ level->envelope[envelope_nr] = xx_envelope; /* copy from temporary buffer */
return real_chunk_size;
}
#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
+#define SETUP_TOKEN_SHOW_SNAPSHOT_BUTTONS 29
+#define SETUP_TOKEN_GRAPHICS_SET 30
+#define SETUP_TOKEN_SOUNDS_SET 31
+#define SETUP_TOKEN_MUSIC_SET 32
+#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 33
+#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 34
+#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 35
+#define SETUP_TOKEN_VOLUME_SIMPLE 36
+#define SETUP_TOKEN_VOLUME_LOOPS 37
+#define SETUP_TOKEN_VOLUME_MUSIC 38
+#define SETUP_TOKEN_TOUCH_CONTROL_TYPE 39
+#define SETUP_TOKEN_TOUCH_MOVE_DISTANCE 40
+#define SETUP_TOKEN_TOUCH_DROP_DISTANCE 41
+
+#define NUM_GLOBAL_SETUP_TOKENS 42
/* editor setup */
#define SETUP_TOKEN_EDITOR_EL_BOULDERDASH 0
{ 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_SWITCH, &si.show_snapshot_buttons, "show_snapshot_buttons" },
{ TYPE_STRING, &si.graphics_set, "graphics_set" },
{ TYPE_STRING, &si.sounds_set, "sounds_set" },
{ TYPE_STRING, &si.music_set, "music_set" },
{ TYPE_STRING, &sxi.fallback_sounds_file, "fallback_sounds_file" },
{ TYPE_STRING, &sxi.fallback_music_file, "fallback_music_file" },
{ TYPE_STRING, &sxi.default_level_series, "default_level_series" },
- { TYPE_STRING, &sxi.choose_from_top_leveldir, "choose_from_top_leveldir" },
+ { TYPE_BOOLEAN,&sxi.choose_from_top_leveldir, "choose_from_top_leveldir" },
};
static struct TokenInfo options_setup_tokens[] =
si->game_frame_delay = GAME_FRAME_DELAY;
si->sp_show_border_elements = FALSE;
si->small_game_graphics = FALSE;
+ si->show_snapshot_buttons = FALSE;
si->graphics_set = getStringCopy(GFX_CLASSIC_SUBDIR);
si->sounds_set = getStringCopy(SND_CLASSIC_SUBDIR);
static void InitMenuDesignSettings_SpecialPostProcessing()
{
+ static struct
+ {
+ struct XY *dst, *src;
+ }
+ game_buttons_xy[] =
+ {
+ { &game.button.save, &game.button.stop },
+ { &game.button.pause2, &game.button.pause },
+ { &game.button.load, &game.button.play },
+ { &game.button.undo, &game.button.stop },
+ { &game.button.redo, &game.button.play },
+
+ { NULL, NULL }
+ };
+ int i;
+
/* special case: initialize later added SETUP list size from LEVELS value */
if (menu.list_size[GAME_MODE_SETUP] == -1)
menu.list_size[GAME_MODE_SETUP] = menu.list_size[GAME_MODE_LEVELS];
+
+ /* set default position for snapshot buttons to stop/pause/play buttons */
+ for (i = 0; game_buttons_xy[i].dst != NULL; i++)
+ {
+ if ((*game_buttons_xy[i].dst).x == -1 &&
+ (*game_buttons_xy[i].dst).y == -1)
+ {
+ (*game_buttons_xy[i].dst).x = (*game_buttons_xy[i].src).x;
+ (*game_buttons_xy[i].dst).y = (*game_buttons_xy[i].src).y;
+ }
+ }
}
static void LoadMenuDesignSettingsFromFilename(char *filename)