/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* cub3d_defines.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/15 15:40:25 by rbousset #+# #+# */ /* Updated: 2020/02/15 15:40:27 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ # ifndef CUB3D_STRUCTS_H # define CUB3D_STRUCTS_H #include #include #include #include #include typedef struct s_win { void *wlx; void *winptr; uint8_t inited; uint16_t x_max_size; uint16_t y_max_size; uint32_t x_size; uint32_t y_size; } t_win; # pragma pack(push, 1) typedef struct s_bmp_file { uint16_t file_type; uint32_t file_size; uint16_t reserv_one; uint16_t reserv_two; uint32_t offset_data; } t_bmp_file; typedef struct s_bmp_info { uint32_t size; int32_t width; int32_t height; uint16_t planes; uint16_t bit_count; uint32_t compression; uint32_t size_image; int32_t x_pixels_per_meter; int32_t y_pixels_per_meter; uint32_t colors_used; uint32_t colors_important; } t_bmp_info; typedef struct s_sfx { char *cmd; char *cmd_alt; pthread_t tid; pthread_mutex_t mutex; void (*sfx_play)(struct s_sfx *); } t_sfx; typedef struct s_bmp_rgb { uint8_t r; uint8_t g; uint8_t b; } t_bmp_rgb; # pragma pack(pop) typedef struct s_img { void *img; char *ptr; int bpp; int sizeline; int endian; int img_w; int img_h; int tex_x; int tex_y; int tex_x_alt; int tex_y_alt; } t_img; typedef struct s_rgb { int16_t r; int16_t g; int16_t b; } t_rgb; typedef struct s_sprite { int32_t spritescreenx; int32_t current_sprite; int32_t x; int32_t y; int32_t tex_x; int32_t tex_y; double s_pos_x; double s_pos_y; uint8_t r; double spritex; double spritey; int8_t exists; int32_t spriteheight; int32_t spritewidth; int32_t drawstartx; int32_t drawstarty; int32_t drawendx; int32_t drawendy; int32_t s_tex_y; double transformx; double transformy; double sprite_dist; double invdet; } t_sprite; typedef struct s_player { double pos_x; double pos_y; float pos_z; float start_x; float start_y; float dir_x; float dir_y; float cam_x; float plane_x; float plane_y; uint8_t fire; int16_t life; uint8_t has_weapon[3]; int8_t handles_weapon; int16_t ammo[3]; float weap_vel[3]; } t_player; typedef struct s_ray { uint16_t line_h; float wall_dist; float x_ray_pos; float y_ray_pos; float x_ray_dir; float y_ray_dir; float x_side_dist; float y_side_dist; float x_delta_dist; float y_delta_dist; int16_t wall_t; int16_t wall_b; uint8_t side; size_t sqx; size_t sqy; uint8_t hit; double wall_hit_x; double step_tex_v; float x_f_ray_dir; float y_f_ray_dir; float x_f_ray_dir_bis; float y_f_ray_dir_bis; uint16_t p; float row_dist; float x_floor; float y_floor; int32_t *tex_x_tab; int32_t ***fc_tex_x_tab; int32_t ***fc_tex_y_tab; float *row_dist_tab; int16_t *wall_t_tab; int16_t *wall_b_tab; uint8_t *w_side_tab; uint16_t *line_h_tab; float *wall_dist_tab; } t_ray; typedef struct s_map { char *filename; char *no_tex_path; char *so_tex_path; char *ea_tex_path; char *we_tex_path; char *nl_tex_path; char *fl_tex_path; char *ce_tex_path; char *nlevel_path; char *traps_path; char *music_path; char *music_cmd; char *mapl; char **sprite_path; char **map; int8_t x_step; int8_t y_step; size_t map_w; size_t map_h; size_t mapl_len; int16_t sprite_nbr[FT_TOTAL_SPRT]; uint8_t sprite_var; int32_t sprite_order[FT_TOTAL_SPRT][4096]; int32_t st_o[FT_TOTAL_SPRT + 1]; size_t line_chk; size_t map_start; uint8_t isspawn; uint8_t enemy; uint8_t isnlvl; uint8_t ismusic; uint8_t isftex; uint8_t isctex; uint8_t istraps; uint8_t isheals; uint8_t darklvl; uint16_t scale; int8_t topsp; uint32_t nlx; uint32_t nly; float x_floor_step; float y_floor_step; } t_map; typedef struct s_bad_boy { int8_t life; int8_t does; int8_t sleep; int8_t isdead; void (*act[3])(struct s_bad_boy*, struct s_sprite*, t_map*); } t_bad_boy; typedef struct s_cub { uint8_t w_side; uint8_t ishud; uint8_t walltexgood; uint8_t isoldmus; uint8_t doicast; uint8_t clickclose; uint16_t currlvl; uint16_t i; uint16_t y; float **big_t; uint16_t big_t_val; char errmsg[64]; int32_t key_input[5]; char fps_count[9]; pthread_t mtid; int8_t isdead; uint8_t moves; uint16_t map_back_h; uint16_t map_back_w; uint16_t amm_back_h; uint16_t amm_back_w; uint16_t life_cap_h; uint16_t life_cap_w; uint16_t life_num_h; uint16_t life_num_w; uint16_t ammo_cap_h; uint16_t ammo_cap_w; uint16_t ammo_num_h; uint16_t ammo_num_w; int (*key_ptr[6])(struct s_cub*); int8_t (*get_ptr[14])(char**, struct s_cub*); char ref[23][3]; struct s_win wlist; struct s_player plist; struct s_map mlist; struct s_ray rlist; struct s_img img; struct s_img death_screen; struct s_rgb f_rgb; struct s_rgb c_rgb; struct s_img tlist[27]; struct s_img tweap[6]; struct s_img tnum[12]; struct s_sprite **sprites; struct s_sfx sfx[FT_TOTAL_SFX]; struct s_bad_boy *bad_boy; } t_cub; # endif