diff --git a/strafe-client/src/window.rs b/strafe-client/src/window.rs index 4320c67..1104c30 100644 --- a/strafe-client/src/window.rs +++ b/strafe-client/src/window.rs @@ -43,60 +43,53 @@ impl WindowContext<'_>{ event:winit::event::KeyEvent{state,logical_key,repeat:false,..}, .. }=>{ - let s=match state{ - winit::event::ElementState::Pressed=>true, - winit::event::ElementState::Released=>false, - }; - match logical_key{ - winit::keyboard::Key::Named(winit::keyboard::NamedKey::Tab)=>{ - if s{ - self.manual_mouse_lock=false; - match self.window.set_cursor_position(self.get_middle_of_screen()){ - Ok(())=>(), - Err(e)=>println!("Could not set cursor position: {:?}",e), - } - match self.window.set_cursor_grab(winit::window::CursorGrabMode::None){ - Ok(())=>(), - Err(e)=>println!("Could not release cursor: {:?}",e), - } - }else{ - //if cursor is outside window don't lock but apparently there's no get pos function - //let pos=window.get_cursor_pos(); - match self.window.set_cursor_grab(winit::window::CursorGrabMode::Locked){ - Ok(())=>(), - Err(_)=>{ - match self.window.set_cursor_grab(winit::window::CursorGrabMode::Confined){ - Ok(())=>(), - Err(e)=>{ - self.manual_mouse_lock=true; - println!("Could not confine cursor: {:?}",e) - }, - } + match (logical_key,state){ + (winit::keyboard::Key::Named(winit::keyboard::NamedKey::Tab),winit::event::ElementState::Pressed)=>{ + self.manual_mouse_lock=false; + match self.window.set_cursor_position(self.get_middle_of_screen()){ + Ok(())=>(), + Err(e)=>println!("Could not set cursor position: {:?}",e), + } + match self.window.set_cursor_grab(winit::window::CursorGrabMode::None){ + Ok(())=>(), + Err(e)=>println!("Could not release cursor: {:?}",e), + } + self.window.set_cursor_visible(state.is_pressed()); + }, + (winit::keyboard::Key::Named(winit::keyboard::NamedKey::Tab),winit::event::ElementState::Released)=>{ + //if cursor is outside window don't lock but apparently there's no get pos function + //let pos=window.get_cursor_pos(); + match self.window.set_cursor_grab(winit::window::CursorGrabMode::Locked){ + Ok(())=>(), + Err(_)=>{ + match self.window.set_cursor_grab(winit::window::CursorGrabMode::Confined){ + Ok(())=>(), + Err(e)=>{ + self.manual_mouse_lock=true; + println!("Could not confine cursor: {:?}",e) + }, } } } - self.window.set_cursor_visible(s); + self.window.set_cursor_visible(state.is_pressed()); }, - winit::keyboard::Key::Named(winit::keyboard::NamedKey::F11)=>{ - if s{ - if self.window.fullscreen().is_some(){ - self.window.set_fullscreen(None); - }else{ - self.window.set_fullscreen(Some(winit::window::Fullscreen::Borderless(None))); - } + (winit::keyboard::Key::Named(winit::keyboard::NamedKey::F11),winit::event::ElementState::Pressed)=>{ + if self.window.fullscreen().is_some(){ + self.window.set_fullscreen(None); + }else{ + self.window.set_fullscreen(Some(winit::window::Fullscreen::Borderless(None))); } }, - winit::keyboard::Key::Named(winit::keyboard::NamedKey::Escape)=>{ - if s{ - self.manual_mouse_lock=false; - match self.window.set_cursor_grab(winit::window::CursorGrabMode::None){ - Ok(())=>(), - Err(e)=>println!("Could not release cursor: {:?}",e), - } - self.window.set_cursor_visible(true); + (winit::keyboard::Key::Named(winit::keyboard::NamedKey::Escape),winit::event::ElementState::Pressed)=>{ + self.manual_mouse_lock=false; + match self.window.set_cursor_grab(winit::window::CursorGrabMode::None){ + Ok(())=>(), + Err(e)=>println!("Could not release cursor: {:?}",e), } + self.window.set_cursor_visible(true); }, - keycode=>{ + (keycode,state)=>{ + let s=state.is_pressed(); if let Some(input_instruction)=match keycode{ winit::keyboard::Key::Named(winit::keyboard::NamedKey::Space)=>Some(InputInstruction::Jump(s)), winit::keyboard::Key::Character(key)=>match key.as_str(){