added next level loop to the game and reduced 10% ram usage

This commit is contained in:
Zenn 2023-08-21 05:56:22 +02:00
parent 6be633cc9b
commit d5d27498a7
2 changed files with 11 additions and 1 deletions

View file

@ -25,6 +25,7 @@ pub unsafe fn gameloop() {
p.active = true p.active = true
} }
} }
vec_enemies.iter_mut().for_each(|f| { vec_enemies.iter_mut().for_each(|f| {
if f.active { if f.active {
sprites::draw_override(f.rect.x * 8, f.rect.y * 8, f.bitmap, f.bitmap_frame); sprites::draw_override(f.rect.x * 8, f.rect.y * 8, f.bitmap, f.bitmap_frame);
@ -58,6 +59,9 @@ pub unsafe fn gameloop() {
} }
}); });
if arduboy.every_x_frames((p.speed * 2) as u8) && enemy_count < 30 { if arduboy.every_x_frames((p.speed * 2) as u8) && enemy_count < 30 {
if enemy_count > 8 {
let _ = vec_enemies.remove(0);
}
vec_enemies vec_enemies
.push(Enemy { .push(Enemy {
active: true, active: true,
@ -113,6 +117,10 @@ pub unsafe fn gameloop() {
p.speed_change = true; p.speed_change = true;
p.speed -= 1 p.speed -= 1
} }
if p.counter == 30 {
p.level += 1;
p.gamemode = GameMode::NextLevel;
}
} }
progmem!(); progmem!();

View file

@ -29,6 +29,7 @@ pub struct Player {
pub immortal_frame_count: u8, pub immortal_frame_count: u8,
pub active: bool, pub active: bool,
pub live: u8, pub live: u8,
pub level: u8,
pub speed: u8, pub speed: u8,
pub speed_change: bool, pub speed_change: bool,
pub counter: u8, pub counter: u8,
@ -41,6 +42,7 @@ pub struct Player {
pub static mut p: Player = Player { pub static mut p: Player = Player {
gamemode: GameMode::Titlescreen, gamemode: GameMode::Titlescreen,
live: 3, live: 3,
level: 1,
immortal: false, immortal: false,
immortal_frame_count: 0, immortal_frame_count: 0,
active: true, active: true,
@ -141,7 +143,7 @@ pub unsafe extern "C" fn loop_() {
arduboy.display(); arduboy.display();
} }
pub static mut enemy_count: u8 = 0; pub static mut enemy_count: u8 = 0;
pub static mut vec_enemies: Vec<Enemy, 30> = Vec::<Enemy, 30>::new(); pub static mut vec_enemies: Vec<Enemy, 9> = Vec::<Enemy, 9>::new();
progmem!( progmem!(
static text_gameover: [u8; _] = *b"Game Over\0"; static text_gameover: [u8; _] = *b"Game Over\0";
static text_levelwin: [u8; _] = *b"Congrats\0"; static text_levelwin: [u8; _] = *b"Congrats\0";