From 7a252a42c4ec1a0116f7eff5727afcda3c5aba22 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Wed, 18 Aug 2021 17:55:19 -0400 Subject: char/enemy: Add collision avoidance --- (limited to 'src') diff --git a/src/char/enemy.c b/src/char/enemy.c index f8e91a3..e51e440 100644 --- a/src/char/enemy.c +++ b/src/char/enemy.c @@ -52,6 +52,7 @@ _mf_enemy_step(struct mf_char *c) enum _mf_char_dir back; int dx; int dy; + struct mf_char *o; /* Shuffle directions */ for (i = 0; i < 4; ++i) { @@ -89,9 +90,21 @@ _mf_enemy_step(struct mf_char *c) /* Wall ahead; don't go this direction. */ continue; } + for (o = c; o != NULL; o = ((struct mf_enemy *) o)->next_enemy){ + if (o->cur_x == c->cur_x+dx && o->cur_y == c->cur_y+dy){ + /* Another enemy currently in this direction */ + goto next_dir; + } + if (o->new_x == c->cur_x+dx && o->new_y == c->cur_y+dy){ + /* Another enemy moving in this direction */ + goto next_dir; + } + } /* Move */ c->new_dir = dirs[i]; return 0; + next_dir: + continue; } return 0; -- cgit v0.9.1