From a178c99795a37119fb0c7b935e71a272cd405312 Mon Sep 17 00:00:00 2001 From: radow <masteroftheriddles@googlemail.com> Date: Sun, 4 Jul 2021 13:27:40 +0200 Subject: [PATCH] ensured entities spawn on empty tile --- src/game_state/level.rs | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/game_state/level.rs b/src/game_state/level.rs index 6d160c9..75faa04 100644 --- a/src/game_state/level.rs +++ b/src/game_state/level.rs @@ -107,13 +107,13 @@ impl Level { } fn add_entity(entity: Tile, board: Board) -> Board { - let empty_count = Level::count_empty_tiles(board); - let entity_position = thread_rng().gen_range(0, empty_count); - let entity_x = entity_position / config::BOARD_HEIGHT; - let entity_y = entity_position % config::BOARD_HEIGHT; - + // let empty_count = Level::count_empty_tiles(board); + // let entity_position = thread_rng().gen_range(0, empty_count); + // let entity_x = entity_position / config::BOARD_HEIGHT; + // let entity_y = entity_position % config::BOARD_HEIGHT; + let entity_pos = Level::get_empty_tile(board); let mut board = board.clone(); - board[entity_x][entity_y] = entity; + board[entity_pos.x][entity_pos.y] = entity; board } @@ -130,6 +130,24 @@ impl Level { result } + + fn get_empty_tile(board:Board) -> Vec2<usize>{ + let empty_count = Level::count_empty_tiles(board); + let empty_position = thread_rng().gen_range(0, empty_count); + let mut empty_skipped:usize = 0; + for x in 0..board.len() { + for y in 0..board[x].len() { + match board[x][y] { + Tile::Empty => empty_skipped += 1, + _ => {}, + } + if empty_skipped == empty_position{ + return Vec2::new(x,y); + } + } + } + Vec2::new(0,0) + } } -- GitLab