mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-13 04:12:21 -06:00
fix: reset code borrows
This commit is contained in:
47
src/game.rs
47
src/game.rs
@@ -208,29 +208,31 @@ impl Game<'_> {
|
|||||||
// Reset the score
|
// Reset the score
|
||||||
self.score = 0;
|
self.score = 0;
|
||||||
|
|
||||||
// Get valid positions from the cached flood fill
|
// Get valid positions from the cached flood fill and randomize positions in a single block
|
||||||
let mut map = self.map.borrow_mut();
|
{
|
||||||
let valid_positions = map.get_valid_playable_positions();
|
let mut map = self.map.borrow_mut();
|
||||||
let mut rng = rand::rng();
|
let valid_positions = map.get_valid_playable_positions();
|
||||||
|
let mut rng = rand::rng();
|
||||||
|
|
||||||
// Randomize Pac-Man position
|
// Randomize Pac-Man position
|
||||||
if let Some(pos) = valid_positions.iter().choose(&mut rng) {
|
if let Some(pos) = valid_positions.iter().choose(&mut rng) {
|
||||||
let mut pacman = self.pacman.borrow_mut();
|
let mut pacman = self.pacman.borrow_mut();
|
||||||
pacman.base.base.pixel_position = Map::cell_to_pixel((pos.x, pos.y));
|
pacman.base.base.pixel_position = Map::cell_to_pixel((pos.x, pos.y));
|
||||||
pacman.base.base.cell_position = (pos.x, pos.y);
|
pacman.base.base.cell_position = (pos.x, pos.y);
|
||||||
pacman.base.in_tunnel = false;
|
pacman.base.in_tunnel = false;
|
||||||
pacman.base.direction = Direction::Right;
|
pacman.base.direction = Direction::Right;
|
||||||
pacman.next_direction = None;
|
pacman.next_direction = None;
|
||||||
pacman.stopped = false;
|
pacman.stopped = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Randomize ghost position
|
// Randomize ghost position
|
||||||
if let Some(pos) = valid_positions.iter().choose(&mut rng) {
|
if let Some(pos) = valid_positions.iter().choose(&mut rng) {
|
||||||
self.blinky.base.base.pixel_position = Map::cell_to_pixel((pos.x, pos.y));
|
self.blinky.base.base.pixel_position = Map::cell_to_pixel((pos.x, pos.y));
|
||||||
self.blinky.base.base.cell_position = (pos.x, pos.y);
|
self.blinky.base.base.cell_position = (pos.x, pos.y);
|
||||||
self.blinky.base.in_tunnel = false;
|
self.blinky.base.in_tunnel = false;
|
||||||
self.blinky.base.direction = Direction::Left;
|
self.blinky.base.direction = Direction::Left;
|
||||||
self.blinky.mode = crate::ghost::GhostMode::Chase;
|
self.blinky.mode = crate::ghost::GhostMode::Chase;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.edibles = reconstruct_edibles(
|
self.edibles = reconstruct_edibles(
|
||||||
@@ -289,8 +291,7 @@ impl Game<'_> {
|
|||||||
.copy(&self.map_texture, None, None)
|
.copy(&self.map_texture, None, None)
|
||||||
.expect("Could not render texture on canvas");
|
.expect("Could not render texture on canvas");
|
||||||
|
|
||||||
// Remove old pellet rendering
|
// Render all edibles
|
||||||
// Instead, render all edibles
|
|
||||||
for edible in &self.edibles {
|
for edible in &self.edibles {
|
||||||
edible.render(self.canvas);
|
edible.render(self.canvas);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user