aboutsummaryrefslogtreecommitdiffstats
path: root/inc/cub3d_structs.h
blob: ecbbaf3170f9ff46aac047a9ae5c005649334fbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   cub3d_structs.h                                    :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2020/02/14 17:20:05 by rbousset          #+#    #+#             */
/*   Updated: 2020/02/14 17:20:06 by rbousset         ###   ########lyon.fr   */
/*                                                                            */
/* ************************************************************************** */

#	ifndef CUB3D_STRUCTS_H
#	define CUB3D_STRUCTS_H

#include <stddef.h>
#include <stdlib.h>
#include <stdint.h>
#include <sys/types.h>

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_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;
}						t_img;

typedef struct			s_rgb
{
	int16_t				r;
	int16_t				g;
	int16_t				b;
}						t_rgb;

typedef struct			s_sprite
{
	int32_t				s_screen_x;
	int32_t				s_pos_x;
	int32_t				s_pos_y;
	double				s_x;
	double				s_y;
	int32_t				s_h;
	int32_t				s_w;
	int32_t				s_start_x;
	int32_t				s_start_y;
	int32_t				s_end_x;
	int32_t				s_end_y;
	int32_t				s_tex_y;
	double				sprite_transform_x;
	double				sprite_transform_y;
	double				sprite_dist;
	double				inv_c_m;
}						t_sprite;

typedef struct			s_player
{
	float				pos_x;
	float				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;
}						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_ray_dir_bis;
	float				y_ray_dir_bis;
	float				x_side_dist;
	float				y_side_dist;
	float				x_delta_dist;
	float				y_delta_dist;
	float				floor_x;
	float				floor_y;
	int16_t				ceil_x;
	int16_t				ceil_y;
	float				row_dist;
	float				ceil_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;
}						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				*sprite_path;
	char				*nl_tex_path;
	char				*nlevel_path;
	char				*music_path;
	char				*music_cmd;
	char				*mapl;
	char				**map;
	char				**mcmd_words;
	int8_t				x_step;
	int8_t				y_step;
	int8_t				x_floor_step;
	int8_t				y_floor_step;
	size_t				map_w;
	size_t				map_h;
	size_t				mapl_len;
	size_t				line_chk;
	size_t				map_start;
	uint8_t				isspawn;
	uint8_t				isnlvl;
	uint8_t				ismusic;
	uint8_t				scale;
	uint32_t			nlx;
	uint32_t			nly;
}						t_map;

typedef struct			s_cub
{
	uint8_t				w_side;
	uint8_t				ishud;
	uint8_t				walltexgood;
	uint8_t				isoldmus;
	uint16_t			currlvl;
	uint16_t			i;
	char *const			*envp;
	char				errmsg[64];
	int32_t				key_input[5];
	pid_t				mpid;
	int					(*key_ptr[6])(struct s_cub*);
	int8_t				(*get_ptr[11])(char**, struct s_cub*);
	struct s_win		wlist;
	struct s_player		plist;
	struct s_map		mlist;
	struct s_ray		rlist;
	struct s_img		img;
	struct s_rgb		f_rgb;
	struct s_rgb		c_rgb;
	struct s_img		tlist[6];
	struct s_sprite		sp_list;
}						t_cub;

#	endif