/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   cub3d.h                                            :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: qmennen <qmennen@student.codam.nl>         +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2025/04/15 12:22:29 by qmennen           #+#    #+#             */
/*   Updated: 2025/06/04 18:54:18 by qmennen          ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#ifndef CUB3D_H
# define CUB3D_H

# define FAILURE 0
# define SUCCESS 1

# define WIDTH 1920
# define HEIGHT 1080
# define TITLE "Cub3D"

#ifndef FULLSCREEN
# define FULLSCREEN 1
#endif

#ifndef START_STATE
# define START_STATE GAME_STATE_MENU
#endif

# ifndef M_PI
#  define M_PI 3.14159265358979323846
# endif

# define RESET   "\033[0m"
# define BLACK   "\033[0;30m"
# define RED     "\033[0;31m"
# define GREEN   "\033[0;32m"
# define YELLOW  "\033[0;33m"
# define BLUE    "\033[0;34m"
# define MAGENTA "\033[0;35m"
# define CYAN    "\033[0;36m"
# define WHITE   "\033[0;37m"

# define MAX_SCREENSHOTS 3
# define NUM_KEYS 300
# define TILE_SIZE 8
# define MINIMAP_SIZE 300
# define MAX_MENU_OPTIONS 3
# define MENU_OPTION_START 0
# define MENU_OPTION_SCOREBOARD 1
# define MENU_OPTION_EXIT 2

# include "MLX42.h"
# include "allowed.h"
# include "libft.h"
# include "types.h"
# include "errors.h"
# include "vec_math.h"
# include "game.h"
# include "screen.h"
# include "keyboard.h"
# include "hooks.h"
# include "render.h"
# include "player.h"
# include "collision.h"
# include "parser.h"
# include "texture.h"
# include "game_manager.h"
# include "game_menu.h"
# include "monster.h"

int		initialize_cub3d(t_game **game, const char *mapfile);
int		shader_init(t_game **game);
void	set_uniforms(t_game *game);
int		load_uniforms(t_game **game);
void	count_scores(t_game *game);
int		count_tiles(t_map *map, t_tile tile_type);

#endif
