diff options
Diffstat (limited to 'examples/ggez/main.rs')
-rw-r--r-- | examples/ggez/main.rs | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/examples/ggez/main.rs b/examples/ggez/main.rs index 4719418e..329bde81 100644 --- a/examples/ggez/main.rs +++ b/examples/ggez/main.rs @@ -8,27 +8,41 @@ use widget::Column; use ggez; use ggez::event; +use ggez::filesystem; use ggez::graphics; use ggez::input::mouse; pub fn main() -> ggez::GameResult { - let cb = ggez::ContextBuilder::new("iced", "ggez").window_mode( - ggez::conf::WindowMode { - width: 1280.0, - height: 1024.0, - ..ggez::conf::WindowMode::default() - }, + let (context, event_loop) = { + &mut ggez::ContextBuilder::new("iced", "ggez") + .window_mode(ggez::conf::WindowMode { + width: 1280.0, + height: 1024.0, + ..ggez::conf::WindowMode::default() + }) + .build()? + }; + + filesystem::mount( + context, + std::path::Path::new(&format!( + "{}/examples/resources", + env!("CARGO_MANIFEST_DIR") + )), + true, ); - let (ctx, event_loop) = &mut cb.build()?; - let state = &mut Game::new(ctx)?; - event::run(ctx, event_loop, state) + + let state = &mut Game::new(context)?; + + event::run(context, event_loop, state) } struct Game { spritesheet: graphics::Image, - - runtime: iced::Runtime, tour: Tour, + + events: Vec<iced::Event>, + cache: Option<iced::Cache>, } impl Game { @@ -37,9 +51,10 @@ impl Game { Ok(Game { spritesheet: graphics::Image::new(context, "/ui.png").unwrap(), - - runtime: iced::Runtime::new(), tour: Tour::new(), + + events: Vec::new(), + cache: Some(iced::Cache::default()), }) } } @@ -52,11 +67,11 @@ impl event::EventHandler for Game { fn mouse_button_down_event( &mut self, _context: &mut ggez::Context, - button: mouse::MouseButton, + _button: mouse::MouseButton, _x: f32, _y: f32, ) { - self.runtime.on_event(iced::Event::Mouse( + self.events.push(iced::Event::Mouse( iced::input::mouse::Event::Input { state: iced::input::ButtonState::Pressed, button: iced::input::mouse::Button::Left, // TODO: Map `button` @@ -67,11 +82,11 @@ impl event::EventHandler for Game { fn mouse_button_up_event( &mut self, _context: &mut ggez::Context, - button: mouse::MouseButton, + _button: mouse::MouseButton, _x: f32, _y: f32, ) { - self.runtime.on_event(iced::Event::Mouse( + self.events.push(iced::Event::Mouse( iced::input::mouse::Event::Input { state: iced::input::ButtonState::Released, button: iced::input::mouse::Button::Left, // TODO: Map `button` @@ -87,7 +102,7 @@ impl event::EventHandler for Game { _dx: f32, _dy: f32, ) { - self.runtime.on_event(iced::Event::Mouse( + self.events.push(iced::Event::Mouse( iced::input::mouse::Event::CursorMoved { x, y }, )); } @@ -113,8 +128,6 @@ impl event::EventHandler for Game { fn draw(&mut self, context: &mut ggez::Context) -> ggez::GameResult { graphics::clear(context, [0.3, 0.3, 0.6, 1.0].into()); - self.tour.draw(context).expect("Draw tour"); - let screen = graphics::screen_coordinates(context); let (messages, cursor) = { @@ -130,11 +143,17 @@ impl event::EventHandler for Game { let renderer = &mut Renderer::new(context, self.spritesheet.clone()); - let mut ui = self.runtime.compute(content.into(), renderer); + let mut ui = iced::UserInterface::build( + content, + self.cache.take().unwrap(), + renderer, + ); - let messages = ui.update(); + let messages = ui.update(self.events.drain(..)); let cursor = ui.draw(renderer); + self.cache = Some(ui.into_cache()); + renderer.flush(); (messages, cursor) |