Cub3D
Loading...
Searching...
No Matches
get_type_element.c
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* get_type_element.c :+: :+: :+: */
5/* +:+ +:+ +:+ */
6/* By: kamitsui <kamitsui@student.42tokyo.jp> +#+ +:+ +#+ */
7/* +#+#+#+#+#+ +#+ */
8/* Created: 2024/11/15 00:42:00 by kamitsui #+# #+# */
9/* Updated: 2024/12/16 04:40:42 by kamitsui ### ########.fr */
10/* */
11/* ************************************************************************** */
12
13#include "cub3d.h"
14
15static bool is_texture_element(const char *str)
16{
17 const char *identifier[4] = {"NO ", "WE ", "EA ", "SO "};
18 size_t i;
19 size_t len;
20
21 i = 0;
22 while (i < 4)
23 {
24 len = ft_strlen(identifier[i]);
25 if (ft_strncmp(str, identifier[i], len) == 0)
26 return (true);
27 i++;
28 }
29 return (false);
30}
31
32static bool is_floor_ceiling_element(const char *str)
33{
34 const char *identifier[2] = {"F ", "C "};
35 size_t i;
36 size_t len;
37
38 i = 0;
39 while (i < 2)
40 {
41 len = ft_strlen(identifier[i]);
42 if (ft_strncmp(str, identifier[i], len) == 0)
43 return (true);
44 i++;
45 }
46 return (false);
47}
48
49static bool is_first_map_element(const char *str)
50{
51 const char *identifier = " 10";
52 size_t i;
53 size_t len;
54
55 if (*str == '\n')
56 return (false);
57 len = ft_strlen(identifier);
58 while (*str != '\n')
59 {
60 i = 0;
61 while (i < len)
62 {
63 if (ft_strncmp(str, identifier + i, (size_t)1) == 0)
64 break ;
65 i++;
66 }
67 if (i == len)
68 return (false);
69 str++;
70 }
71 return (true);
72}
73
74t_type_elem get_type_element(const char *line)
75{
76 if (is_texture_element(line) == true)
77 return (ENUM_TEX);
78 if (is_floor_ceiling_element(line) == true)
79 return (ENUM_FC);
80 if (is_first_map_element(line) == true)
81 return (ENUM_MAP);
82 return (ENUM_ELEMENT_ERR);
83}