summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2021-08-19 17:28:13 (EDT)
committer P. J. McDermott <pj@pehjota.net>2021-08-19 17:28:13 (EDT)
commit09775804429ccd7486419b4c539581d6f70e193d (patch)
tree50ed80a2533cae707c9f4752dd957f69e1150065
parente236632ceea7a7cbee7c4139b0bf86710770077b (diff)
downloadmazefight-09775804429ccd7486419b4c539581d6f70e193d.zip
mazefight-09775804429ccd7486419b4c539581d6f70e193d.tar.gz
mazefight-09775804429ccd7486419b4c539581d6f70e193d.tar.bz2
char/enemy: Try to fix movement lag
-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);