projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20070302-1-src
[rocksndiamonds.git]
/
src
/
game_em
/
graphics.c
diff --git
a/src/game_em/graphics.c
b/src/game_em/graphics.c
index 21ca0964ec8bfbeebc4bc190137ee2db6f07710d..fed6bcdf4616603627200a27f6f1f23bb279726f 100644
(file)
--- a/
src/game_em/graphics.c
+++ b/
src/game_em/graphics.c
@@
-148,6
+148,12
@@
static void DrawLevelField_EM(int x, int y, int sx, int sy,
{
int tile = Draw[y][x];
struct GraphicInfo_EM *g = &graphic_info_em_object[tile][frame];
{
int tile = Draw[y][x];
struct GraphicInfo_EM *g = &graphic_info_em_object[tile][frame];
+
+#if 1
+ getGraphicSourceObjectExt_EM(tile, frame, &g->bitmap, &g->src_x, &g->src_y,
+ x - 2, y - 2);
+#endif
+
int src_x = g->src_x + g->src_offset_x;
int src_y = g->src_y + g->src_offset_y;
int dst_x = sx * TILEX + g->dst_offset_x;
int src_x = g->src_x + g->src_offset_x;
int src_y = g->src_y + g->src_offset_y;
int dst_x = sx * TILEX + g->dst_offset_x;
@@
-248,6
+254,11
@@
static void DrawLevelPlayer_EM(int x1, int y1, int player_nr, int anim,
{
struct GraphicInfo_EM *g = &graphic_info_em_player[player_nr][anim][frame];
{
struct GraphicInfo_EM *g = &graphic_info_em_player[player_nr][anim][frame];
+#if 1
+ getGraphicSourcePlayerExt_EM(player_nr, anim, frame,
+ &g->bitmap, &g->src_x, &g->src_y);
+#endif
+
int src_x = g->src_x, src_y = g->src_y;
int dst_x, dst_y;
int src_x = g->src_x, src_y = g->src_y;
int dst_x, dst_y;
@@
-357,7
+368,7
@@
static void animscreen(void)
}
/* only redraw screen tiles if they (or their crumbled state) changed */
}
/* only redraw screen tiles if they (or their crumbled state) changed */
- if (screentiles[sy][sx] != obj || crumbled_state[sy][sx] != crm)
+
//
if (screentiles[sy][sx] != obj || crumbled_state[sy][sx] != crm)
{
DrawLevelField_EM(x, y, sx, sy, FALSE);
DrawLevelFieldCrumbled_EM(x, y, sx, sy, crm, FALSE);
{
DrawLevelField_EM(x, y, sx, sy, FALSE);
DrawLevelFieldCrumbled_EM(x, y, sx, sy, crm, FALSE);
@@
-452,9
+463,14
@@
static void blitplayer(struct PLAYER *ply)
DrawLevelField_EM(new_x, new_y, new_sx, new_sy, TRUE);
}
DrawLevelField_EM(new_x, new_y, new_sx, new_sy, TRUE);
}
- /*
mark screen tiles as dirty
*/
+ /*
redraw screen tiles in the next frame (player may have left the tiles)
*/
screentiles[old_sy][old_sx] = -1;
screentiles[new_sy][new_sx] = -1;
screentiles[old_sy][old_sx] = -1;
screentiles[new_sy][new_sx] = -1;
+
+ /* mark screen tiles as dirty (force screen refresh with changed content) */
+ redraw[old_sx][old_sy] = TRUE;
+ redraw[new_sx][new_sy] = TRUE;
+ redraw_tiles += 2;
}
}
}
}