89 lines
1.9 KiB
C
89 lines
1.9 KiB
C
#include "cube3d.h"
|
|
|
|
// temp, to map all the keys on linux and mac
|
|
static int print_keycode(int keycode, t_plr *plr)
|
|
{
|
|
ft_putnbr_fd(keycode, 1);
|
|
ft_putchar_fd(' ', 1);
|
|
ft_putnbr_fd(plr->rot, 1);
|
|
ft_putchar_fd('\n', 1);
|
|
return(0);
|
|
}
|
|
// temp end
|
|
|
|
int hook_action(t_game *game)
|
|
{
|
|
int is_action;
|
|
|
|
is_action = 0;
|
|
if (is_esc(game->k_hook, &is_action))
|
|
shut_down();
|
|
if (is_go_left(game->k_hook, &is_action))
|
|
plr_posx_decrement(game, &(game->plr));
|
|
if (is_go_right(game->k_hook, &is_action))
|
|
plr_posx_increment(game, &(game->plr));
|
|
if (is_go_forward(game->k_hook, &is_action))
|
|
plr_posy_decrement(game, &(game->plr));
|
|
if (is_go_backward(game->k_hook, &is_action))
|
|
plr_posy_increment(game, &(game->plr));
|
|
if (is_turn_left(game->k_hook, &is_action))
|
|
plr_turn_left(&(game->plr));
|
|
if (is_turn_right(game->k_hook, &is_action))
|
|
plr_turn_right(&(game->plr));
|
|
|
|
// tmp draw map
|
|
// // ray
|
|
// if (!ft_arrint(game->k_hook, 65364, MAX_NB_KEY))
|
|
// {
|
|
// if (game->ray_highlight <= SCREEN_WIDTH)
|
|
// game->ray_highlight++;
|
|
// else
|
|
// game->ray_highlight = -1;
|
|
// is_action = 1;
|
|
// }
|
|
// if (!ft_arrint(game->k_hook, 65362, MAX_NB_KEY))
|
|
// {
|
|
// if (game->ray_highlight >= 0)
|
|
// game->ray_highlight--;
|
|
// else
|
|
// game->ray_highlight = SCREEN_WIDTH;
|
|
// is_action = 1;
|
|
// }
|
|
// tmp end
|
|
|
|
if (is_action)
|
|
draw(game);
|
|
return(0);
|
|
}
|
|
|
|
int keypress(int keycode, t_game *game)
|
|
{
|
|
unsigned i;
|
|
|
|
// temp
|
|
print_keycode(keycode, &game->plr);
|
|
// temp end
|
|
|
|
i = 0;
|
|
while (i < MAX_NB_KEY && game->k_hook[i] != 0 && game->k_hook[i] != keycode)
|
|
i++;
|
|
if (game->k_hook[i] == keycode && i < MAX_NB_KEY)
|
|
game->k_hook[i] = 0;
|
|
else if (i < MAX_NB_KEY)
|
|
game->k_hook[i] = keycode;
|
|
// hook_action(game);
|
|
return (0);
|
|
}
|
|
|
|
int keyrelease(int keycode, t_game *game)
|
|
{
|
|
unsigned i;
|
|
|
|
i = 0;
|
|
while (i < MAX_NB_KEY && game->k_hook[i] != keycode)
|
|
i++;
|
|
if (i < MAX_NB_KEY)
|
|
game->k_hook[i] = 0;
|
|
return (0);
|
|
}
|