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 60 61 62 63 64 65 66 67 68 69 70 71 72
use pixel_game_lib::{
vek::Extent2,
window::{KeyCode, WindowConfig},
};
use vek::{Disk, Vec2};
/// Open an empty window.
fn main() {
// Window configuration with huge pixels
let window_config = WindowConfig {
buffer_size: Extent2::new(64, 64),
scaling: 8,
..Default::default()
};
// Open the window and start the game-loop
pixel_game_lib::window(
// Keep track of the mouse as our "game state"
Vec2::zero(),
window_config.clone(),
// Update loop exposing input events we can handle, this is where you would handle the game logic
|state, input, mouse, _dt| {
// Set the mouse position as the game state
if let Some(mouse) = mouse {
*state = mouse;
}
// Exit when escape is pressed
input.key_pressed(KeyCode::Escape)
},
// Render loop exposing the pixel buffer we can mutate
move |mouse, canvas, _dt| {
// Reset the canvas with a white color
canvas.fill(0xFFFFFFFF);
// Draw a gray circle with the radius being the distance of the center to the mouse
let circle_center = Vec2::new(50.0, 50.0);
let dist_from_mouse = mouse.as_().distance(circle_center);
canvas.draw_circle(Disk::new(circle_center, dist_from_mouse), 0xFF999999);
// Draw a darker gray circle outline on top of the circle
canvas.draw_circle_outline(Disk::new(circle_center, dist_from_mouse), 0xFF333333);
// Draw a light green blue triangle with one corner being snapped to the mouse
canvas.draw_triangle(
[Vec2::new(45.0, 5.0), Vec2::new(60.0, 8.0), mouse.as_()],
0xFF99FF99,
);
// Draw a light blue quadrilateral with one corner being snapped to the mouse
canvas.draw_quad(
[
Vec2::new(5.0, 5.0),
Vec2::new(20.0, 8.0),
Vec2::new(8.0, 30.0),
mouse.as_(),
],
0xFF9999FF,
);
// Draw a black line from the center of the canvas to our mouse
canvas.draw_line(
(window_config.buffer_size.as_() / 2.0).into(),
mouse.as_(),
0xFF000000,
);
// Draw a red pixel under the mouse
canvas.set_pixel(mouse.as_(), 0xFFFF0000);
},
)
.expect("Error opening window");
}