Refactor game and parser files for improved memory management and code clarity, and Error if D is used but texture not set
This commit is contained in:
parent
2c37d62475
commit
555f2dc00c
@ -1,12 +1,12 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* game.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */
|
||||
/* Updated: 2025/06/10 15:25:17 by qmennen ### ########.fr */
|
||||
/* :::::::: */
|
||||
/* game.c :+: :+: */
|
||||
/* +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */
|
||||
/* Updated: 2025/06/10 19:12:41 by whaffman ######## odam.nl */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -20,6 +20,7 @@ int game_create(t_game **game)
|
||||
ft_memset(*game, 0, sizeof(t_game));
|
||||
(*game)->fps = 20;
|
||||
(*game)->scoreboard = malloc(sizeof(t_scoreboard));
|
||||
ft_memset((*game)->scoreboard, 0, sizeof(t_scoreboard));
|
||||
if (!(*game)->scoreboard)
|
||||
{
|
||||
return (free(*game), FAILURE);
|
||||
@ -100,7 +101,9 @@ void game_free(t_game *game)
|
||||
map_free(game->map);
|
||||
if (game->keyboard)
|
||||
free(game->keyboard);
|
||||
if (game->scoreboard)
|
||||
if (game->scoreboard && game->screen && game->screen->mlx)
|
||||
free_scoreboard(game->screen->mlx, game->scoreboard);
|
||||
else if (game->scoreboard)
|
||||
free(game->scoreboard);
|
||||
game->scoreboard = NULL;
|
||||
}
|
||||
|
||||
20
src/main.c
20
src/main.c
@ -1,12 +1,12 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* main.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */
|
||||
/* Updated: 2025/06/04 18:53:54 by qmennen ### ########.fr */
|
||||
/* :::::::: */
|
||||
/* main.c :+: :+: */
|
||||
/* +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */
|
||||
/* Updated: 2025/06/10 19:13:38 by whaffman ######## odam.nl */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -22,11 +22,7 @@ int main(int argc, char **argv)
|
||||
if (!valid_arguments(argc, argv))
|
||||
return (EXIT_FAILURE);
|
||||
if (!initialize_cub3d(&game, argv[1]))
|
||||
{
|
||||
perror("initialize_cub3d");
|
||||
game_free(game);
|
||||
return (EXIT_FAILURE);
|
||||
}
|
||||
return (game_free(game), EXIT_FAILURE);
|
||||
manager = game_manager_create(game, START_STATE);
|
||||
manager->menu = create_main_menu(manager);
|
||||
manager->end_screen = create_end_screen(manager);
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* parse_map.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/22 13:12:04 by whaffman #+# #+# */
|
||||
/* Updated: 2025/06/10 15:45:35 by qmennen ### ########.fr */
|
||||
/* :::::::: */
|
||||
/* parse_map.c :+: :+: */
|
||||
/* +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* Created: 2025/04/22 13:12:04 by whaffman #+# #+# */
|
||||
/* Updated: 2025/06/10 19:14:51 by whaffman ######## odam.nl */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -52,7 +52,7 @@ int parse_map_line(char **lines, t_game *game, int y)
|
||||
if (x >= ft_strlen(lines[y]))
|
||||
map->grid[y][x] = TILE_VOID;
|
||||
else
|
||||
map->grid[y][x] = parse_tile(lines[y][x]);
|
||||
map->grid[y][x] = parse_tile(game, lines[y][x]);
|
||||
if (map->grid[y][x] == TILE_PLAYER)
|
||||
{
|
||||
if (!parse_player(game, y, x, lines[y][x]))
|
||||
@ -85,7 +85,6 @@ int prepare_map(char **lines, t_game *game)
|
||||
if (!map->grid)
|
||||
return (FAILURE);
|
||||
ft_memset(map->grid, 0, sizeof(t_tile *) * (map->height + 1));
|
||||
printf(" n_sprite_max %d\n", map->n_sprites_max);
|
||||
map->sprites = malloc(sizeof(t_sprite) * (map->n_sprites_max + 1));
|
||||
if (!map->sprites)
|
||||
return (FAILURE);
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* parse_tile.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/22 13:12:31 by whaffman #+# #+# */
|
||||
/* Updated: 2025/06/04 17:50:07 by qmennen ### ########.fr */
|
||||
/* :::::::: */
|
||||
/* parse_tile.c :+: :+: */
|
||||
/* +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* Created: 2025/04/22 13:12:31 by whaffman #+# #+# */
|
||||
/* Updated: 2025/06/10 19:15:19 by whaffman ######## odam.nl */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "cub3d.h"
|
||||
|
||||
int parse_tile(char c)
|
||||
int parse_tile(t_game *game, char c)
|
||||
{
|
||||
if (c == '1')
|
||||
return (TILE_WALL);
|
||||
@ -23,7 +23,12 @@ int parse_tile(char c)
|
||||
else if (c == 'N' || c == 'S' || c == 'E' || c == 'W')
|
||||
return (TILE_PLAYER);
|
||||
else if (c == 'D')
|
||||
return (TILE_DOOR);
|
||||
{
|
||||
if (game->map->textures[SIDE_DOOR] == NULL)
|
||||
return (ft_putstr_fd("Error: Door texture not set\n", 2), -2);
|
||||
else
|
||||
return (TILE_DOOR);
|
||||
}
|
||||
else if (c >= 'a' && c <= 'z')
|
||||
return (TILE_EMPTY);
|
||||
else
|
||||
|
||||
Loading…
Reference in New Issue
Block a user