multiple frames now added and working

This commit is contained in:
Priec
2025-11-14 23:53:45 +01:00
parent 285840b521
commit 11f5eb7fd1
12 changed files with 108 additions and 128 deletions

View File

@@ -1,38 +1,43 @@
// src/game/state.cpp
#include "state.h"
#include "../render/player.h"
void WalkingState::update() {
// stop crawling after duration
if (current_state == PlayerState::Crawl1 &&
if (current_state == PlayerState::Crawl &&
state_timer.elapsed_time() >= CRAWL_DURATION) {
current_state = PlayerState::Walk1;
current_state = PlayerState::Walk;
state_timer.stop();
}
}
void WalkingState::start_crawl() {
current_state = PlayerState::Crawl1;
current_state = PlayerState::Crawl;
state_timer.reset();
state_timer.start();
}
// TODO THIS NEEDS REDESIGN ACCORDING TO SPEED
void WalkingState::toggle_walk_frame() {
if (current_state == PlayerState::Walk1) {
current_state = PlayerState::Walk2;
} else if (current_state == PlayerState::Walk2) {
current_state = PlayerState::Walk1;
}
if (++walk_index >= 7) walk_index = 0;
}
CharacterFrame WalkingState::get_character_frame() const {
FrameSelection WalkingState::get_frame_selection() const {
FrameSelection f{MovementType::Walk, 0};
switch (current_state) {
case PlayerState::Walk1:
return CharacterFrame::Walk1;
case PlayerState::Walk2:
return CharacterFrame::Walk2;
case PlayerState::Crawl1:
return CharacterFrame::Crawl1;
default:
return CharacterFrame::Walk1;
case PlayerState::Walk:
f.movement = MovementType::Walk;
f.frame_index = walk_index;
break;
case PlayerState::Run:
f.movement = MovementType::Run;
f.frame_index = run_index;
break;
case PlayerState::Crawl:
f.movement = MovementType::Crawl;
f.frame_index = crawl_index;
break;
}
return f;
}