From bc9b48f31048fc1bf756666ecccbf40c95c15135 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Sun, 08 Aug 2021 17:00:23 -0400 Subject: player: Reveal map --- diff --git a/src/player.c b/src/player.c index 3d84b0f..d0b3f51 100644 --- a/src/player.c +++ b/src/player.c @@ -132,6 +132,8 @@ mf_player_update(struct mf_player *p) { int dx; int dy; + int x; + int y; if (p->travel > 0) { /* Currently moving */ @@ -149,7 +151,7 @@ mf_player_update(struct mf_player *p) } } else { /* Farther to go */ - return 0; + goto end; } } if (p->new_dir != MF_PLAYER_DIR_N_ && p->cur_dir != p->new_dir) { @@ -177,7 +179,7 @@ mf_player_update(struct mf_player *p) p->new_dir = MF_PLAYER_DIR_N_; if (mf_maze_is_wall(p->maze, p->cur_x, p->cur_y, dx, dy)) { - return 0; + goto end; } p->new_x = p->cur_x + dx; p->new_y = p->cur_y + dy; @@ -185,6 +187,23 @@ mf_player_update(struct mf_player *p) } } + end: + switch (p->cur_dir) { + case MF_PLAYER_DIR_U_: dx = 0; dy = -1; break; + case MF_PLAYER_DIR_D_: dx = 0; dy = 1; break; + case MF_PLAYER_DIR_L_: dx = -1; dy = 0; break; + case MF_PLAYER_DIR_R_: dx = 1; dy = 0; break; + default: dx = 0; dy = 0; break; + } + x = p->cur_x - dx, y = p->cur_y - dy; + do { + x += dx, y += dy; + mf_maze_reveal_wall(p->maze, x, y, -1, 0); + mf_maze_reveal_wall(p->maze, x, y, 1, 0); + mf_maze_reveal_wall(p->maze, x, y, 0, -1); + mf_maze_reveal_wall(p->maze, x, y, 0, 1); + } while (!mf_maze_is_wall(p->maze, x, y, dx, dy)); + return 0; } -- cgit v0.9.1