obstacles finally spawning

This commit is contained in:
Priec
2025-11-17 18:59:14 +01:00
parent ae2b8b91aa
commit c56dac3b6a
5 changed files with 156 additions and 4 deletions

View File

@@ -7,10 +7,13 @@
#include "player.h"
#include "../game/state.h"
#include "../game/animation.h"
#include "../game/collision.h"
#include "../hardware/uart.h"
#include "../render/player.h"
#include "../render/obstacle.h"
#include "../timing/speed_controller.h"
#include "../timing/movement_controller.h"
#include "../game/obstacle_system.h"
extern BufferedSerial serial_port;
extern DigitalOut led;
@@ -38,9 +41,14 @@ void render_loop(int speed) {
int anim_tick_counter = 0;
int tick_counter = 0;
int player_speed = 6;
bool game_over = false;
player_state.set_state(PlayerState::Run);
while (true) {
spawn_obstacle(CrawlObstacleType::Crawl1, 40);
obstacle_pool[0].data.y = 8;
obstacle_pool[0].active = true;
while (!game_over) {
tick_counter++;
mover.update_position(player_speed, timing.get_ground_speed());
@@ -56,11 +64,9 @@ void render_loop(int speed) {
if (uart_event == UartEvent::Triggered) {
PlayerState current = player_state.get_state();
// pressing UART trigger while walking/running -> Crawl1
if (current == PlayerState::Walk || current == PlayerState::Run) {
player_state.start_crawl(PlayerState::Crawl1);
}
// pressing again while crawling -> Crawl2
else if (current == PlayerState::Crawl1) {
player_state.start_crawl(PlayerState::Crawl2);
}
@@ -84,6 +90,17 @@ void render_loop(int speed) {
CharacterPosition draw_pos = get_aligned_frame_position(pos, frame.movement, frame.frame_index);
draw_character(draw_pos.x, draw_pos.y, frame.movement, frame.frame_index);
for (int i = 0; i < MAX_OBSTACLES; i++) {
if (!obstacle_pool[i].active)
continue;
draw_obstacle(obstacle_pool[i].data.x,
obstacle_pool[i].data.y,
obstacle_pool[i].type);
}
if (game_over)
break;
ThisThread::sleep_for(50ms);
}