diff --git a/game/src/event/evtman.c b/game/src/event/evtman.c index 9788929..6976658 100644 --- a/game/src/event/evtman.c +++ b/game/src/event/evtman.c @@ -117,9 +117,11 @@ evtman_init () evtman_add_handler (0, SDL_EVENT_KEY_DOWN, evt_pred_key, KEY (SDLK_SPACE), evt_cb_flag_on, "flying_up"); evtman_add_handler (0, SDL_EVENT_KEY_UP, evt_pred_key, KEY (SDLK_SPACE), evt_cb_flag_off, "flying_up"); - evtman_add_handler (0, SDL_EVENT_KEY_DOWN, evt_pred_key, KEY (SDLK_LSHIFT), evt_cb_flag_on, "flying_down"); - evtman_add_handler (0, SDL_EVENT_KEY_UP, evt_pred_key, KEY (SDLK_LSHIFT), evt_cb_flag_off, "flying_down"); - + evtman_add_handler (0, SDL_EVENT_KEY_DOWN, evt_pred_key, KEY (SDLK_LCTRL), evt_cb_flag_on, "flying_down"); + evtman_add_handler (0, SDL_EVENT_KEY_UP, evt_pred_key, KEY (SDLK_LCTRL), evt_cb_flag_off, "flying_down"); + evtman_add_handler (0, SDL_EVENT_KEY_DOWN, evt_pred_key, KEY (SDLK_LSHIFT), evt_cb_flag_on, "flying_fast"); + evtman_add_handler (0, SDL_EVENT_KEY_UP, evt_pred_key, KEY (SDLK_LSHIFT), evt_cb_flag_off, "flying_fast"); + #undef KEY } diff --git a/game/src/state.c b/game/src/state.c index cbfe54c..3789ae3 100644 --- a/game/src/state.c +++ b/game/src/state.c @@ -30,12 +30,19 @@ game_state_tick (int ticks) sky. */ sky_entity->position[0] = camera_position[0]; sky_entity->position[2] = camera_position[2]; + + int speed = 5; + + if (flags_get ("flight_enabled") && flags_get ("flying_fast")) + { + speed = 10; + } if (flags_get ("moving_forward")) { vec3 dir, change, new_pos; camera_get_direction (dir); - glm_vec3_scale (dir, delta_time * 5, change); + glm_vec3_scale (dir, delta_time * speed, change); glm_vec3_add (player_entity->position, change, new_pos); glm_vec3_copy (new_pos, player_entity->position); } @@ -44,7 +51,7 @@ game_state_tick (int ticks) { vec3 dir, change, new_pos; camera_get_direction (dir); - glm_vec3_scale (dir, delta_time * 5, change); + glm_vec3_scale (dir, delta_time * speed, change); glm_vec3_sub (player_entity->position, change, new_pos); glm_vec3_copy (new_pos, player_entity->position); } @@ -53,7 +60,7 @@ game_state_tick (int ticks) { vec3 right, change, new_pos; camera_get_right (right); - glm_vec3_scale (right, delta_time * 5, change); + glm_vec3_scale (right, delta_time * speed, change); glm_vec3_add (player_entity->position, change, new_pos); glm_vec3_copy (new_pos, player_entity->position); } @@ -62,15 +69,15 @@ game_state_tick (int ticks) { vec3 right, change, new_pos; camera_get_right (right); - glm_vec3_scale (right, delta_time * 5, change); + glm_vec3_scale (right, delta_time * speed, change); glm_vec3_sub (player_entity->position, change, new_pos); glm_vec3_copy (new_pos, player_entity->position); } - + if (flags_get ("flying_up") && flags_get ("flight_enabled")) { vec3 change, new_pos; - glm_vec3_scale (GLM_YUP, delta_time * 5, change); + glm_vec3_scale (GLM_YUP, delta_time * speed, change); glm_vec3_add (player_entity->position, change, new_pos); glm_vec3_copy (new_pos, player_entity->position); } @@ -78,7 +85,7 @@ game_state_tick (int ticks) if (flags_get ("flying_down") && flags_get ("flight_enabled")) { vec3 change, new_pos; - glm_vec3_scale (GLM_YUP, delta_time * 5, change); + glm_vec3_scale (GLM_YUP, delta_time * speed, change); glm_vec3_sub (player_entity->position, change, new_pos); glm_vec3_copy (new_pos, player_entity->position); }