diff options
| author | realtradam <[email protected]> | 2023-05-26 17:22:44 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-05-26 17:22:44 -0400 |
| commit | 524040a76a673b0fcc7ad49ac009fc4506ef76e1 (patch) | |
| tree | 615d57809c9dc00195d683c322d93710361d237e /src | |
| parent | 16afc70b4e30668ae65b241c8502d9747f2a139e (diff) | |
| download | TOJam2023-524040a76a673b0fcc7ad49ac009fc4506ef76e1.tar.gz TOJam2023-524040a76a673b0fcc7ad49ac009fc4506ef76e1.zip | |
added staggered player movement
Diffstat (limited to 'src')
| -rw-r--r-- | src/player.c | 46 | ||||
| -rw-r--r-- | src/player.h | 9 |
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); |
