1extern crate glfw;
2extern crate gust_render as gust;
3
4use gust::prelude::*;
5use std::error::Error;
6use std::rc::Rc;
7
8fn main() -> Result<(), Box<Error>> {
9 let mut window = Window::new(gust::WIDTH, gust::HEIGHT, "Hello");
10
11 let tex_leave = Rc::new(Texture::from_path("examples/texture/Z.png").unwrap());
12 let tex_dirt = Rc::new(Texture::from_path("examples/texture/Dirt.png").unwrap());
13 let mut sprite = Sprite::from(&tex_dirt);
14 let mut leave = Sprite::from(&tex_leave);
15 leave.set_position(Point::new(500.0, 500.0));
16 sprite.set_position(Point::new(10.0, 10.0));
17 leave.set_scale(Vector::new(0.5, 0.5));
18 leave.set_origin_to_center()?;
19
20 let event_handler = EventHandler::new(&window);
21
22 window.set_clear_color(Color::new(0.45, 0.0, 1.0));
23 window.enable_cursor();
24 window.poll(None);
25
26 while window.is_open() {
27 window.poll_events();
28 leave.rotate(1.0);
29 leave.update();
30 sprite.update();
31
32 for event in event_handler.fetch() {
33 event_process(event, &mut window);
34 }
35
36 window.clear();
37 window.draw(&sprite);
38 window.draw(&leave);
39 window.display();
40 }
41
42 Ok(())
43}
44
45fn event_process(event: Event, window: &mut Window) {
46 match event.1 {
47 Events::Key(Key::Escape, _, _, _) => {
48 window.close();
49 }
50 Events::MouseButton(_, _, _) => {
51 println!("Mouse button !");
52 }
53 Events::CursorPos(x, y) => {
54 println!("x: {}, y: {}", x, y);
55 }
56 _ => println!("Another event !"),
57 }
58}