Browse Source

Fix infinite scrolling

master
Garrit Franke 3 years ago
parent
commit
74c5b99c3a
  1. 19
      src/main.rs
  2. 2
      src/map.rs

19
src/main.rs

@ -59,15 +59,22 @@ impl State {
self.world_pos = (self.world_pos.0 + delta.0, self.world_pos.1 + delta.1);
// Update loaded chunks
match self.loaded_chunks.get(&self.world_pos) {
Some(chunk) => self.view = chunk.to_vec(),
let chunk = match self.loaded_chunks.get(&self.world_pos) {
Some(chunk) => chunk,
None => {
self.loaded_chunks.insert(
self.world_pos,
map::new_chunk(crypto::hash_to_number(&self.world_pos)),
);
let new_chunk = map::new_chunk(crypto::hash_to_number(&self.world_pos));
self.loaded_chunks.insert(self.world_pos, new_chunk);
self.loaded_chunks
.get(&self.world_pos)
.expect("Unexpectedly failed finding loaded chunk.")
}
};
self.view = chunk.to_vec();
dbg!("Loaded chunks: {:?}", &self.loaded_chunks.keys());
dbg!("Current position: {:?}", &self.world_pos);
dbg!("Number of loaded chunks: {:?}", &self.loaded_chunks.len());
}
pub fn move_player(&mut self, delta: Point) {

2
src/map.rs

@ -2,7 +2,7 @@ use rltk::RandomNumberGenerator;
pub type Chunk = Vec<TileType>;
#[derive(PartialEq, Copy, Clone)]
#[derive(PartialEq, Copy, Clone, Debug)]
pub enum TileType {
Wall,
Floor,

Loading…
Cancel
Save