aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--inc/cub3d_defines.h19
-rw-r--r--inc/cub3d_structs.h1
-rw-r--r--map/map_one.cub4
-rw-r--r--src/ft_draw_map.c18
-rw-r--r--src/ft_get_player_spawn.c60
-rw-r--r--src/ft_init_lists.c1
-rw-r--r--src/ft_key_events.c3
7 files changed, 78 insertions, 28 deletions
diff --git a/inc/cub3d_defines.h b/inc/cub3d_defines.h
index b129206..e6c98c5 100644
--- a/inc/cub3d_defines.h
+++ b/inc/cub3d_defines.h
@@ -6,28 +6,31 @@
*/
# ifndef FT_W_KEY
-# define FT_W_KEY 13
+# define FT_W_KEY 13
# endif
# ifndef FT_A_KEY
-# define FT_A_KEY 0
+# define FT_A_KEY 0
# endif
# ifndef FT_S_KEY
-# define FT_S_KEY 1
+# define FT_S_KEY 1
# endif
# ifndef FT_D_KEY
-# define FT_D_KEY 2
+# define FT_D_KEY 2
# endif
# ifndef FT_L_ARR_KEY
-# define FT_L_ARR_KEY 123
+# define FT_L_ARR_KEY 123
# endif
# ifndef FT_R_ARR_KEY
-# define FT_R_ARR_KEY 124
+# define FT_R_ARR_KEY 124
# endif
# ifndef FT_ESC_KEY
-# define FT_ESC_KEY 53
+# define FT_ESC_KEY 53
# endif
# ifndef FT_F1_KEY
-# define FT_F1_KEY 122
+# define FT_F1_KEY 122
+# endif
+# ifndef FT_TAB_KEY
+# define FT_TAB_KEY 48
# endif
/*
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index 9dae0be..eee6188 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -55,7 +55,6 @@ typedef struct s_player
{
float pos_x;
float pos_y;
- float view_side;
float dir_x;
float dir_y;
float cam_x;
diff --git a/map/map_one.cub b/map/map_one.cub
index 1a82a84..902d106 100644
--- a/map/map_one.cub
+++ b/map/map_one.cub
@@ -6,8 +6,8 @@ EA ./path_to_the_east_texture
WE ./path_to_the_west_texture
S ./path_to_the_sprite_texture
-F 200,225,145
-C 225,30,156
+F 150,150,145
+C 30,130,175
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
diff --git a/src/ft_draw_map.c b/src/ft_draw_map.c
index 202439b..2e17d69 100644
--- a/src/ft_draw_map.c
+++ b/src/ft_draw_map.c
@@ -13,6 +13,14 @@
#include <cub3d.h>
#include <stdint.h>
+static uint16_t
+ ft_y_offset(t_cub *clist)
+{
+ return (clist->wlist->y_size
+ - (clist->mlist->map_h * clist->mlist->scale)
+ + clist->mlist->scale - 1);
+}
+
static void
ft_draw_player(t_player *plist, t_cub *clist)
{
@@ -22,7 +30,7 @@ static void
ft_draw_square(
scale + (x * (scale)),
- scale + (y * (scale)),
+ ft_y_offset(clist) + (y * (scale)),
0x009843fa,
clist);
}
@@ -42,13 +50,13 @@ void
{
if (map[y][x] == '1')
ft_draw_square(scale + (x * (scale)),
- scale + (y * (scale)), 0x0000ffaa, clist);
+ ft_y_offset(clist) + (y * (scale)), 0x0000ffaa, clist);
else if (map[y][x] == '2')
ft_draw_square(scale + (x * (scale)),
- scale + (y * (scale)), 0x0033ccff, clist);
+ ft_y_offset(clist) + (y * (scale)), 0x0033ccff, clist);
else
- ft_draw_square(scale + (x * (scale)), scale + (y * (scale)),
- ft_rgb_to_hex(clist->f_rgb), clist);
+ ft_draw_square(scale + (x * (scale)), ft_y_offset(clist) +
+ (y * (scale)), ft_rgb_to_hex(clist->f_rgb), clist);
x++;
}
x = 0;
diff --git a/src/ft_get_player_spawn.c b/src/ft_get_player_spawn.c
index 74e2231..c848872 100644
--- a/src/ft_get_player_spawn.c
+++ b/src/ft_get_player_spawn.c
@@ -12,20 +12,60 @@
#include <libft.h>
#include <cub3d.h>
+#include <math.h>
#include <stdint.h>
-static uint8_t
- ft_get_view_side(char c)
+static void
+ ft_get_e_dir(t_player *pl)
{
- if (c == 'N')
- return (1);
- else if (c == 'E')
- return (2);
+ float sav_dir_x;
+ float sav_plane_x;
+
+ sav_dir_x = pl->dir_x;
+ pl->dir_x = pl->dir_y;
+ pl->dir_y = sav_dir_x;
+ sav_plane_x = pl->plane_x;
+ pl->plane_x = pl->plane_y;
+ pl->plane_y = sav_plane_x;
+}
+
+static void
+ ft_get_s_dir(t_player *pl)
+{
+ float sav_dir_x;
+ float sav_plane_x;
+
+ sav_dir_x = pl->dir_x;
+ pl->dir_x = -pl->dir_x;
+ pl->dir_y = -pl->dir_y;
+ sav_plane_x = pl->plane_x;
+ pl->plane_x = -pl->plane_x;
+ pl->plane_y = -pl->plane_y;
+}
+
+static void
+ ft_get_w_dir(t_player *pl)
+{
+ float sav_dir_x;
+ float sav_plane_x;
+
+ sav_dir_x = pl->dir_x;
+ pl->dir_x = -pl->dir_y;
+ pl->dir_y = -sav_dir_x;
+ sav_plane_x = pl->plane_x;
+ pl->plane_x = -pl->plane_y;
+ pl->plane_y = -sav_plane_x;
+}
+
+static void
+ ft_get_start_side(char c, t_player *pl)
+{
+ if (c == 'E')
+ ft_get_e_dir(pl);
else if (c == 'S')
- return (3);
+ ft_get_s_dir(pl);
else if (c == 'W')
- return (4);
- return (1);
+ ft_get_w_dir(pl);
}
void
@@ -44,7 +84,7 @@ void
{
plist->pos_x = x;
plist->pos_y = y;
- plist->view_side = ft_get_view_side(clist->mlist->map[y][x]);
+ ft_get_start_side(clist->mlist->map[y][x], clist->plist);
return ;
}
x++;
diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c
index a66634a..dc50231 100644
--- a/src/ft_init_lists.c
+++ b/src/ft_init_lists.c
@@ -37,7 +37,6 @@ static t_player
return (NULL);
plist->pos_x = 0;
plist->pos_y = 0;
- plist->view_side = 0;
plist->cam_x = 0;
plist->dir_x = -1;
plist->dir_y = 0;
diff --git a/src/ft_key_events.c b/src/ft_key_events.c
index 92928ea..395761e 100644
--- a/src/ft_key_events.c
+++ b/src/ft_key_events.c
@@ -32,6 +32,7 @@ static uint16_t
(tmp_code == 5) ? (keycode = UINT16_MAX) : 0;
(tmp_code == FT_ESC_KEY) ? (keycode = FT_ESC_KEY) : 0;
(tmp_code == FT_F1_KEY) ? (keycode = FT_F1_KEY) : 0;
+ (tmp_code == FT_TAB_KEY) ? (keycode = FT_TAB_KEY) : 0;
return (keycode);
}
@@ -66,7 +67,7 @@ int
}
else if (keycode == FT_ESC_KEY)
return (ft_exit(0, (clist)));
- else if (keycode == FT_F1_KEY)
+ else if (keycode == FT_F1_KEY || keycode == FT_TAB_KEY)
return (ft_f1_key(clist));
return (0);
}