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
}
}
vec_enemies.iter_mut().for_each(|f| {
if f.active {
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 enemy_count > 8 {
let _ = vec_enemies.remove(0);
}
vec_enemies
.push(Enemy {
active: true,
@ -113,6 +117,10 @@ pub unsafe fn gameloop() {
p.speed_change = true;
p.speed -= 1
}
if p.counter == 30 {
p.level += 1;
p.gamemode = GameMode::NextLevel;
}
}
progmem!();

View file

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