some norminette and some cleaning
This commit is contained in:
parent
02ff526212
commit
fd4fb3c93f
12 changed files with 102 additions and 79 deletions
|
@ -6,7 +6,7 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/17 14:43:09 by mcolonna #+# #+# */
|
||||
/* Updated: 2024/11/07 17:13:28 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 19:03:25 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -30,18 +30,6 @@ typedef struct s_input_actions
|
|||
/// when the user presses the corresponding key.
|
||||
extern t_input_actions g_input_actions;
|
||||
|
||||
/// @brief To call when a specific key is newly pressed.
|
||||
///
|
||||
/// @param keycode Key pressed.
|
||||
/// @return Unused.
|
||||
int hook_keypress(int keycode);
|
||||
|
||||
/// @brief To call when a specific key is released.
|
||||
///
|
||||
/// @param keycode Key released.
|
||||
/// @return Unused.
|
||||
int hook_keyrelease(int keycode);
|
||||
|
||||
/// @brief To handle the input of a window.
|
||||
///
|
||||
/// @param mlx_ptr mlx connection identifier
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/31 17:04:08 by mc #+# #+# */
|
||||
/* Updated: 2024/10/31 17:28:09 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 19:07:25 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -40,8 +40,8 @@ typedef struct s_ray
|
|||
{
|
||||
// pos player on map (cases)
|
||||
t_point_double dir;
|
||||
bool side;
|
||||
double wallx;
|
||||
bool side;
|
||||
double wallx;
|
||||
} t_ray;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/15 16:56:47 by mcolonna #+# #+# */
|
||||
/* Updated: 2024/11/01 20:55:00 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 19:07:03 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -15,21 +15,19 @@
|
|||
|
||||
# include "include.h"
|
||||
|
||||
typedef uint32_t u_int32_t;
|
||||
|
||||
/// @brief Represents a point of double type.
|
||||
typedef struct s_point_double
|
||||
{
|
||||
double x;
|
||||
double y;
|
||||
} t_point_double;
|
||||
} t_point_double;
|
||||
|
||||
/// @brief Represents a point of int type.
|
||||
typedef struct s_point_int
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
} t_point_int;
|
||||
} t_point_int;
|
||||
|
||||
// TODO Must the transparency be 0 or 255?
|
||||
/// @brief Represents an TRGB color in 0xTTRRGGBB format.
|
||||
|
@ -60,7 +58,7 @@ void timedloop(void (*f)(void));
|
|||
///
|
||||
/// @param img_ptr mlx image to use.
|
||||
/// @return Address to the data, or NULL if error.
|
||||
u_int32_t *get_data_addr(void *img_ptr);
|
||||
uint32_t *get_data_addr(void *img_ptr);
|
||||
|
||||
/// @brief Create a vector according to the angle with a specific norm.
|
||||
/// (0 rad returns (0;-1) / pi/2 rad returns (1;0))
|
||||
|
@ -68,7 +66,8 @@ u_int32_t *get_data_addr(void *img_ptr);
|
|||
/// @param vec This will be set to the result.
|
||||
/// @param angle Angle to use in radians.
|
||||
/// @param norm Norm the vector must have.
|
||||
void vector_from_rotation(t_point_double *vec, double angle, double norm);
|
||||
void vector_from_rotation(t_point_double *vec, double angle,
|
||||
double norm);
|
||||
|
||||
/// @brief Size of buffer used in read_all_text().
|
||||
# define READ_ALL_TEXT_BUFFER_SIZE 1000
|
||||
|
@ -81,6 +80,6 @@ void vector_from_rotation(t_point_double *vec, double angle, double norm);
|
|||
///
|
||||
/// @param fd File descriptor of the file.
|
||||
/// @return Alloc'd string of the file content. NULL if error.
|
||||
char *read_all_text(int fd);
|
||||
char *read_all_text(int fd);
|
||||
|
||||
#endif
|
||||
|
|
23
src/input.c
23
src/input.c
|
@ -6,11 +6,13 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/17 14:43:36 by mcolonna #+# #+# */
|
||||
/* Updated: 2024/11/07 18:37:52 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 19:03:15 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "input.h"
|
||||
#include "input_utils.h"
|
||||
|
||||
#include "global.h"
|
||||
#include "const.h"
|
||||
|
||||
|
@ -37,33 +39,18 @@ static void set_action(int keycode, bool value)
|
|||
set_quit(NULL);
|
||||
}
|
||||
|
||||
int hook_keypress(int keycode)
|
||||
static int hook_keypress(int keycode)
|
||||
{
|
||||
set_action(keycode, true);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int hook_keyrelease(int keycode)
|
||||
static int hook_keyrelease(int keycode)
|
||||
{
|
||||
set_action(keycode, false);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int hook_mousemove(int x, int y)
|
||||
{
|
||||
static const t_point_int window_middle = {
|
||||
SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2};
|
||||
static bool first_call = true;
|
||||
const int dx = x - window_middle.x;
|
||||
|
||||
if (!first_call && dx)
|
||||
g_input_actions.rotate += dx;
|
||||
first_call = false;
|
||||
if (x != window_middle.x || y != window_middle.y)
|
||||
mlx_mouse_move(g_mlx, g_win, window_middle.x, window_middle.y);
|
||||
return (0);
|
||||
}
|
||||
|
||||
// TODO hide cursor without leak?
|
||||
void input_init(void *mlx_ptr, void *win_ptr)
|
||||
{
|
||||
|
|
28
src/input_utils.c
Normal file
28
src/input_utils.c
Normal file
|
@ -0,0 +1,28 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* input_utils.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/11/07 19:02:04 by mc #+# #+# */
|
||||
/* Updated: 2024/11/07 19:02:15 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "input_utils.h"
|
||||
|
||||
static int hook_mousemove(int x, int y)
|
||||
{
|
||||
static const t_point_int window_middle = {
|
||||
SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2};
|
||||
static bool first_call = true;
|
||||
const int dx = x - window_middle.x;
|
||||
|
||||
if (!first_call && dx)
|
||||
g_input_actions.rotate += dx;
|
||||
first_call = false;
|
||||
if (x != window_middle.x || y != window_middle.y)
|
||||
mlx_mouse_move(g_mlx, g_win, window_middle.x, window_middle.y);
|
||||
return (0);
|
||||
}
|
20
src/input_utils.h
Normal file
20
src/input_utils.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* input_utils.h :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/11/07 19:02:26 by mc #+# #+# */
|
||||
/* Updated: 2024/11/07 19:03:02 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef INPUT_UTILS_H
|
||||
# define INPUT_UTILS_H
|
||||
|
||||
# include "input.h"
|
||||
|
||||
static int hook_mousemove(int x, int y);
|
||||
|
||||
#endif
|
12
src/main.c
12
src/main.c
|
@ -6,17 +6,17 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/31 16:57:40 by mc #+# #+# */
|
||||
/* Updated: 2024/11/07 17:12:44 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 18:44:01 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "main.h"
|
||||
|
||||
# include "render.h"
|
||||
# include "move.h"
|
||||
# include "input.h"
|
||||
# include "const.h"
|
||||
# include "global.h"
|
||||
#include "render.h"
|
||||
#include "move.h"
|
||||
#include "input.h"
|
||||
#include "const.h"
|
||||
#include "global.h"
|
||||
|
||||
static int g_return_value = 0;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/01 17:12:58 by mcolonna #+# #+# */
|
||||
/* Updated: 2024/11/07 15:49:39 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 18:58:34 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -81,7 +81,8 @@ void map_destroy(t_map *map)
|
|||
d = 0;
|
||||
while (d < 4)
|
||||
{
|
||||
mlx_destroy_image(g_mlx, map->textures[d].image);
|
||||
if (map->textures[d].image)
|
||||
mlx_destroy_image(g_mlx, map->textures[d].image);
|
||||
free((void *)map->texture_srcs[d]);
|
||||
d++;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/03 15:05:13 by mc #+# #+# */
|
||||
/* Updated: 2024/11/06 19:34:01 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 19:04:19 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -74,6 +74,6 @@ bool read_map_description(t_map *map, t_stream *stream);
|
|||
/// @param map Map to use.
|
||||
void map_init_objects(t_map *map);
|
||||
|
||||
bool load_textures(t_map *map);
|
||||
bool load_textures(t_map *map);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/03 15:02:09 by mc #+# #+# */
|
||||
/* Updated: 2024/11/06 19:33:31 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 18:59:07 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -74,41 +74,40 @@ bool read_string_parameter(const char *name, const char **dest,
|
|||
|
||||
static void read_map2(t_map *dest, bool *err, bool *rdf)
|
||||
{
|
||||
ft_memset(dest, '\0', sizeof(dest));
|
||||
ft_memset(dest, '\0', sizeof(t_map));
|
||||
dest->color_ceiling = 0xFF000000;
|
||||
dest->color_floor = 0xFF000000;
|
||||
*err = false;
|
||||
*rdf = false;
|
||||
}
|
||||
|
||||
bool read_map(t_map *dest, t_stream *s)
|
||||
bool read_map(t_map *d, t_stream *s)
|
||||
{
|
||||
bool err;
|
||||
bool rdf;
|
||||
bool err[2];
|
||||
int old_stream_i;
|
||||
|
||||
read_map2(dest, &err, &rdf);
|
||||
while (!rdf && !err && s->str[s->i])
|
||||
read_map2(d, &err[0], &err[1]);
|
||||
while (!err[1] && !err[0] && s->str[s->i])
|
||||
{
|
||||
old_stream_i = s->i;
|
||||
if ((read_expected_string("\n", s, &err), err)
|
||||
&& !read_string_parameter("NO", &dest->texture_srcs[NORTH], s, &rdf)
|
||||
&& !read_string_parameter("SO", &dest->texture_srcs[SOUTH], s, &rdf)
|
||||
&& !read_string_parameter("WE", &dest->texture_srcs[WEST], s, &rdf)
|
||||
&& !read_string_parameter("EA", &dest->texture_srcs[EAST], s, &rdf)
|
||||
&& !read_color_parameter("F", &dest->color_floor, s, &rdf)
|
||||
&& !read_color_parameter("C", &dest->color_ceiling, s, &rdf))
|
||||
if ((read_expected_string("\n", s, &err[0]), err[0])
|
||||
&& !read_string_parameter("NO", &d->texture_srcs[NORTH], s, &err[1])
|
||||
&& !read_string_parameter("SO", &d->texture_srcs[SOUTH], s, &err[1])
|
||||
&& !read_string_parameter("WE", &d->texture_srcs[WEST], s, &err[1])
|
||||
&& !read_string_parameter("EA", &d->texture_srcs[EAST], s, &err[1])
|
||||
&& !read_color_parameter("F", &d->color_floor, s, &err[1])
|
||||
&& !read_color_parameter("C", &d->color_ceiling, s, &err[1]))
|
||||
{
|
||||
s->i = old_stream_i;
|
||||
err = !read_map_description(dest, s);
|
||||
err[0] = !read_map_description(d, s);
|
||||
break ;
|
||||
}
|
||||
err = false;
|
||||
err[0] = false;
|
||||
}
|
||||
if (!rdf && !dest->cases)
|
||||
err = (write_err("Map description missing\n", NULL), true);
|
||||
(rdf || err) && (map_destroy(dest), false);
|
||||
return (!err && !rdf && dest->cases);
|
||||
if (!err[1] && !d->cases)
|
||||
err[0] = (write_err("Map description missing\n", NULL), true);
|
||||
(err[1] || err[0]) && (map_destroy(d), false);
|
||||
return (!err[0] && !err[1] && d->cases);
|
||||
}
|
||||
|
||||
void map_init_objects(t_map *map)
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/04 15:12:08 by mcolonna #+# #+# */
|
||||
/* Updated: 2024/11/07 00:08:13 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 19:05:06 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -103,15 +103,16 @@ bool read_map_description(t_map *map, t_stream *stream)
|
|||
return (true);
|
||||
}
|
||||
|
||||
bool load_textures(t_map *map)
|
||||
bool load_textures(t_map *map)
|
||||
{
|
||||
t_direction d;
|
||||
|
||||
d = 0;
|
||||
while (d < 4) {
|
||||
while (d < 4)
|
||||
{
|
||||
map->textures[d].image = mlx_xpm_file_to_image(g_mlx,
|
||||
(char *)(map->texture_srcs[d]),
|
||||
&map->textures[d].width, &map->textures[d].height);
|
||||
(char *)(map->texture_srcs[d]),
|
||||
&map->textures[d].width, &map->textures[d].height);
|
||||
d++;
|
||||
}
|
||||
return (true);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/* By: mc <mc@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/10/29 14:02:37 by mcolonna #+# #+# */
|
||||
/* Updated: 2024/10/31 17:25:34 by mc ### ########.fr */
|
||||
/* Updated: 2024/11/07 18:44:16 by mc ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -23,7 +23,7 @@ u_int32_t *get_data_addr(void *img_ptr)
|
|||
if (bpp != 32 || endian != 0)
|
||||
{
|
||||
write_err("Wrong bpp or wrong endian when using mlx_get_data_addr().\n",
|
||||
NULL);
|
||||
NULL);
|
||||
return (NULL);
|
||||
}
|
||||
return (r);
|
||||
|
|
Loading…
Add table
Reference in a new issue