Mario: stop movement when entering main menu, check there was a movement before reversing it

This commit is contained in:
2022-09-24 22:54:03 +02:00
parent 9e4cc97f79
commit 09cb13195c
2 changed files with 51 additions and 27 deletions
+16 -2
View File
@@ -35,6 +35,8 @@ std::shared_ptr<SDLPP::TextRenderer> coins = nullptr;
int coin_count = 0;
int global_frames = 0;
std::string last_load_level = "";
bool __right_pressed = false;
bool __left_pressed = false;
std::vector<std::shared_ptr<MarioBlock>> moving_objects = {};
std::vector<SceneStruct> game_scenes{};
@@ -46,10 +48,12 @@ void handleKeyDown(SDL_Keycode key, SDLPP::Scene &scene) {
switch (key) {
case SDLK_a:
case SDLK_LEFT:
__left_pressed = true;
mario->walkLeft();
break;
case SDLK_d:
case SDLK_RIGHT:
__right_pressed = true;
mario->walkRight();
break;
case SDLK_SPACE:
@@ -77,16 +81,26 @@ void handleKeyUp(SDL_Keycode key) {
switch (key) {
case SDLK_ESCAPE: {
std::lock_guard<std::mutex> lock(render_mutex);
mario->setMovement(0, mario->getMovement().getY());
game_scenes.back().scene->pauseScene();
__right_pressed = false;
__left_pressed = false;
game_scenes.push_back(
createGameMainMenuScene(renderer, false, true, true));
} break;
case SDLK_a:
case SDLK_LEFT:
mario->walkRight();
if (__left_pressed) {
mario->walkRight();
__left_pressed = false;
}
break;
case SDLK_d:
case SDLK_RIGHT:
mario->walkLeft();
if (__right_pressed) {
mario->walkLeft();
__right_pressed = false;
}
break;
case SDLK_SPACE:
case SDLK_w: