@ -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 ) ;
} ,
_ = > { }
}
}