Working on zooming and scrolling of the image. Want to do a full input chain like I did the raycaster, but I don't know if I want to commit to SFML for my windowing...

This commit is contained in:
2019-07-06 20:24:15 -07:00
parent 5551581a3e
commit a403d13f41
2 changed files with 35 additions and 14 deletions

View File

@@ -1,25 +1,31 @@
use std::collections::HashSet;
use sfml::window::{Key, Event};
use sfml::window::{Key, Event, mouse::Button};
pub struct Input {
held_keys: HashSet<Key>
held_keys: HashSet<Key>,
held_mouse: HashSet<u8>,
}
impl Input {
pub fn new() -> Input {
let mut container = HashSet::new();
let mut key_container = HashSet::new();
let mut mouse_container = HashSet::new();
Input {
held_keys: container,
held_keys: key_container,
held_mouse: mouse_container,
}
}
pub fn is_held(&self, key: Key) -> bool{
pub fn is_held(&self, key: Key) -> bool {
self.held_keys.contains(&key)
}
pub fn is_mousebutton_held(&self, button: Button) -> bool {
self.held_mouse.contains(&(button as u8))
}
pub fn ingest(&mut self, event: &Event) {
match event {
Event::KeyPressed { code, .. } => {
@@ -28,6 +34,12 @@ impl Input {
Event::KeyReleased { code, .. } => {
self.held_keys.remove(code);
}
Event::MouseButtonPressed { button, x, y } => {
self.held_mouse.insert(button.clone() as u8);
},
Event::MouseButtonReleased { button, x, y } => {
self.held_mouse.insert(button.clone() as u8);
},
_ => {}
}
}