-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwolf3d.c
72 lines (65 loc) · 2.32 KB
/
wolf3d.c
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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* wolf3d.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: idemchen <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/07/13 20:19:39 by idemchen #+# #+# */
/* Updated: 2017/07/31 19:06:36 by idemchen ### ########.fr */
/* */
/* ************************************************************************** */
#include "wolf3d.h"
void wolf_mlx_init(t_wolf *wolf)
{
char *name;
MLX.mlx = mlx_init();
MLX.win = mlx_new_window(MLX.mlx,
WHEIGHT, WWIDTH, name = ft_strjoin("Wolf3d :", wolf->argv[1]));
KEY.hints = 1;
free(name);
}
void wolf_data_init(t_wolf *wolf)
{
POS = (t_position){0, 0, 3, 3};
DIRECTION = (t_xy){-1, 0};
PLANE = (t_xy){0, 0.66};
KEY = (t_key){0, 0, 0, 0, 1, 0};
ACLR = (t_acceleration){0.05, 0.05};
CTEXTURES = (t_map){0, 0};
wolf_inject_textures(wolf);
}
char *wolf_init_map(char *map)
{
if (map[0] < '1' || map[0] > '3' || ft_strlen(map) != 1)
exit(write(2,
"There are only 3 levels yet so far. Use ./wolf3d [1-3]\n", 55));
if (map[0] == '1')
return (g_map1);
else if (map[0] == '2')
return (g_map2);
else if (map[0] == '3')
return (g_map3);
else
exit(write(2, "No such map dude\n", 17));
return (0);
}
int main(int argc, char **argv)
{
t_wolf wolf;
if (argc != 2)
return ((int)write(2, "Right usage: ./wolf3d [1-3]\n", 28));
wolf = (t_wolf){wolf_init_map(argv[1]), 0, argv,
.mlx = {0}, .map_s = {0}, .key = {0}, .coords = {0},
.textures = {{0}}, .draw = {0}};
wolf_parse_map(&wolf);
wolf_mlx_init(&wolf);
mlx_hook(wolf.mlx.win, 17, 0L, wolf_exit, &wolf);
mlx_hook(wolf.mlx.win, 2, (1L << 0), &wolf_key_press, &wolf);
mlx_hook(wolf.mlx.win, 3, (1L << 1), &wolf_key_release, &wolf);
wolf_data_init(&wolf);
wolf_ray(&wolf);
mlx_loop_hook(wolf.mlx.mlx, wolf_movement, &wolf);
mlx_loop(wolf.mlx.mlx);
return (0);
}