projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed keeping vertical player position when wrapping in EM engine
[rocksndiamonds.git]
/
src
/
game_em
/
graphics.c
diff --git
a/src/game_em/graphics.c
b/src/game_em/graphics.c
index 43c5e4b22cb715e311858766d3d0642c6e90900c..4ea90bd68e701aea885118c3b6931e7ca8ab1fb7 100644
(file)
--- a/
src/game_em/graphics.c
+++ b/
src/game_em/graphics.c
@@
-75,8
+75,8
@@
void BlitScreenToBitmap_EM(Bitmap *target_bitmap)
int sysize = (full_ysize < ysize ? full_ysize : ysize);
int xxsize = MAX_BUF_XSIZE * TILEX - x;
int yysize = MAX_BUF_YSIZE * TILEY - y;
int sysize = (full_ysize < ysize ? full_ysize : ysize);
int xxsize = MAX_BUF_XSIZE * TILEX - x;
int yysize = MAX_BUF_YSIZE * TILEY - y;
- int xoffset = 2 * TILEX;
- int yoffset = 2 * TILEY;
+ int xoffset = 2 *
CAVE_BUFFER_XOFFSET *
TILEX;
+ int yoffset = 2 *
CAVE_BUFFER_YOFFSET *
TILEY;
if (x < xoffset && y < yoffset)
{
if (x < xoffset && y < yoffset)
{
@@
-554,7
+554,7
@@
static boolean checkIfAllPlayersAreVisible(int center_x, int center_y)
void RedrawPlayfield_EM(boolean force_redraw)
{
boolean draw_new_player_location = FALSE;
void RedrawPlayfield_EM(boolean force_redraw)
{
boolean draw_new_player_location = FALSE;
- boolean draw_new_player_location_
fast
= FALSE;
+ boolean draw_new_player_location_
wrap
= FALSE;
boolean quick_relocation = setup.quick_switch;
int max_center_distance_player_nr =
getMaxCenterDistancePlayerNr(screen_x, screen_y);
boolean quick_relocation = setup.quick_switch;
int max_center_distance_player_nr =
getMaxCenterDistancePlayerNr(screen_x, screen_y);
@@
-593,11
+593,11
@@
void RedrawPlayfield_EM(boolean force_redraw)
game.centered_player_nr = game.centered_player_nr_next;
draw_new_player_location = TRUE;
game.centered_player_nr = game.centered_player_nr_next;
draw_new_player_location = TRUE;
- draw_new_player_location_
fast = game.set_centered_player_fast
;
+ draw_new_player_location_
wrap = game.set_centered_player_wrap
;
force_redraw = TRUE;
game.set_centered_player = FALSE;
force_redraw = TRUE;
game.set_centered_player = FALSE;
- game.set_centered_player_
fast
= FALSE;
+ game.set_centered_player_
wrap
= FALSE;
}
if (game.centered_player_nr == -1)
}
if (game.centered_player_nr == -1)
@@
-633,8
+633,14
@@
void RedrawPlayfield_EM(boolean force_redraw)
int screen_xx = VALID_SCREEN_X(sx);
int screen_yy = VALID_SCREEN_Y(sy);
int screen_xx = VALID_SCREEN_X(sx);
int screen_yy = VALID_SCREEN_Y(sy);
- if (draw_new_player_location_fast)
+ if (draw_new_player_location_wrap)
+ {
+ // when wrapping around (horizontally), keep vertical player position
+ screen_yy = screen_y;
+
+ // scrolling for wrapping should be faster than for switching players
wait_delay_value /= 4;
wait_delay_value /= 4;
+ }
SetVideoFrameDelay(wait_delay_value);
SetVideoFrameDelay(wait_delay_value);