summaryrefslogtreecommitdiffhomepage
path: root/src/player.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/player.c')
-rw-r--r--src/player.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/player.c b/src/player.c
index b471fbf..9d1e01e 100644
--- a/src/player.c
+++ b/src/player.c
@@ -9,6 +9,8 @@
#include "cglm/vec2.h"
#include "wall.h"
+#include <math.h>
+
struct player_t
{
sprite_t sprite;
@@ -147,12 +149,23 @@ parse_player_input(void)
// if you arent mid jump, then record attempted movement
if(player.move_state != mv_state_jumping)
{
- float input_lr = (*(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL));
- float input_ud = (*(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL));
- player_position->dx = input_lr * (rodeo_frame_time_get() / (1000.0f/60.0f) * ((60.0f - (float)player.sprite.iter) / 60.0f));
- player_position->dy = input_ud * (rodeo_frame_time_get() / (1000.0f/60.0f) * ((60.0f - (float)player.sprite.iter) / 60.0f));
+ vec2 inputs = {
+ (*(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL)),
+ (*(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL))
+ };
+ if(glm_vec2_norm(inputs) > 1)
+ {
+ glm_vec2_normalize(inputs);
+ }
+ rodeo_log(
+ rodeo_logLevel_info,
+ "%f, %f",
+ inputs[0], inputs[1]
+ );
+ player_position->dx = inputs[0] * (rodeo_frame_time_get() / (1000.0f/60.0f) * ((60.0f - (float)player.sprite.iter) / 60.0f)) * 7;
+ player_position->dy = inputs[1] * (rodeo_frame_time_get() / (1000.0f/60.0f) * ((60.0f - (float)player.sprite.iter) / 60.0f)) * 7;
- if(((input_lr != 0) || (input_ud != 0)) && player.move_state == mv_state_standing)
+ if(((inputs[0] != 0) || (inputs[1] != 0)) && player.move_state == mv_state_standing)
{
player.move_state = mv_state_jumping;
player_position->dy = 0;
@@ -168,18 +181,18 @@ move_player(void)
{
if(player.move_state != mv_state_standing)
{
- player.sprite.iter += 1;
- player.sprite.iter %= player.sprite.config.count;
+ player.sprite.iter += 1 * rodeo_frame_time_get() / (1000.0f/60.0f);
+ player.sprite.iter = fmodf(player.sprite.iter, (float)player.sprite.config.count);
if(player.sprite.iter > 19)
{
player.move_state = mv_state_mid_air;
}
}
- if(player.sprite.iter == 60)
+ if((uint32_t)player.sprite.iter == 60)
{
player.move_state = mv_state_standing;
}
- if(player.sprite.iter == 1)
+ if((uint32_t)player.sprite.iter == 1)
{
rodeo_audio_sound_play(bubbles_sound);
}