obstacles finally spawning
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user