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