crawl was redesigned to crwal1 and crawl2
This commit is contained in:
@@ -54,8 +54,20 @@ void render_loop(int speed) {
|
||||
}
|
||||
|
||||
if (uart_event == UartEvent::Triggered) {
|
||||
// start crawl frame for x time
|
||||
player_state.start_crawl();
|
||||
const char* msg = uart.get_message();
|
||||
PlayerState current = player_state.get_state();
|
||||
|
||||
if (msg && strstr(msg, "crawl2")) {
|
||||
// enter Crawl2 only if currently crawling in crawl1
|
||||
if (current == PlayerState::Crawl1)
|
||||
player_state.start_crawl(PlayerState::Crawl2);
|
||||
}
|
||||
else if (msg && strstr(msg, "crawl")) {
|
||||
// trigger normal crawl from walk/run
|
||||
if (current == PlayerState::Walk || current == PlayerState::Run)
|
||||
player_state.start_crawl(PlayerState::Crawl1);
|
||||
}
|
||||
|
||||
need_redraw = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,12 +27,20 @@ void draw_character(int x, int y, MovementType movement, int frame_index) {
|
||||
character_height = CHARACTER_RUN_FRAME_HEIGHT;
|
||||
break;
|
||||
|
||||
case MovementType::Crawl:
|
||||
total_frames = CHARACTER_CRAWL_FRAME_COUNT;
|
||||
case MovementType::Crawl1:
|
||||
total_frames = CHARACTER_CRAWL1_FRAME_COUNT;
|
||||
if (frame_index < 0 || frame_index >= total_frames)
|
||||
frame_index = 0;
|
||||
character = CHARACTER_CRAWL_FRAMES[frame_index];
|
||||
character_height = CHARACTER_CRAWL_FRAME_HEIGHT;
|
||||
character = CHARACTER_CRAWL1_FRAMES[frame_index];
|
||||
character_height = CHARACTER_CRAWL1_FRAME_HEIGHT;
|
||||
break;
|
||||
|
||||
case MovementType::Crawl2:
|
||||
total_frames = CHARACTER_CRAWL2_FRAME_COUNT;
|
||||
if (frame_index < 0 || frame_index >= total_frames)
|
||||
frame_index = 0;
|
||||
character = CHARACTER_CRAWL2_FRAMES[frame_index];
|
||||
character_height = CHARACTER_CRAWL2_FRAME_HEIGHT;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
enum class MovementType {
|
||||
Walk,
|
||||
Run,
|
||||
Crawl
|
||||
Crawl1,
|
||||
Crawl2
|
||||
};
|
||||
|
||||
// Draw the player object starting at given (x, y)
|
||||
|
||||
@@ -18,8 +18,11 @@ CharacterPosition get_aligned_frame_position(CharacterPosition base,
|
||||
case MovementType::Run:
|
||||
character_height = CHARACTER_RUN_FRAME_HEIGHT;
|
||||
break;
|
||||
case MovementType::Crawl:
|
||||
character_height = CHARACTER_CRAWL_FRAME_HEIGHT;
|
||||
case MovementType::Crawl1:
|
||||
character_height = CHARACTER_CRAWL1_FRAME_HEIGHT;
|
||||
break;
|
||||
case MovementType::Crawl2:
|
||||
character_height = CHARACTER_CRAWL2_FRAME_HEIGHT;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user