Die when fall off, restart, fix new tab glitch
This commit is contained in:
parent
7e9bad3286
commit
2858e3d5ec
@ -141,19 +141,27 @@ impl Engine {
|
|||||||
pub fn update(&self) -> Result<()> {
|
pub fn update(&self) -> Result<()> {
|
||||||
let mut inner = self.inner.borrow_mut();
|
let mut inner = self.inner.borrow_mut();
|
||||||
|
|
||||||
// Manage events
|
|
||||||
while let Some(event) = inner.keyboard.pop() {
|
|
||||||
inner.scene.manage_event(&event);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Manage the physics
|
// Manage the physics
|
||||||
let now = now(&self.performance);
|
let now = now(&self.performance);
|
||||||
let duration = unwrap!(now.duration_since(inner.after_loop).ok());
|
let duration = unwrap!(now.duration_since(inner.after_loop).ok());
|
||||||
inner.after_loop = now;
|
inner.after_loop = now;
|
||||||
|
|
||||||
let keyboard = inner.keyboard.clone();
|
if (self.document.has_focus()?) {
|
||||||
if inner.scene.update(now, duration, &keyboard) == State::Finished {
|
// Manage events
|
||||||
// running = false;
|
while let Some(event) = inner.keyboard.pop() {
|
||||||
|
inner.scene.manage_event(&event);
|
||||||
|
}
|
||||||
|
|
||||||
|
let keyboard = inner.keyboard.clone();
|
||||||
|
if inner.scene.update(now, duration, &keyboard) == State::Finished {
|
||||||
|
let map = Map::from_str(include_str!("../../static/levels/level1.lvl")).unwrap();
|
||||||
|
let mut scene = Scene::from_map(map);
|
||||||
|
|
||||||
|
let character = Character::with_controls(Controls::default_keyboard());
|
||||||
|
scene.add(character);
|
||||||
|
|
||||||
|
inner.scene = scene;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -86,7 +86,7 @@ impl Scene {
|
|||||||
|
|
||||||
/// Updates the whole scene.
|
/// Updates the whole scene.
|
||||||
pub fn update(&mut self, now: SystemTime, duration: Duration, keyboard: &Keyboard) -> State {
|
pub fn update(&mut self, now: SystemTime, duration: Duration, keyboard: &Keyboard) -> State {
|
||||||
let mut state = State::Finished;
|
let mut state = State::Running;
|
||||||
|
|
||||||
for c in &mut self.characters {
|
for c in &mut self.characters {
|
||||||
// Don't need to update if the character is dead
|
// Don't need to update if the character is dead
|
||||||
@ -109,15 +109,13 @@ impl Scene {
|
|||||||
c.ground_collision();
|
c.ground_collision();
|
||||||
}
|
}
|
||||||
|
|
||||||
// c.die();
|
if (damage) {
|
||||||
|
c.die();
|
||||||
|
state = State::Finished;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
c.fall_off();
|
c.fall_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
// If a character is alive and still have controls, the game should continue
|
|
||||||
if c.controls().is_some() {
|
|
||||||
state = State::Running;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user