diff options
author | P. 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) |
commit | 09775804429ccd7486419b4c539581d6f70e193d (patch) | |
tree | 50ed80a2533cae707c9f4752dd957f69e1150065 /src | |
parent | e236632ceea7a7cbee7c4139b0bf86710770077b (diff) | |
download | mazefight-09775804429ccd7486419b4c539581d6f70e193d.zip mazefight-09775804429ccd7486419b4c539581d6f70e193d.tar.gz mazefight-09775804429ccd7486419b4c539581d6f70e193d.tar.bz2 |
char/enemy: Try to fix movement lag
Diffstat (limited to 'src')
-rw-r--r-- | src/char.h | 3 | ||||
-rw-r--r-- | src/char/enemy.c | 14 | ||||
-rw-r--r-- | src/game.c | 3 |
3 files changed, 18 insertions, 2 deletions
@@ -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; + } +} @@ -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); |