mirror of
https://github.com/Xevion/rust-sdl2-emscripten.git
synced 2025-12-12 09:11:22 -06:00
Add movement wrapping for cells
This commit is contained in:
24
src/main.rs
24
src/main.rs
@@ -42,7 +42,7 @@ fn main() {
|
|||||||
let canvas = Rc::new(RefCell::new(canvas));
|
let canvas = Rc::new(RefCell::new(canvas));
|
||||||
|
|
||||||
let main_loop = move || {
|
let main_loop = move || {
|
||||||
|
let mut moved = false;
|
||||||
for event in ctx.borrow_mut().event_pump().unwrap().poll_iter() {
|
for event in ctx.borrow_mut().event_pump().unwrap().poll_iter() {
|
||||||
match event {
|
match event {
|
||||||
Event::Quit { .. }
|
Event::Quit { .. }
|
||||||
@@ -59,15 +59,19 @@ fn main() {
|
|||||||
match key {
|
match key {
|
||||||
Keycode::Left => {
|
Keycode::Left => {
|
||||||
rect.borrow_mut().x -= 10;
|
rect.borrow_mut().x -= 10;
|
||||||
|
moved = true;
|
||||||
}
|
}
|
||||||
Keycode::Right => {
|
Keycode::Right => {
|
||||||
rect.borrow_mut().x += 10;
|
rect.borrow_mut().x += 10;
|
||||||
|
moved = true;
|
||||||
}
|
}
|
||||||
Keycode::Up => {
|
Keycode::Up => {
|
||||||
rect.borrow_mut().y -= 10;
|
rect.borrow_mut().y -= 10;
|
||||||
|
moved = true;
|
||||||
}
|
}
|
||||||
Keycode::Down => {
|
Keycode::Down => {
|
||||||
rect.borrow_mut().y += 10;
|
rect.borrow_mut().y += 10;
|
||||||
|
moved = true;
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
@@ -76,11 +80,27 @@ fn main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle wrapping at the edges
|
||||||
|
if moved {
|
||||||
|
let mut rect = rect.borrow_mut();
|
||||||
|
let canvas_size = canvas.borrow().window().size();
|
||||||
|
if rect.x < 0 {
|
||||||
|
rect.x = canvas_size.0 as i32 - rect.width() as i32;
|
||||||
|
} else if rect.x >= 640 {
|
||||||
|
rect.x = 0;
|
||||||
|
}
|
||||||
|
if rect.y < 0 {
|
||||||
|
rect.y = canvas_size.1 as i32 - rect.height() as i32;
|
||||||
|
} else if rect.y >= canvas_size.1 as i32 {
|
||||||
|
rect.y = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let mut canvas = canvas.borrow_mut();
|
let mut canvas = canvas.borrow_mut();
|
||||||
canvas.set_draw_color(BLACK);
|
canvas.set_draw_color(BLACK);
|
||||||
canvas.clear();
|
canvas.clear();
|
||||||
canvas.set_draw_color(WHITE);
|
canvas.set_draw_color(WHITE);
|
||||||
canvas.fill_rect(rect.borrow().clone());
|
canvas.fill_rect(rect.borrow().clone()).expect("could not draw rectangle");
|
||||||
canvas.present();
|
canvas.present();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user