mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-09-14 23:05:57 -04:00
Allow pinning map window in controller mode
This commit is contained in:
parent
45de167b6b
commit
d6ed416402
@ -216,7 +216,7 @@ namespace MWGui
|
|||||||
{
|
{
|
||||||
mGuiMode = mode;
|
mGuiMode = mode;
|
||||||
const WindowSettingValues settings = getModeSettings(mGuiMode);
|
const WindowSettingValues settings = getModeSettings(mGuiMode);
|
||||||
setPinButtonVisible(mode == GM_Inventory);
|
setPinButtonVisible(mode == GM_Inventory && !Settings::gui().mControllerMenus);
|
||||||
|
|
||||||
const WindowRectSettingValues& rect = settings.mIsMaximized ? settings.mMaximized : settings.mRegular;
|
const WindowRectSettingValues& rect = settings.mIsMaximized ? settings.mMaximized : settings.mRegular;
|
||||||
|
|
||||||
|
@ -1029,7 +1029,20 @@ namespace MWGui
|
|||||||
void MapWindow::setVisible(bool visible)
|
void MapWindow::setVisible(bool visible)
|
||||||
{
|
{
|
||||||
WindowBase::setVisible(visible);
|
WindowBase::setVisible(visible);
|
||||||
mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_None);
|
MWGui::GuiMode mode = MWBase::Environment::get().getWindowManager()->getMode();
|
||||||
|
mButton->setVisible(visible && mode != MWGui::GM_None);
|
||||||
|
|
||||||
|
if (Settings::gui().mControllerMenus && mode == MWGui::GM_None && pinned() && visible)
|
||||||
|
{
|
||||||
|
// Restore the window to pinned size.
|
||||||
|
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
||||||
|
MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
||||||
|
const float x = Settings::windows().mMapX * viewSize.width;
|
||||||
|
const float y = Settings::windows().mMapY * viewSize.height;
|
||||||
|
const float w = Settings::windows().mMapW * viewSize.width;
|
||||||
|
const float h = Settings::windows().mMapH * viewSize.height;
|
||||||
|
window->setCoord(x, y, w, h);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MapWindow::renderGlobalMap()
|
void MapWindow::renderGlobalMap()
|
||||||
@ -1436,16 +1449,19 @@ namespace MWGui
|
|||||||
|
|
||||||
void MapWindow::setActiveControllerWindow(bool active)
|
void MapWindow::setActiveControllerWindow(bool active)
|
||||||
{
|
{
|
||||||
// Fill the screen, or limit to a certain size on large screens. Size chosen to
|
if (MWBase::Environment::get().getWindowManager()->getMode() == MWGui::GM_Inventory)
|
||||||
// show the entire local map without scrolling.
|
{
|
||||||
MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
// Fill the screen, or limit to a certain size on large screens. Size chosen to
|
||||||
int width = std::min(viewSize.width, 1552);
|
// show the entire local map without scrolling.
|
||||||
int height = std::min(viewSize.height - 48 - 48, 1572);
|
MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
||||||
int x = (viewSize.width - width) / 2;
|
int width = std::min(viewSize.width, 1552);
|
||||||
int y = (viewSize.height - height) / 2;
|
int height = std::min(viewSize.height - 48 - 48, 1572);
|
||||||
|
int x = (viewSize.width - width) / 2;
|
||||||
|
int y = (viewSize.height - height) / 2;
|
||||||
|
|
||||||
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
||||||
window->setCoord(x, active ? y : viewSize.height + 1, width, height);
|
window->setCoord(x, active ? y : viewSize.height + 1, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
WindowBase::setActiveControllerWindow(active);
|
WindowBase::setActiveControllerWindow(active);
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@ namespace MWGui
|
|||||||
|
|
||||||
if (Settings::gui().mControllerMenus)
|
if (Settings::gui().mControllerMenus)
|
||||||
{
|
{
|
||||||
|
setPinButtonVisible(false);
|
||||||
mControllerButtons.a = "#{sSelect}";
|
mControllerButtons.a = "#{sSelect}";
|
||||||
mControllerButtons.b = "#{sBack}";
|
mControllerButtons.b = "#{sBack}";
|
||||||
mControllerButtons.r3 = "#{sInfo}";
|
mControllerButtons.r3 = "#{sInfo}";
|
||||||
@ -281,16 +282,19 @@ namespace MWGui
|
|||||||
|
|
||||||
void SpellWindow::setActiveControllerWindow(bool active)
|
void SpellWindow::setActiveControllerWindow(bool active)
|
||||||
{
|
{
|
||||||
// Fill the screen, or limit to a certain size on large screens. Size chosen to
|
if (MWBase::Environment::get().getWindowManager()->getMode() == MWGui::GM_Inventory)
|
||||||
// match the size of the stats window.
|
{
|
||||||
MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
// Fill the screen, or limit to a certain size on large screens. Size chosen to
|
||||||
int width = std::min(viewSize.width, 600);
|
// match the size of the stats window.
|
||||||
int height = std::min(viewSize.height - 48 - 48, 750);
|
MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
||||||
int x = (viewSize.width - width) / 2;
|
int width = std::min(viewSize.width, 600);
|
||||||
int y = (viewSize.height - height) / 2;
|
int height = std::min(viewSize.height - 48 - 48, 750);
|
||||||
|
int x = (viewSize.width - width) / 2;
|
||||||
|
int y = (viewSize.height - height) / 2;
|
||||||
|
|
||||||
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
||||||
window->setCoord(x, active ? y : viewSize.height + 1, width, height);
|
window->setCoord(x, active ? y : viewSize.height + 1, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
if (active)
|
if (active)
|
||||||
mSpellView->update();
|
mSpellView->update();
|
||||||
|
@ -83,6 +83,7 @@ namespace MWGui
|
|||||||
|
|
||||||
if (Settings::gui().mControllerMenus)
|
if (Settings::gui().mControllerMenus)
|
||||||
{
|
{
|
||||||
|
setPinButtonVisible(false);
|
||||||
mControllerButtons.lStick = "#{sInfo}";
|
mControllerButtons.lStick = "#{sInfo}";
|
||||||
mControllerButtons.rStick = "#{sScrolldown}";
|
mControllerButtons.rStick = "#{sScrolldown}";
|
||||||
mControllerButtons.b = "#{sBack}";
|
mControllerButtons.b = "#{sBack}";
|
||||||
@ -742,19 +743,22 @@ namespace MWGui
|
|||||||
|
|
||||||
void StatsWindow::setActiveControllerWindow(bool active)
|
void StatsWindow::setActiveControllerWindow(bool active)
|
||||||
{
|
{
|
||||||
// Fill the screen, or limit to a certain size on large screens. Size chosen to
|
if (MWBase::Environment::get().getWindowManager()->getMode() == MWGui::GM_Inventory)
|
||||||
// show all stats.
|
{
|
||||||
MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
// Fill the screen, or limit to a certain size on large screens. Size chosen to
|
||||||
int width = std::min(viewSize.width, 600);
|
// show all stats.
|
||||||
int height = std::min(viewSize.height - 48 - 48, 750);
|
MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
||||||
int x = (viewSize.width - width) / 2;
|
int width = std::min(viewSize.width, 600);
|
||||||
int y = (viewSize.height - height) / 2;
|
int height = std::min(viewSize.height - 48 - 48, 750);
|
||||||
|
int x = (viewSize.width - width) / 2;
|
||||||
|
int y = (viewSize.height - height) / 2;
|
||||||
|
|
||||||
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
||||||
window->setCoord(x, active ? y : viewSize.height + 1, width, height);
|
window->setCoord(x, active ? y : viewSize.height + 1, width, height);
|
||||||
|
|
||||||
if (active)
|
if (active)
|
||||||
onWindowResize(window);
|
onWindowResize(window);
|
||||||
|
}
|
||||||
|
|
||||||
WindowBase::setActiveControllerWindow(active);
|
WindowBase::setActiveControllerWindow(active);
|
||||||
}
|
}
|
||||||
|
@ -1901,6 +1901,11 @@ namespace MWGui
|
|||||||
|
|
||||||
void WindowManager::onWindowChangeCoord(MyGUI::Window* window)
|
void WindowManager::onWindowChangeCoord(MyGUI::Window* window)
|
||||||
{
|
{
|
||||||
|
// If using controller menus, don't persist changes to size of the stats or magic
|
||||||
|
// windows.
|
||||||
|
if (Settings::gui().mControllerMenus && (window == (MyGUI::Window*)mStatsWindow || window == (MyGUI::Window*)mSpellWindow))
|
||||||
|
return;
|
||||||
|
|
||||||
const auto it = mTrackedWindows.find(window);
|
const auto it = mTrackedWindows.find(window);
|
||||||
if (it == mTrackedWindows.end())
|
if (it == mTrackedWindows.end())
|
||||||
return;
|
return;
|
||||||
@ -2147,23 +2152,31 @@ namespace MWGui
|
|||||||
|
|
||||||
void WindowManager::updatePinnedWindows()
|
void WindowManager::updatePinnedWindows()
|
||||||
{
|
{
|
||||||
mInventoryWindow->setPinned(Settings::windows().mInventoryPin);
|
if (Settings::gui().mControllerMenus)
|
||||||
mMap->setPinned(Settings::windows().mMapPin);
|
|
||||||
mSpellWindow->setPinned(Settings::windows().mSpellsPin);
|
|
||||||
mStatsWindow->setPinned(Settings::windows().mStatsPin);
|
|
||||||
|
|
||||||
// Hide hidden inventory windows, but not in controller mode.
|
|
||||||
if (!Settings::gui().mControllerMenus)
|
|
||||||
{
|
{
|
||||||
if (Settings::windows().mInventoryHidden)
|
// In controller mode, don't hide any menus and only allow pinning the map.
|
||||||
mShown = (GuiWindow)(mShown ^ GW_Inventory);
|
mInventoryWindow->setPinned(false);
|
||||||
if (Settings::windows().mMapHidden)
|
mMap->setPinned(Settings::windows().mMapPin);
|
||||||
mShown = (GuiWindow)(mShown ^ GW_Map);
|
mSpellWindow->setPinned(false);
|
||||||
if (Settings::windows().mSpellsHidden)
|
mStatsWindow->setPinned(false);
|
||||||
mShown = (GuiWindow)(mShown ^ GW_Magic);
|
return;
|
||||||
if (Settings::windows().mStatsHidden)
|
|
||||||
mShown = (GuiWindow)(mShown ^ GW_Stats);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mInventoryWindow->setPinned(Settings::windows().mInventoryPin);
|
||||||
|
if (Settings::windows().mInventoryHidden)
|
||||||
|
mShown = (GuiWindow)(mShown ^ GW_Inventory);
|
||||||
|
|
||||||
|
mMap->setPinned(Settings::windows().mMapPin);
|
||||||
|
if (Settings::windows().mMapHidden)
|
||||||
|
mShown = (GuiWindow)(mShown ^ GW_Map);
|
||||||
|
|
||||||
|
mSpellWindow->setPinned(Settings::windows().mSpellsPin);
|
||||||
|
if (Settings::windows().mSpellsHidden)
|
||||||
|
mShown = (GuiWindow)(mShown ^ GW_Magic);
|
||||||
|
|
||||||
|
mStatsWindow->setPinned(Settings::windows().mStatsPin);
|
||||||
|
if (Settings::windows().mStatsHidden)
|
||||||
|
mShown = (GuiWindow)(mShown ^ GW_Stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WindowManager::pinWindow(GuiWindow window)
|
void WindowManager::pinWindow(GuiWindow window)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user