Few fixes

This commit is contained in:
Thomas Forgione 2022-08-03 10:38:00 +02:00
parent 94f0cdffca
commit 28ff6f28fa
2 changed files with 18 additions and 10 deletions

View File

@ -302,4 +302,10 @@ impl Inputs {
let mut inner = self.0.borrow_mut(); let mut inner = self.0.borrow_mut();
inner.events.pop_front() inner.events.pop_front()
} }
/// Deletes all the events and resets all the values.
pub fn clear(&mut self) {
let mut inner = self.0.borrow_mut();
inner.events.clear();
}
} }

View File

@ -219,6 +219,9 @@ impl Engine {
self.scene = scene; self.scene = scene;
} }
} else {
// Clear the events received while document was out of focus
self.inputs.clear();
} }
Ok(()) Ok(())
@ -239,6 +242,8 @@ impl Engine {
self.canvas.set_height(window_height_u32); self.canvas.set_height(window_height_u32);
} }
let window_size = Vector::new(window_width, window_height);
let view = self.scene.view().unwrap(); // TODO remove this unwrap let view = self.scene.view().unwrap(); // TODO remove this unwrap
// Clear render // Clear render
@ -258,7 +263,7 @@ impl Engine {
for j in 0..cols { for j in 0..cols {
let tile = map.at(i, j); let tile = map.at(i, j);
if tile.graphic.is_visible() { if tile.graphic.is_visible() {
self.draw(&tile, view)?; self.draw(&tile, view, window_size)?;
} }
} }
} }
@ -266,7 +271,7 @@ impl Engine {
// Draw characters // Draw characters
for c in self.scene.characters() { for c in self.scene.characters() {
if true { if true {
self.draw(c, view)?; self.draw(c, view, window_size)?;
} }
} }
@ -274,19 +279,16 @@ impl Engine {
} }
/// Draw a drawable. /// Draw a drawable.
pub fn draw<D: Drawable>(&self, drawable: &D, view: Bbox) -> Result<()> { pub fn draw<D: Drawable>(&self, drawable: &D, view: Bbox, window: Vector) -> Result<()> {
let window_width = unwrap!(self.window.inner_width()?.as_f64());
let window_height = unwrap!(self.window.inner_height()?.as_f64());
let image = self.textures.get(drawable.texture()); let image = self.textures.get(drawable.texture());
let source = drawable.texture_rect(self.after_loop); let source = drawable.texture_rect(self.after_loop);
let mut dest = source.clone(); let mut dest = source.clone();
dest.position = drawable.position() - view.position; dest.position = drawable.position() - view.position;
dest.position.x *= window_width / view.size.x; dest.position.x *= window.x / view.size.x;
dest.position.y *= window_height / view.size.y; dest.position.y *= window.y / view.size.y;
dest.size.x *= window_width / view.size.x; dest.size.x *= window.x / view.size.x;
dest.size.y *= window_height / view.size.y; dest.size.y *= window.y / view.size.y;
image.render(source, dest, &self.context)?; image.render(source, dest, &self.context)?;
Ok(()) Ok(())