1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#![warn(missing_docs)]
//! Simple 2d framework/engine
//!
//! Provides some utilities to draw basic shapes,
//! might turn into an actual game engine at some point
//!
//! ### Example
//!
//! ```no_run
//! use std::time::Duration;
//!
//! use rain2d::core::*;
//!
//! const WIDTH: usize = 640;
//! const HEIGHT: usize = 360;
//!
//! // can be used to store application state
//! struct ExampleApp;
//!
//! impl RainApp for ExampleApp {
//!     fn on_update(&mut self, rain: &mut RainCore, dt: Duration) {
//!         // drawing
//!         rain.fill_triangle(120, 300, 520, 300, 320, 100, WHITE);
//!
//!         // keyboard input
//!         // gets all keys that are currently down
//!         if let Some(keys) = rain.get_keys() {
//!             for key in keys {
//!                 match key {
//!                     Key::Space => println!("Spacebar down"),
//!                     Key::A => println!("A down"),
//!                     _ => (),
//!                 }
//!             }
//!         }
//!
//!         // only true on keypress, doesn't repeat
//!         if rain.key_pressed(Key::Key1) {
//!             println!("1 pressed");
//!         }
//!
//!         // mouse input
//!         if rain.mouse_button_down(MouseButton::Left) {
//!             if let Some((x, y)) = rain.get_mouse_pos() {
//!                 println!("Mouse x: {}, Mouse y: {}", x, y);
//!             }
//!         }
//!     }
//! }
//!
//! let mut core = RainCore::init("example app",
//!     WIDTH,
//!     HEIGHT,
//!     true);
//!
//! core.run(&mut ExampleApp {});
//! ```

pub mod core;