Mario: stop movement when entering main menu, check there was a movement before reversing it
This commit is contained in:
+16
-2
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user