Fixed an issue when entering a submenu before the parent menu was scaled up.

This commit is contained in:
Leon Styhre 2021-08-19 22:28:31 +02:00
parent 655340a94c
commit 9d4deefdf4
2 changed files with 16 additions and 5 deletions

View file

@ -45,7 +45,6 @@ Window::Window()
, mCachedBackground(false)
, mInvalidatedCachedBackground(false)
, mVideoPlayerCount(0)
, mTopOpacity(0)
, mTopScale(0.5)
, mListScrollOpacity(0)
, mChangedThemeSet(false)
@ -231,6 +230,20 @@ void Window::input(InputConfig* config, Input input)
return;
}
if (config->isMappedTo("a", input) && input.value != 0 &&
Settings::getInstance()->getString("MenuOpeningEffect") == "scale-up" && mTopScale < 1.0f &&
mGuiStack.size() == 2) {
// The user has entered a submenu when the initial menu screen has not finished scaling
// up. So scale it to full size so it won't be stuck at a smaller size when returning
// from the submenu.
mTopScale = 1.0f;
GuiComponent* menu = mGuiStack.back();
glm::vec2 menuCenter{menu->getCenter()};
menu->setOrigin(0.5f, 0.5f);
menu->setPosition(menuCenter.x, menuCenter.y, 0.0f);
menu->setScale(1.0f);
}
if (config->getDeviceId() == DEVICE_KEYBOARD && input.value && input.id == SDLK_g &&
SDL_GetModState() & KMOD_LCTRL && Settings::getInstance()->getBool("Debug")) {
// Toggle debug grid with Ctrl-G.
@ -475,8 +488,8 @@ void Window::render()
if (mTopScale < 1.0f) {
mTopScale = glm::clamp(mTopScale + 0.07f, 0.0f, 1.0f);
glm::vec2 topCenter{top->getCenter()};
top->setOrigin({0.5f, 0.5f});
top->setPosition({topCenter.x, topCenter.y, 0.0f});
top->setOrigin(0.5f, 0.5f);
top->setPosition(topCenter.x, topCenter.y, 0.0f);
top->setScale(mTopScale);
}
}
@ -486,7 +499,6 @@ void Window::render()
}
else {
mCachedBackground = false;
mTopOpacity = 0;
mTopScale = 0.5f;
}
}

View file

@ -190,7 +190,6 @@ private:
int mVideoPlayerCount;
std::mutex mVideoCountMutex;
unsigned char mTopOpacity;
float mTopScale;
bool mRenderedHelpPrompts;
bool mChangedThemeSet;