* added (currently invisible) setup option to define scroll delay value
* fixed small bug in priority handling when auto-detecting level start
position in levels without player element (but player from CE etc.)
+ * added option "game.forced_scroll_delay_value" to override user choice
+ of scroll delay value for certain level sets with "graphicsinfo.conf"
2007-03-28
* added displaying of most game panel control elements (not animated)
{ "game.button.sound_simple.x", "65" },
{ "game.button.sound_simple.y", "245" },
+ { "game.forced_scroll_delay_value", "-1" },
+
{ "[player].boring_delay_fixed", "1000" },
{ "[player].boring_delay_random", "1000" },
{ "[player].sleeping_delay_fixed", "2000" },
"game.button.sound_simple.y",
&game.button.sound_simple.y
},
+ {
+ "game.forced_scroll_delay_value",
+ &game.forced_scroll_delay_value
+ },
{
"[player].boring_delay_fixed",
&game.player_boring_delay_fixed
-#define COMPILE_DATE_STRING "2007-03-30 13:31"
+#define COMPILE_DATE_STRING "2007-03-31 00:47"
si->double_buffering = TRUE;
si->direct_draw = !si->double_buffering;
si->scroll_delay = TRUE;
- si->scroll_delay_value = 9;
+ si->scroll_delay_value = STD_SCROLL_DELAY;
si->soft_scrolling = TRUE;
si->fade_screens = TRUE;
si->autorecord = TRUE;
recursion_loop_depth = 0;
recursion_loop_detected = FALSE;
recursion_loop_element = EL_UNDEFINED;
+
+ /* ---------- initialize graphics engine ---------------------------------- */
+ game.scroll_delay_value =
+ (game.forced_scroll_delay_value != -1 ? game.forced_scroll_delay_value :
+ setup.scroll_delay ? setup.scroll_delay_value : 0);
+ game.scroll_delay_value =
+ MIN(MAX(MIN_SCROLL_DELAY, game.scroll_delay_value), MAX_SCROLL_DELAY);
}
int get_num_special_action(int element, int action_first, int action_last)
if (quick_relocation)
{
- int offset = (setup.scroll_delay ? setup.scroll_delay_value : 0);
+ int offset = game.scroll_delay_value;
if (!IN_VIS_FIELD(SCREENX(x), SCREENY(y)) || center_screen)
{
#endif
{
int old_scroll_x = scroll_x, old_scroll_y = scroll_y;
- int offset = (setup.scroll_delay ? setup.scroll_delay_value : 0);
+ int offset = game.scroll_delay_value;
if (!IN_VIS_FIELD(SCREENX(jx), SCREENY(jy)))
{
struct GamePanelInfo panel;
struct GameButtonInfo button;
+ /* values for graphics engine customization */
+ int forced_scroll_delay_value;
+ int scroll_delay_value;
+
/* values for engine initialization */
int default_push_delay_fixed;
int default_push_delay_random;
if (quick_relocation)
{
- int offset = (setup.scroll_delay ? setup.scroll_delay_value : 0);
+ int offset = game.scroll_delay_value;
if (!IN_VIS_FIELD(SCREENX(jx), SCREENY(jy)))
{
int player_nr = game_em.last_moving_player;
#endif
int stepsize = TILEX / 8;
- int offset = (setup.scroll_delay ? setup.scroll_delay_value : 0) * TILEX;
+ int offset = game.scroll_delay_value * TILEX;
int offset_x = offset;
int offset_y = offset;
int screen_x_old = screen_x;
#define MAX_LEV_FIELDX MAX_PLAYFIELD_WIDTH
#define MAX_LEV_FIELDY MAX_PLAYFIELD_HEIGHT
+#define MIN_SCROLL_DELAY 0
+#define STD_SCROLL_DELAY 3
+#define MAX_SCROLL_DELAY 9
+
#define SCREENX(a) ((a) - scroll_x)
#define SCREENY(a) ((a) - scroll_y)
#define LEVELX(a) ((a) + scroll_x)