Improve horizontal movement

cpp
Elnu 3 years ago
parent ae5f62fcd4
commit 0dcaa0422b

@ -306,9 +306,11 @@ int main()
sf::IntRect(120, 0, 14, 16) sf::IntRect(120, 0, 14, 16)
}); });
bool rotate = true; bool rotate = false;
bool move_left = true; bool move_left = false;
bool move_right = true; bool move_right = false;
bool move_left_immediate = false;
bool move_right_immediate = false;
bool snap = false; bool snap = false;
sf::Clock update_clock; sf::Clock update_clock;
sf::Clock move_clock; sf::Clock move_clock;
@ -341,14 +343,29 @@ int main()
break; break;
case sf::Keyboard::Left: case sf::Keyboard::Left:
move_left = true; move_left = true;
move_left_immediate = true;
move_clock.restart();
break; break;
case sf::Keyboard::Right: case sf::Keyboard::Right:
move_right = true; move_right = true;
move_right_immediate = true;
move_clock.restart();
break; break;
default: default:
break; break;
} }
break; break;
case sf::Event::KeyReleased:
switch (event.key.code) {
case sf::Keyboard::Left:
move_left = false;
break;
case sf::Keyboard::Right:
move_right = false;
break;
default:
break;
}
default: default:
break; break;
} }
@ -359,7 +376,7 @@ int main()
update_clock.restart(); update_clock.restart();
} }
bool is_move_frame = move_clock.getElapsedTime().asMilliseconds() > 200; bool is_move_frame = move_clock.getElapsedTime().asMilliseconds() > 125;
if (is_move_frame) { if (is_move_frame) {
move_clock.restart(); move_clock.restart();
} }
@ -379,13 +396,13 @@ int main()
// Horizontal movement // Horizontal movement
int movement = 0; int movement = 0;
if (move_left || is_move_frame && sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Left)) { if (move_left_immediate || is_move_frame && move_left) {
movement--; movement--;
move_left = false; move_left_immediate = false;
} }
if (move_right || is_move_frame && sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right)) { if (move_right_immediate || is_move_frame && move_right) {
movement++; movement++;
move_right = false; move_right_immediate = false;
} }
if (movement != 0) { if (movement != 0) {
for (auto tile : block.get_tiles()) { for (auto tile : block.get_tiles()) {

Loading…
Cancel
Save