refactoring player pos etc
This commit is contained in:
parent
31e735d141
commit
1b307d24e2
15
inc/cub3d.h
15
inc/cub3d.h
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* :::::::: */
|
||||||
/* cub3d.h :+: :+: :+: */
|
/* cub3d.h :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */
|
/* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/04/22 17:15:32 by qmennen ### ########.fr */
|
/* Updated: 2025/04/25 13:53:48 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -38,6 +38,7 @@
|
|||||||
# include <allowed.h>
|
# include <allowed.h>
|
||||||
# include "types.h"
|
# include "types.h"
|
||||||
# include "errors.h"
|
# include "errors.h"
|
||||||
|
# include "vec_math.h"
|
||||||
# include "map.h"
|
# include "map.h"
|
||||||
# include "game.h"
|
# include "game.h"
|
||||||
# include "screen.h"
|
# include "screen.h"
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/17 19:19:19 by qmennen #+# #+# */
|
/* Created: 2025/04/17 19:19:19 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/04/23 12:26:56 by whaffman ######## odam.nl */
|
/* Updated: 2025/04/25 11:37:55 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -18,11 +18,11 @@
|
|||||||
int map_create(t_game **game, const char *mapfile);
|
int map_create(t_game **game, const char *mapfile);
|
||||||
void map_free(t_map *map);
|
void map_free(t_map *map);
|
||||||
void print_map(t_map *map);
|
void print_map(t_map *map);
|
||||||
t_tile get_tile(t_map * map, int x, int y);
|
t_tile get_tile(t_map *map, int x, int y);
|
||||||
int enclosed_map(t_map *map);
|
int enclosed_map(t_map *map);
|
||||||
void grid_free(t_tile **grid, int height);
|
void grid_free(t_tile **grid, int height);
|
||||||
t_tile **copy_map(t_tile **grid, int width, int height);
|
t_tile **copy_map(t_tile **grid, int width, int height);
|
||||||
int parse_args(const char *mapfile, t_map *map);
|
int parse_args(const char *mapfile, t_game *game);
|
||||||
t_tile **create_grid(int width, int height);
|
t_tile **create_grid(int width, int height);
|
||||||
int find_player_or_empty(t_map *map, int *x, int *y);
|
int find_player_or_empty(t_map *map, int *x, int *y);
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/19 14:41:55 by whaffman #+# #+# */
|
/* Created: 2025/04/19 14:41:55 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/04/24 11:38:31 by whaffman ######## odam.nl */
|
/* Updated: 2025/04/25 11:43:55 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -23,9 +23,10 @@ unsigned int parse_color(const char *color_str);
|
|||||||
int parse_config_line(const char *line, t_map *map);
|
int parse_config_line(const char *line, t_map *map);
|
||||||
int map_width(char **lines);
|
int map_width(char **lines);
|
||||||
int parse_tile(char c);
|
int parse_tile(char c);
|
||||||
int parse_map(char **lines, t_map *map);
|
int parse_map(char **lines, t_game *game);
|
||||||
int parse_file(char *buffer, t_map *map);
|
int parse_file(char *buffer, t_game *game);
|
||||||
void print_config(t_map *map);
|
void print_config(t_map *map);
|
||||||
|
int parse_map_line(char **lines, t_game *game, int i);
|
||||||
t_tile **copy_map(t_tile **grid, int width, int height);
|
t_tile **copy_map(t_tile **grid, int width, int height);
|
||||||
char **pointer_lines(char *buffer, char c);
|
char **pointer_lines(char *buffer, char c);
|
||||||
int valid_arguments(int argc, char **argv);
|
int valid_arguments(int argc, char **argv);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/23 12:21:13 by whaffman #+# #+# */
|
/* Created: 2025/04/23 12:21:13 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/04/24 11:45:24 by whaffman ######## odam.nl */
|
/* Updated: 2025/04/25 11:36:18 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -16,36 +16,34 @@
|
|||||||
|
|
||||||
int map_create(t_game **game, const char *mapfile)
|
int map_create(t_game **game, const char *mapfile)
|
||||||
{
|
{
|
||||||
t_map *map;
|
|
||||||
t_tile **grid;
|
t_tile **grid;
|
||||||
|
|
||||||
if (!game || !*game)
|
if (!(*game))
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
map = malloc(sizeof(t_map));
|
(*game)->map = malloc(sizeof(t_map));
|
||||||
if (!map)
|
if (!(*game)->map)
|
||||||
{
|
{
|
||||||
perror("Error allocating memory for map");
|
perror("Error allocating memory for (*game)->map");
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
}
|
}
|
||||||
parse_args(mapfile, map);
|
parse_args(mapfile, (*game));
|
||||||
grid = copy_map(map->grid, map->width, map->height);
|
grid = copy_map((*game)->map->grid, (*game)->map->width, (*game)->map->height);
|
||||||
if (!grid)
|
if (!grid)
|
||||||
{
|
{
|
||||||
perror("Error copying map");
|
perror("Error copying (*game)->map");
|
||||||
free(map);
|
free((*game)->map);
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
}
|
}
|
||||||
if (!enclosed_map(map))
|
if (!enclosed_map((*game)->map))
|
||||||
{
|
{
|
||||||
ft_putendl_fd("Map is not enclosed", STDERR_FILENO);
|
ft_putendl_fd("Map is not enclosed", STDERR_FILENO);
|
||||||
grid_free(grid, map->height);
|
grid_free(grid, (*game)->map->height);
|
||||||
map_free(map);
|
map_free((*game)->map);
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
}
|
}
|
||||||
grid_free(map->grid, map->height);
|
grid_free((*game)->map->grid, (*game)->map->height);
|
||||||
map->grid = grid;
|
(*game)->map->grid = grid;
|
||||||
print_config(map);
|
print_config((*game)->map);
|
||||||
|
|
||||||
(*game)->map = map;
|
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
@ -6,13 +6,13 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/23 12:17:49 by whaffman #+# #+# */
|
/* Created: 2025/04/23 12:17:49 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/04/23 12:26:24 by whaffman ######## odam.nl */
|
/* Updated: 2025/04/25 11:36:47 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "cub3d.h"
|
#include "cub3d.h"
|
||||||
|
|
||||||
int parse_args(const char *mapfile, t_map *map)
|
int parse_args(const char *mapfile, t_game *game)
|
||||||
{
|
{
|
||||||
char *buffer;
|
char *buffer;
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ int parse_args(const char *mapfile, t_map *map)
|
|||||||
perror("Error reading map file");
|
perror("Error reading map file");
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
}
|
}
|
||||||
if (!parse_file(buffer, map))
|
if (!parse_file(buffer, game))
|
||||||
{
|
{
|
||||||
ft_putstr_fd("Error parsing map file\n", 2);
|
ft_putstr_fd("Error parsing map file\n", 2);
|
||||||
free(buffer);
|
free(buffer);
|
||||||
|
|||||||
@ -6,13 +6,13 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/22 13:11:37 by whaffman #+# #+# */
|
/* Created: 2025/04/22 13:11:37 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/04/24 11:45:52 by whaffman ######## odam.nl */
|
/* Updated: 2025/04/25 11:38:44 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "cub3d.h"
|
#include "cub3d.h"
|
||||||
|
|
||||||
int parse_file(char *buffer, t_map *map)
|
int parse_file(char *buffer, t_game *game)
|
||||||
{
|
{
|
||||||
char **lines;
|
char **lines;
|
||||||
int i;
|
int i;
|
||||||
@ -23,11 +23,11 @@ int parse_file(char *buffer, t_map *map)
|
|||||||
i = 0;
|
i = 0;
|
||||||
while (lines[i] && !is_map_line(lines[i]))
|
while (lines[i] && !is_map_line(lines[i]))
|
||||||
{
|
{
|
||||||
if (*lines[i] && !parse_config_line(lines[i], map))
|
if (*lines[i] && !parse_config_line(lines[i], game->map))
|
||||||
return (free(lines), FAILURE);
|
return (free(lines), FAILURE);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (!parse_map(&lines[i], map))
|
if (!parse_map(&lines[i], game))
|
||||||
return (free(lines), FAILURE);
|
return (free(lines), FAILURE);
|
||||||
free(lines);
|
free(lines);
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
|
|||||||
@ -6,55 +6,88 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/22 13:12:04 by whaffman #+# #+# */
|
/* Created: 2025/04/22 13:12:04 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/04/22 13:19:21 by whaffman ######## odam.nl */
|
/* Updated: 2025/04/25 11:55:27 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "cub3d.h"
|
#include "cub3d.h"
|
||||||
|
|
||||||
int parse_map_line(char **lines, t_map *map, int i)
|
t_vec2 parse_dir(int x, int y)
|
||||||
{
|
{
|
||||||
int j;
|
t_vec2 dir;
|
||||||
|
|
||||||
map->grid[i] = malloc(sizeof(t_tile) * (map->width + 1));
|
dir.x = (float)x;
|
||||||
if (!map->grid[i])
|
dir.y = (float)y;
|
||||||
|
return (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
int parse_player(t_game *game, int y, int x, char c)
|
||||||
|
{
|
||||||
|
t_player *player;
|
||||||
|
|
||||||
|
player = game->player;
|
||||||
|
player->pos.x = ((float)x + 0.5f) * TILE_SIZE;
|
||||||
|
player->pos.y = ((float)y + 0.5f) * TILE_SIZE;
|
||||||
|
|
||||||
|
if (c == 'N')
|
||||||
|
player->dir = parse_dir(0, 1);
|
||||||
|
else if (c == 'E')
|
||||||
|
player->dir = parse_dir(1, 0);
|
||||||
|
else if (c == 'S')
|
||||||
|
player->dir = parse_dir(0, -1);
|
||||||
|
else if (c == 'W')
|
||||||
|
player->dir = parse_dir(-1, 0);
|
||||||
|
return (SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
int parse_map_line(char **lines, t_game *game, int y)
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
t_map *map;
|
||||||
|
|
||||||
|
map = game->map;
|
||||||
|
map->grid[y] = malloc(sizeof(t_tile) * (map->width + 1));
|
||||||
|
if (!map->grid[y])
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
j = 0;
|
x = 0;
|
||||||
while (j < map->width)
|
while (x < map->width)
|
||||||
{
|
{
|
||||||
if (j >= ft_strlen(lines[i]))
|
if (x >= ft_strlen(lines[y]))
|
||||||
map->grid[i][j] = TILE_VOID;
|
map->grid[y][x] = TILE_VOID;
|
||||||
else
|
else
|
||||||
map->grid[i][j] = parse_tile(lines[i][j]);
|
map->grid[y][x] = parse_tile(lines[y][x]);
|
||||||
if (map->grid[i][j] == -2)
|
if (map->grid[y][x] == TILE_PLAYER)
|
||||||
|
parse_player(game, y, x, lines[y][x]);
|
||||||
|
else if (map->grid[y][x] == -2)
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
j++;
|
if (map->grid[y][x] == -2)
|
||||||
|
return (FAILURE);
|
||||||
|
x++;
|
||||||
}
|
}
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
int parse_map(char **lines, t_map *map)
|
int parse_map(char **lines, t_game *game)
|
||||||
{
|
{
|
||||||
int i;
|
int y;
|
||||||
|
t_map *map;
|
||||||
|
|
||||||
i = 0;
|
y = 0;
|
||||||
while (lines[i])
|
while (lines[y])
|
||||||
i++;
|
y++;
|
||||||
map->height = i;
|
map = game->map;
|
||||||
|
map->height = y;
|
||||||
map->width = map_width(lines);
|
map->width = map_width(lines);
|
||||||
map->grid = malloc(sizeof(t_tile *) * (map->height + 1));
|
map->grid = malloc(sizeof(t_tile *) * (map->height + 1));
|
||||||
if (!map->grid)
|
if (!map->grid)
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
i = 0;
|
y = 0;
|
||||||
while (i < map->height)
|
while (y < map->height)
|
||||||
{
|
{
|
||||||
if (parse_map_line(lines, map, i) == FAILURE)
|
if (!parse_map_line(lines, game, y))
|
||||||
{
|
return (map_free(map), FAILURE);
|
||||||
map_free(map);
|
y++;
|
||||||
return (FAILURE);
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
map->grid[i] = NULL;
|
map->grid[y] = NULL;
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
|||||||
11
src/player.c
11
src/player.c
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */
|
/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/04/18 12:15:31 by whaffman ######## odam.nl */
|
/* Updated: 2025/04/25 13:54:11 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -47,11 +47,12 @@ static void move(t_map *map, t_player *player, int dir, float delta)
|
|||||||
|
|
||||||
static void rotate(t_player *player, float rot_speed)
|
static void rotate(t_player *player, float rot_speed)
|
||||||
{
|
{
|
||||||
double old_x;
|
// double old_x;
|
||||||
|
|
||||||
old_x = player->dir.x;
|
// // old_x = player->dir.x;
|
||||||
player->dir.x = player->dir.x * cos(rot_speed) - player->dir.y * sin(rot_speed);
|
// // player->dir.x = player->dir.x * cos(rot_speed) - player->dir.y * sin(rot_speed);
|
||||||
player->dir.y = old_x * sin(rot_speed) + player->dir.y * cos(rot_speed);
|
// // player->dir.y = old_x * sin(rot_speed) + player->dir.y * cos(rot_speed);
|
||||||
|
player->dir = rot(player->dir, rot_speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void player_update(t_game *game, float delta_time)
|
void player_update(t_game *game, float delta_time)
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* :::::::: */
|
||||||
/* initialize.c :+: :+: :+: */
|
/* initialize.c :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/22 17:08:26 by qmennen #+# #+# */
|
/* Created: 2025/04/22 17:08:26 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/04/22 17:21:37 by qmennen ### ########.fr */
|
/* Updated: 2025/04/25 11:20:49 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -16,12 +16,12 @@ int initialize_cub3d(t_game **game, const char *mapfile)
|
|||||||
{
|
{
|
||||||
if (!game_create(game))
|
if (!game_create(game))
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
|
if (!player_create(game))
|
||||||
|
return (FAILURE);
|
||||||
if (!map_create(game, mapfile))
|
if (!map_create(game, mapfile))
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
if (!screen_create(game))
|
if (!screen_create(game))
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
if (!player_create(game))
|
|
||||||
return (FAILURE);
|
|
||||||
if (!keyboard_create(game))
|
if (!keyboard_create(game))
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
if (!screen_display((*game)->screen))
|
if (!screen_display((*game)->screen))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user