diff options
author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-03-30 19:45:31 +0200 |
---|---|---|
committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-03-30 19:45:31 +0200 |
commit | 5b287c89362171175592c5eab247fb8a7b7d28ff (patch) | |
tree | 7319f00b79ee85a9e551b5ce5a89280e549fb5ca /src/ft_select_bad_boy_action.c | |
parent | Pretty coolio (diff) | |
download | 42-cub3d-5b287c89362171175592c5eab247fb8a7b7d28ff.tar.gz 42-cub3d-5b287c89362171175592c5eab247fb8a7b7d28ff.tar.bz2 42-cub3d-5b287c89362171175592c5eab247fb8a7b7d28ff.tar.xz 42-cub3d-5b287c89362171175592c5eab247fb8a7b7d28ff.tar.zst 42-cub3d-5b287c89362171175592c5eab247fb8a7b7d28ff.zip |
Fine
Diffstat (limited to 'src/ft_select_bad_boy_action.c')
-rw-r--r-- | src/ft_select_bad_boy_action.c | 82 |
1 files changed, 74 insertions, 8 deletions
diff --git a/src/ft_select_bad_boy_action.c b/src/ft_select_bad_boy_action.c index 34e0efe..5f4cc3a 100644 --- a/src/ft_select_bad_boy_action.c +++ b/src/ft_select_bad_boy_action.c @@ -13,6 +13,63 @@ #include <libft.h> #include <cub3d.h> #include <stdlib.h> +#include <math.h> + +/* +** bad_boy[].act[] - index summary +** ------------------------------- +** 0: wait +** 1: walk +** 2: fire +** +** rand() rules +** ------------ +** I. player is not in sight +** rand 0-3 | 0-2 wait | 3 walk +** II. player is in sight +** rand 0-7 | 0-1 wait | 2-5 walk | 6-7 +*/ + +static double + ft_get_dist(t_sprite sprite, t_cub *cl) +{ + return (sqrt(pow(cl->plist.pos_x - sprite.s_pos_x, 2) + + pow(cl->plist.pos_y - sprite.s_pos_y, 2))); +} + +static int8_t + ft_set_r_i(void) +{ + int8_t r; + + if (FT_OS == 2) + r = random() % 4; + else + r = rand() % 4; + if (r == 3) + return (1); + else + return (0); + return (r); +} + +static int8_t + ft_set_r_ii(void) +{ + int8_t r; + + if (FT_OS == 2) + r = random() % 8; + else + r = rand() % 8; + if (r <= 1) + return (0); + else if (r >= 2 && r <= 5) + return (1); + else + return (2); + return (r); +} void ft_select_bad_boy_action(t_cub *cl) @@ -23,16 +80,25 @@ void i = 0; while (i < cl->mlist.sprite_nbr[13]) { - if (cl->bad_boy[i].sleep == 0 && cl->bad_boy[i].life > 0) + if (cl->bad_boy[i].sleep == 0 && cl->bad_boy[i].life > 0 && + (ft_get_dist(cl->sprites[13][i], cl) > FT_ENMY_SIGHT_RANGE + || cl->rlist.wall_dist_tab[cl->wlist.x_size / 2] > + ft_get_dist(cl->sprites[13][0], cl))) + { + r = ft_set_r_i(); + } + else if (cl->bad_boy[i].sleep == 0 && cl->bad_boy[i].life > 0 && + (ft_get_dist(cl->sprites[13][i], cl) <= FT_ENMY_SIGHT_RANGE + || cl->rlist.wall_dist_tab[cl->wlist.x_size / 2] <= + ft_get_dist(cl->sprites[13][0], cl))) { - if (FT_OS == 2) - r = random() % 2; - else - r = rand() % 2; - cl->bad_boy[i].act[r](&cl->bad_boy[i], - &cl->sprites[13][i], &cl->mlist); - cl->bad_boy[i].sleep = 1; + r = ft_set_r_ii(); } + else if (cl->bad_boy[i].life <= 0) + /* something */ + cl->bad_boy[i].act[r](&cl->bad_boy[i], + &cl->sprites[13][i], &cl->mlist); + cl->bad_boy[i].sleep = 1; i++; } } |