summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/char.h3
-rw-r--r--src/char/enemy.c14
-rw-r--r--src/game.c3
3 files changed, 18 insertions, 2 deletions
diff --git a/src/char.h b/src/char.h
index f1520d9..163ab4e 100644
--- a/src/char.h
+++ b/src/char.h
@@ -54,4 +54,7 @@ mf_player_key_event(struct mf_char *c, SDL_Event *e);
void
mf_enemy_random_jump(struct mf_char *c, int maze_size);
+int
+mf_enemy_postupdate(struct mf_char *c);
+
#endif /* MF_CHAR_H */
diff --git a/src/char/enemy.c b/src/char/enemy.c
index eeda38d..3f9f994 100644
--- a/src/char/enemy.c
+++ b/src/char/enemy.c
@@ -133,12 +133,12 @@ _mf_enemy_turn(struct mf_char *c)
if (e->allies[i]->cur_x == c->cur_x + dx &&
e->allies[i]->cur_y == c->cur_y + dy) {
/* Another enemy currently in this direction */
- return 0;
+ return _mf_enemy_step(c);
}
if (e->allies[i]->new_x == c->cur_x + dx &&
e->allies[i]->new_y == c->cur_y + dy) {
/* Another enemy moving in this direction */
- return 0;
+ return _mf_enemy_step(c);
}
}
@@ -240,3 +240,13 @@ mf_enemy_random_jump(struct mf_char *c, int maze_size)
c->cur_x = rand() / (RAND_MAX / maze_size);
c->cur_y = rand() / (RAND_MAX / maze_size);
}
+
+int
+mf_enemy_postupdate(struct mf_char *c)
+{
+ if (c->travel == 0 && c->turning == 0) {
+ return _mf_enemy_turn(c);
+ } else {
+ return 0;
+ }
+}
diff --git a/src/game.c b/src/game.c
index d582323..6908626 100644
--- a/src/game.c
+++ b/src/game.c
@@ -251,6 +251,9 @@ mf_game(long seed, int size, int fow, int reveal, int enemies,
mf_char_update(chars[i]);
}
for (i = 0; i < enemies; ++i) {
+ mf_enemy_postupdate(chars[i]);
+ }
+ for (i = 0; i < enemies; ++i) {
for (j = i + 1; j < enemies; ++j) {
mf_char_collision(chars[i], chars[j],
SDL_TRUE);