/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_select_get.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/14 17:28:59 by rbousset #+# #+# */ /* Updated: 2020/02/14 17:28:59 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include #include #include static int8_t ft_check_exists(const int8_t ret, t_cub *clist) { if (ret == 12) return (12); if (ret == 0 && clist->currlvl == 0 && (clist->wlist.x_size != 0 || clist->wlist.y_size != 0)) return (-1); else if (ret == 1 && (clist->mlist.no_tex_path[0])) return (-1); else if (ret == 2 && (clist->mlist.so_tex_path[0])) return (-1); else if (ret == 3 && (clist->mlist.ea_tex_path[0])) return (-1); else if (ret == 4 && (clist->mlist.we_tex_path[0])) return (-1); else if (ret == 5 && (clist->mlist.sprite_path[0])) return (-1); else if (ret == 6 && ((clist->f_rgb.r != -1) || (clist->f_rgb.g != -1) || (clist->f_rgb.b != -1))) return (-1); else if (ret == 7 && ((clist->c_rgb.r != -1) || (clist->c_rgb.g != -1) || (clist->c_rgb.b != -1))) return (-1); return (ret); } static int8_t ft_check_exists_two(const int8_t ret, t_cub *clist) { if (ret == 12) return (12); if (ret == 8 && (clist->mlist.nlevel_path[0])) return (-1); if (ret == 9 && (clist->mlist.nl_tex_path[0])) return (-1); if (ret == 10 && (clist->mlist.music_path[0])) return (-1); return (ret); } static int8_t ft_get_id(char **words, t_cub *clist) { int8_t ret; char ref[12][3]; ft_sprintf(ref[0], "R"); ft_sprintf(ref[1], "NO"); ft_sprintf(ref[2], "SO"); ft_sprintf(ref[3], "EA"); ft_sprintf(ref[4], "WE"); ft_sprintf(ref[5], "S"); ft_sprintf(ref[6], "F"); ft_sprintf(ref[7], "C"); ft_sprintf(ref[8], "L"); ft_sprintf(ref[9], "LT"); ft_sprintf(ref[10], "MU"); ft_bzero(ref[11], 3); if (words[0][0] == ' ' || words[0][0] == '1') return (12); ret = 0; while (ft_strncmp(words[0], ref[ret], 3) && ref[ret][0]) ret++; if (ret == 11) ret = 12; ret = ft_check_exists(ret, clist); ret = ft_check_exists_two(ret, clist); return (ret); } int8_t ft_select_get(char **words, t_cub *clist) { int8_t id; if ((id = ft_get_id(words, clist)) == 12) { ft_free_words(words); return (12); } if (id < 0 || clist->get_ptr[id](words, clist) < 0) { ft_free_words(words); return ((id < 0) ? (-2) : (-1)); } ft_free_words(words); return (id); }