aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--inc/cub3d.h2
-rw-r--r--inc/cub3d_structs.h2
-rw-r--r--map/map_one.cub12
-rw-r--r--src/ft_draw_heals.c2
-rw-r--r--src/ft_draw_sprite.c19
-rw-r--r--src/ft_draw_sprite_extra.c4
-rw-r--r--src/ft_draw_traps.c2
-rw-r--r--src/ft_get_sprite_spawns.c4
-rw-r--r--src/ft_init_map.c2
9 files changed, 25 insertions, 24 deletions
diff --git a/inc/cub3d.h b/inc/cub3d.h
index 84ce976..fa42b4f 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -79,7 +79,7 @@ void ft_draw_circle(float a, float b,
int8_t ft_draw_verline(t_cub *cl, int32_t x,
int32_t y1, int32_t y2);
void ft_sprite_h_w(t_cub *cl, t_sprite *sprite);
-void ft_sort_sprites(t_cub *cl);
+void ft_sort_sprites(t_cub *cl, int16_t i, int16_t j);
void ft_calc_sprite(t_cub *cl);
void ft_draw_sprite(t_cub *cl, t_sprite *sprite);
void ft_calc_trap(t_cub *cl);
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index dc2b411..fc3eead 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -202,7 +202,7 @@ typedef struct s_map
size_t map_w;
size_t map_h;
size_t mapl_len;
- int32_t sprite_nbr;
+ int32_t sprite_nbr[4096];
uint8_t sprite_var;
int32_t sprite_order[8][4096];
int32_t traps_nbr;
diff --git a/map/map_one.cub b/map/map_one.cub
index 15e49ee..625fe15 100644
--- a/map/map_one.cub
+++ b/map/map_one.cub
@@ -16,11 +16,13 @@ T ./media/img/spikes.xpm
SH 2
-111111111111111111
-10000000+0000+0001
-100000E000T0000001
-1001000000000+0001
-10110000+111000001
+ 1111111
+111111111111000001
+100000000000222201
+10000E000000333301
+100000000000444401
+100100000000000001
+101100000111000001
111111111111110011
1000001 100001
1001001 100001
diff --git a/src/ft_draw_heals.c b/src/ft_draw_heals.c
index d51ae97..bc1e1b2 100644
--- a/src/ft_draw_heals.c
+++ b/src/ft_draw_heals.c
@@ -41,7 +41,7 @@ void
int32_t it;
it = 0;
- while (it < cl->mlist.sprite_nbr)
+ while (it < cl->mlist.heals_nbr)
{
dist_tab[it] = ((cl->plist.pos_x - cl->heals[it].s_pos_x) *
(cl->plist.pos_x - cl->heals[it].s_pos_x) +
diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c
index ceea280..5fc28d3 100644
--- a/src/ft_draw_sprite.c
+++ b/src/ft_draw_sprite.c
@@ -18,7 +18,7 @@
#include <math.h>
static void
- ft_sort_sprites_norme(float *dist_tab, uint16_t *i, uint16_t j, t_cub *cl)
+ ft_sort_sprites_norme(float *dist_tab, int16_t *i, uint16_t j, t_cub *cl)
{
uint32_t tmp;
uint32_t it;
@@ -33,22 +33,18 @@ static void
tmp = cl->mlist.sprite_order[j][it];
cl->mlist.sprite_order[j][it] = cl->mlist.sprite_order[j][it + 1];
cl->mlist.sprite_order[j][it + 1] = tmp;
- it = 0;
+ *i = -1;
}
}
void
- ft_sort_sprites(t_cub *cl)
+ ft_sort_sprites(t_cub *cl, int16_t it, int16_t jt)
{
float dist_tab[8][4096];
- uint16_t it;
- uint16_t jt;
- it = -1;
- jt = -1;
- while (++jt < cl->mlist.sprite_var)
+ while (++jt <= cl->mlist.sprite_var)
{
- while (++it < cl->mlist.sprite_nbr)
+ while (++it <= cl->mlist.sprite_nbr[jt])
{
dist_tab[jt][it] =
((cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) *
@@ -62,8 +58,11 @@ void
it = -1;
jt = -1;
while (++jt < cl->mlist.sprite_var)
- while (++it < cl->mlist.sprite_nbr)
+ {
+ while (++it < cl->mlist.sprite_nbr[jt] - 1)
ft_sort_sprites_norme(dist_tab[jt], &it, jt, cl);
+ it = -1;
+ }
}
static void
diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c
index 9198e8d..f4ac6ee 100644
--- a/src/ft_draw_sprite_extra.c
+++ b/src/ft_draw_sprite_extra.c
@@ -58,10 +58,10 @@ void
i = 0;
j = 0;
- ft_sort_sprites(cl);
+ ft_sort_sprites(cl, -1, -1);
while (j < cl->mlist.sprite_var)
{
- while (i < cl->mlist.sprite_nbr)
+ while (i < cl->mlist.sprite_nbr[j])
{
sprite = cl->sprites[j][cl->mlist.sprite_order[j][i]];
sprite.current_sprite = (j == 0) ? 4 : j + 7;
diff --git a/src/ft_draw_traps.c b/src/ft_draw_traps.c
index 8bf2221..71e8fe8 100644
--- a/src/ft_draw_traps.c
+++ b/src/ft_draw_traps.c
@@ -41,7 +41,7 @@ void
int32_t it;
it = 0;
- while (it < cl->mlist.sprite_nbr)
+ while (it < cl->mlist.traps_nbr)
{
dist_tab[it] = ((cl->plist.pos_x - cl->traps[it].s_pos_x) *
(cl->plist.pos_x - cl->traps[it].s_pos_x) +
diff --git a/src/ft_get_sprite_spawns.c b/src/ft_get_sprite_spawns.c
index da883b2..d7b6677 100644
--- a/src/ft_get_sprite_spawns.c
+++ b/src/ft_get_sprite_spawns.c
@@ -29,7 +29,7 @@ void
{
if (clist->mlist.map[y][x] == c)
{
- clist->mlist.sprite_nbr++;
+ clist->mlist.sprite_nbr[s_n]++;
clist->sprites[s_n][i].s_pos_x = x;
clist->sprites[s_n][i].s_pos_y = y;
i++;
@@ -60,7 +60,7 @@ void
{
if (ft_ischarset("2", clist->mlist.map[y][x]))
{
- clist->mlist.sprite_nbr++;
+ clist->mlist.sprite_nbr[0]++;
clist->sprites[0][i].s_pos_x = x;
clist->sprites[0][i].s_pos_y = y;
i++;
diff --git a/src/ft_init_map.c b/src/ft_init_map.c
index d610fac..37fc858 100644
--- a/src/ft_init_map.c
+++ b/src/ft_init_map.c
@@ -62,6 +62,7 @@ int8_t
mlist->nly = 0;
mlist->sprite_var = 0;
mlist->topsp = 0;
+ ft_bzero(mlist->sprite_nbr, 4096);
ft_bzero(mlist->sprite_order, 4096);
ft_bzero(mlist->traps_order, 512);
return (0);
@@ -90,7 +91,6 @@ int8_t
mlist->isskybox = 0;
mlist->istraps = 0;
mlist->isheals = 0;
- mlist->sprite_nbr = 0;
mlist->traps_nbr = 0;
mlist->heals_nbr = 0;
mlist->darklvl = 0;