diff --git a/src/ImageSelectState.cpp b/src/ImageSelectState.cpp index 7bce616..f207e5a 100644 --- a/src/ImageSelectState.cpp +++ b/src/ImageSelectState.cpp @@ -132,6 +132,8 @@ void ImageSelectState::Update() { PuzzleSingleImageState psi; psi.LoadPictureFromFile(imageList[i], globalData.screen); RunGameState(psi); + globalData.mouseUp=true; + return; } } } diff --git a/src/PuzzleSingleImageState.cpp b/src/PuzzleSingleImageState.cpp index 378038f..0079d82 100644 --- a/src/PuzzleSingleImageState.cpp +++ b/src/PuzzleSingleImageState.cpp @@ -37,11 +37,28 @@ PuzzleSingleImageState::~PuzzleSingleImageState() { } bool PuzzleSingleImageState::IsActive() { - return true; + return isActive; } -void PuzzleSingleImageState::ProcessInput(const SDL_Event& event, bool &processed) { +bool isEscapeEvent(const SDL_Event& event) { + if ( event.type == SDL_KEYDOWN ) { + if ( event.key.keysym.sym == SDLK_ESCAPE ) { + return true; + } + } + if (event.type == SDL_CONTROLLERBUTTONDOWN) { + if (event.cbutton.button == SDL_CONTROLLER_BUTTON_B || event.cbutton.button == SDL_CONTROLLER_BUTTON_BACK ) { + return true; + } + } + return false; +} +void PuzzleSingleImageState::ProcessInput(const SDL_Event& event, bool &processed) { + if (isEscapeEvent(event)) { + isActive = false; + processed = true; + } } void PuzzleSingleImageState::Draw(SDL_Renderer* target) {