/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   cub3d_defines.h                                    :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2020/02/15 15:40:25 by rbousset          #+#    #+#             */
/*   Updated: 2020/02/15 15:40:27 by rbousset         ###   ########lyon.fr   */
/*                                                                            */
/* ************************************************************************** */

#	ifndef CUB3D_DEFINES_H
#	define CUB3D_DEFINES_H

/*
** ====== RETURN VALUES ======
*/
enum
{
	FT_RET_FINE,
	FT_RET_BAD_ARGV,
	FT_RET_FAILED_STRUCTS,
	FT_RET_FAILED_MLX,
	FT_RET_MAP_ERROR,
	FT_RET_NO_MAP,
	FT_RET_READ_ERROR
}	retvals;

/*
** ret vals:
** 1: no argv[1]
** 2: failed structs init
** 3: failed mlx init
** 4: map error
** 5: no map
** 6: read error
*/

/*
** ====== OS ======
*/

/*
** 1: Darwin
** 2: Linux
*/

#	ifndef FT_OS
#	define FT_OS 1
#	endif

/*
** ====== KEYS ======
*/

#	if FT_OS == 1
#		define FT_W_KEY		13
#		define FT_A_KEY		0
#		define FT_S_KEY		1
#		define FT_D_KEY		2
#		define FT_L_ARR_KEY	123
#		define FT_R_ARR_KEY	124
#		define FT_F1_KEY	122
#		define FT_TAB_KEY	48
#		define FT_ESC_KEY	53
#	else
#		define FT_W_KEY		119
#		define FT_A_KEY		97
#		define FT_S_KEY		115
#		define FT_D_KEY		100
#		define FT_L_ARR_KEY	65361
#		define FT_R_ARR_KEY	65363
#		define FT_TAB_KEY	65289
#		define FT_F1_KEY	65470
#		define FT_ESC_KEY	65307
#	endif

/*
** ====== MUSIC CMD ======
*/
#	if FT_OS == 1
#		define FT_MUS_CMD ""
#	else
#		define FT_MUS_CMD "aplay -f cd -t wav -q %s"
#	endif

/*
** ====== MOVE SPEED ======
*/

#	define FT_MOVE_SPEED	0.2
#	define FT_STRAFE_SPEED	0.1
#	define FT_ROT_SPEED		0.09

/*
** ====== COLLISION ======
*/

#	define FT_COLL_MULT		0.225

/*
** ====== SCREEN ======
*/

#	ifndef FT_SCR_SIZE
#	define FT_SCR_SIZE "1920x1080"
#	endif

/*
** ====== MAP ERROR MSG ======
*/

#	define FT_ERR_ALLOCATE		"allocation error"
#	define FT_ERR_READ			"read error"
#	define FT_ERR_ARGS			"too many or to few arguments"
#	define FT_ERR_RES_SMALL		"resolution is too small, 50x50 minimum pls"
#	define FT_ERR_RES_ALPHA		"resolution should be digits only"
#	define FT_ERR_NOT_A_CUB		"given map is not a .cub"
#	define FT_ERR_NOT_A_XPM		"given texture is not a .xpm"
#	define FT_ERR_NOT_A_WAV		"given sound file is not a .wav"
#	define FT_ERR_COLOR_ALPHA	"colors should be digits only"
#	define FT_ERR_COLOR_MAX		"colors should be maximum 255"
#	define FT_ERR_COLOR_ARGS	"colors should be three numbers with commas"
#	define FT_ERR_UNFINISHED	"no map"
#	define FT_ERR_MAP_LEN		"map length inconsistency"
#	define FT_ERR_ILL_ENTRY		"illegal map entry"
#	define FT_ERR_ALR_SET		"duplicate entry"
#	define FT_ERR_ILL_MAP		"map contains illegal char"
#	define FT_ERR_MULT_SPAWN	"multiple spawn points"
#	define FT_ERR_MULT_NLVL		"multiple spawn new level access points"
#	define FT_ERR_MAP_WALLS		"bad space or map is not surrounded by walls"
#	define FT_ERR_MAP_EMPL		"empty line in map"
#	define FT_ERR_MAP_L_L		"last line is invalid"
#	define FT_ERR_RD_NO			"could not find north side texture file"
#	define FT_ERR_RD_SO			"could not find south side texture file"
#	define FT_ERR_RD_EA			"could not find east side texture file"
#	define FT_ERR_RD_WE			"could not find west side texture file"
#	define FT_ERR_RD_SP			"could not find sprite texture file"
#	define FT_ERR_RD_NL_TEX		"could not find next level texture file"
#	define FT_ERR_RD_NL_MAP		"could not find next level map file"
#	define FT_ERR_RD_MUSIC		"could not find music file"

/*
** ====== MISSING ERROR MSG ======
*/

#	define FT_ERR_MISS_ELEMENT		"Missing element:"
#	define FT_ERR_MISS_NORTH		"north side texture"
#	define FT_ERR_MISS_SOUTH		"south side texture"
#	define FT_ERR_MISS_EAST			"east side texture"
#	define FT_ERR_MISS_WEST			"west side texture"
#	define FT_ERR_MISS_SPRITE		"sprite texture"
#	define FT_ERR_MISS_NLVL_PATH	"next level path"
#	define FT_ERR_MISS_NLVL			"next level texture"
#	define FT_ERR_MISS_RESOLUTION	"resolution"
#	define FT_ERR_MISS_FLOOR_C		"floor color"
#	define FT_ERR_MISS_CEIL_C		"ceiling color"
#	define FT_ERR_MISS_PLAYER_SPAWN	"player spawn"

#	endif