summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2021-08-08 17:00:23 (EDT)
committer P. J. McDermott <pj@pehjota.net>2021-08-08 17:09:18 (EDT)
commitbc9b48f31048fc1bf756666ecccbf40c95c15135 (patch)
tree242637d8d09ac055c116057fea4bb62206e8c1a8 /src
parent1af3d32d9c0e44c770de442be8dad7be05ae02d4 (diff)
downloadmazefight-bc9b48f31048fc1bf756666ecccbf40c95c15135.zip
mazefight-bc9b48f31048fc1bf756666ecccbf40c95c15135.tar.gz
mazefight-bc9b48f31048fc1bf756666ecccbf40c95c15135.tar.bz2
player: Reveal map
Diffstat (limited to 'src')
-rw-r--r--src/player.c23
1 files changed, 21 insertions, 2 deletions
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;
}