movement class

This commit is contained in:
Filipriec
2025-11-20 17:37:27 +01:00
parent 3e47f855ed
commit ca7eac70e4
3 changed files with 23 additions and 22 deletions

View File

@@ -91,27 +91,28 @@ static inline int compute_frame_index(int frame_count,
}
} // namespace
void WalkingState::update() {
void MovementState::update() {
// stop crawling after duration
if ((current_state == PlayerState::Crawl1 ||
current_state == PlayerState::Crawl2) &&
state_timer.elapsed_time() >= CRAWL_DURATION) {
current_state = PlayerState::Walk;
current_state = previous_state;
state_timer.stop();
}
}
void WalkingState::start_crawl(PlayerState crawl_type) {
void MovementState::start_crawl(PlayerState crawl_type) {
if (crawl_type != PlayerState::Crawl1 && crawl_type != PlayerState::Crawl2)
return;
previous_state = current_state;
current_state = crawl_type;
state_timer.stop();
state_timer.reset();
state_timer.start();
}
void WalkingState::set_state(PlayerState s) {
void MovementState::set_state(PlayerState s) {
if (current_state != s) {
walk_index = run_index = crawl1_index = crawl2_index = 0;
phase = 0.0f;
@@ -119,7 +120,7 @@ void WalkingState::set_state(PlayerState s) {
current_state = s;
}
void WalkingState::set_motion_state_for_speed(int player_speed, int ground_speed) {
void MovementState::set_motion_state_for_speed(int player_speed, int ground_speed) {
int relative = player_speed - ground_speed;
PlayerState new_state = (relative > 1) ? PlayerState::Run : PlayerState::Walk;
if (new_state != current_state) {
@@ -130,7 +131,7 @@ void WalkingState::set_motion_state_for_speed(int player_speed, int ground_speed
}
// TODO THIS NEEDS REDESIGN FOR WALK/RUN
void WalkingState::toggle_walk_frame(float player_speed, int tick_counter) {
void MovementState::toggle_walk_frame(float player_speed, int tick_counter) {
switch (current_state) {
case PlayerState::Run:
run_index = compute_frame_index(CHARACTER_RUN_FRAME_COUNT, player_speed, tick_counter);
@@ -150,7 +151,7 @@ void WalkingState::toggle_walk_frame(float player_speed, int tick_counter) {
}
}
FrameSelection WalkingState::get_frame_selection() const {
FrameSelection MovementState::get_frame_selection() const {
FrameSelection f{};
switch (current_state) {
case PlayerState::Walk: