From 5b287c89362171175592c5eab247fb8a7b7d28ff Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Mon, 30 Mar 2020 19:45:31 +0200 Subject: Fine --- src/ft_select_bad_boy_action.c | 82 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 8 deletions(-) (limited to 'src/ft_select_bad_boy_action.c') 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 #include #include +#include + +/* +** 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++; } } -- cgit v1.2.3