summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-05-26 17:22:44 -0400
committerrealtradam <[email protected]>2023-05-26 17:22:44 -0400
commit524040a76a673b0fcc7ad49ac009fc4506ef76e1 (patch)
tree615d57809c9dc00195d683c322d93710361d237e
parent16afc70b4e30668ae65b241c8502d9747f2a139e (diff)
downloadTOJam2023-524040a76a673b0fcc7ad49ac009fc4506ef76e1.tar.gz
TOJam2023-524040a76a673b0fcc7ad49ac009fc4506ef76e1.zip
added staggered player movement
-rw-r--r--src/player.c46
-rw-r--r--src/player.h9
2 files changed, 47 insertions, 8 deletions
diff --git a/src/player.c b/src/player.c
index ef9a2a3..01bb98b 100644
--- a/src/player.c
+++ b/src/player.c
@@ -11,6 +11,7 @@ struct player_t
int32_t hp;
float damage_timer;
world_id collision_id;
+ move_state_t move_state;
}
player;
@@ -91,15 +92,44 @@ parse_player_input(void)
units_move_down_input(NULL, &reset_movement);
units_move_left_input(NULL, &reset_movement);
units_move_right_input(NULL, &reset_movement);
- player_position->dx = *(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL);
- player_position->dy = *(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL);
+
+ // if you arent mid jump, then record attempted movement
+ if(player.move_state != mv_state_jumping)
+ {
+ player_position->dx = *(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL);
+ player_position->dy = *(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL);
+
+ if(((player_position->dy != 0) || (player_position->dx != 0)) && player.move_state == mv_state_standing)
+ {
+ player.move_state = mv_state_jumping;
+ player_position->dy = 0;
+ player_position->dx = 0;
+ }
+ }
}
void
move_player(void)
{
- player.sprite.iter += 1;
- player.sprite.iter %= player.sprite.config.count;
+ rodeo_log(
+ rodeo_logLevel_info,
+ "%d, %d\n",
+ player.move_state,
+ player.sprite.iter
+ );
+ if(player.move_state != mv_state_standing)
+ {
+ player.sprite.iter += 1;
+ player.sprite.iter %= player.sprite.config.count;
+ if(player.sprite.iter > 19)
+ {
+ player.move_state = mv_state_mid_air;
+ }
+ }
+ if(player.sprite.iter == 60)
+ {
+ player.move_state = mv_state_standing;
+ }
cvec_collision_2d_world_item_value *player_position = rodeo_collision_2d_world_item_get_by_id(player.collision_id);
player_position->x += player_position->dx;
player_position->dx = 0;
@@ -127,21 +157,21 @@ player_shoot(rodeo_collision_2d_world_t *bullet_collision_world)
);
}
}
-
+/*
void player_enemy_resolver(
rodeo_collision_2d_world_item_t *player_collision,
rodeo_collision_2d_world_item_t *enemy_collision
)
{
- if (player.damage_cooldown > 1.0) {
+ if (player.damage_timer > 1.0) {
player.hp -= 10;
- player.damage_cooldown = 0;
+ player.damage_timer = 0;
}
if (player.hp <= 0) {
//game over
}
}
-
+*/
void
detect_player_enemy_collisions(void)
{
diff --git a/src/player.h b/src/player.h
index 3418c6b..affca8c 100644
--- a/src/player.h
+++ b/src/player.h
@@ -4,6 +4,15 @@
#include "rodeo/collision.h"
#include "input.h"
+typedef
+enum
+{
+ mv_state_standing,
+ mv_state_jumping,
+ mv_state_mid_air
+}
+move_state_t;
+
void
init_player(void);