summaryrefslogtreecommitdiffstats
path: root/examples/ggez/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/ggez/main.rs')
-rw-r--r--examples/ggez/main.rs63
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)