MCPcopy Create free account
hub / github.com/AdRoll/rustenstein / process_input

Function process_input

src/main.rs:93–147  ·  view source on GitHub ↗
(
    window: &Window,
    player: &mut player::Player,
    map: &map::Map,
)

Source from the content-addressed store, hash-verified

91}
92
93fn process_input(
94 window: &Window,
95 player: &mut player::Player,
96 map: &map::Map,
97) -> Result<(), String> {
98 if !window.is_open() || window.is_key_pressed(Key::Escape, KeyRepeat::No) {
99 return Err(String::from("Goodbye!"));
100 }
101
102 let mut straight: Option<StraightMovement> = None;
103 let mut side: Option<SideMovement> = None;
104 let mut turn: Option<TurnMovement> = None;
105 let mut run = false;
106 if window.is_key_down(Key::LeftShift) {
107 run = true;
108 }
109
110 if window.is_key_down(Key::Left) || window.is_key_down(Key::A) {
111 if window.is_key_down(Key::X) {
112 // alternate from turning to strafing
113 side = Some(SideMovement::StrafeLeft);
114 } else {
115 turn = Some(TurnMovement::TurnLeft);
116 }
117 }
118
119 if window.is_key_down(Key::Right) || window.is_key_down(Key::D) {
120 if window.is_key_down(Key::X) {
121 // alternate from turning to strafing
122 side = Some(SideMovement::StrafeRight);
123 } else {
124 turn = Some(TurnMovement::TurnRight);
125 }
126 }
127
128 if window.is_key_down(Key::Up) || window.is_key_down(Key::W) {
129 straight = Some(StraightMovement::Forward);
130 }
131
132 if window.is_key_down(Key::Down) || window.is_key_down(Key::S) {
133 straight = Some(StraightMovement::Backward);
134 }
135
136 if window.is_key_down(Key::Q) {
137 side = Some(SideMovement::StrafeLeft);
138 }
139
140 if window.is_key_down(Key::E) {
141 side = Some(SideMovement::StrafeRight);
142 }
143
144 player.walk(map, straight, side, turn, run);
145
146 Ok(())
147}
148
149fn show_title(game: &Game, video: &mut Video, window: &mut Window) {
150 let titlepic = game.cache.get_pic(cache::TITLEPIC);

Callers 1

mainFunction · 0.85

Calls 1

walkMethod · 0.80

Tested by

no test coverage detected