diff --git a/modules/client_options/graphics.otui b/modules/client_options/graphics.otui index 08bae858..2b7e345b 100644 --- a/modules/client_options/graphics.otui +++ b/modules/client_options/graphics.otui @@ -42,13 +42,17 @@ Panel id: fullscreen !text: tr('Fullscreen') + OptionCheckBox + id: dontStretchShrink + !text: tr('Don\'t stretch/shrink Game Window') + Label id: backgroundFrameRateLabel !text: tr('Game framerate limit: %s', 'max') anchors.left: parent.left anchors.right: parent.right anchors.top: prev.bottom - margin-top: 6 + margin-top: 16 @onSetup: | local value = Options.getOption('backgroundFrameRate') local text = value diff --git a/modules/client_options/options.lua b/modules/client_options/options.lua index 0657de1c..1f54ed68 100644 --- a/modules/client_options/options.lua +++ b/modules/client_options/options.lua @@ -5,6 +5,7 @@ local defaultOptions = { showFps = true, showPing = true, fullscreen = false, + dontStretchShrink = false, classicControl = false, walkBooster = false, smartWalk = false, @@ -144,6 +145,10 @@ function Options.setOption(key, value) end) elseif key == 'fullscreen' then g_window.setFullscreen(value) + elseif key == 'dontStretchShrink' then + addEvent(function() + modules.game_interface.updateStretchShrink() + end) elseif key == 'enableMusic' then g_sounds.enableMusic(value) elseif key == 'showLeftPanel' then diff --git a/modules/client_options/options.otui b/modules/client_options/options.otui index ccf7b7cb..db01211c 100644 --- a/modules/client_options/options.otui +++ b/modules/client_options/options.otui @@ -17,7 +17,7 @@ OptionCheckBox < CheckBox MainWindow id: optionsWindow !text: tr('Options') - size: 350 280 + size: 350 290 @onEnter: Options.hide() @onEscape: Options.hide() diff --git a/modules/game_interface/gameinterface.lua b/modules/game_interface/gameinterface.lua index 8dc9dd13..057277fe 100644 --- a/modules/game_interface/gameinterface.lua +++ b/modules/game_interface/gameinterface.lua @@ -10,6 +10,7 @@ mouseGrabberWidget = nil countWindow = nil logoutWindow = nil exitWindow = nil +bottomSplitter = nil function init() g_ui.importStyle('styles/countwindow.otui') @@ -25,6 +26,7 @@ function init() mouseGrabberWidget = gameRootPanel:getChildById('mouseGrabber') mouseGrabberWidget.onMouseRelease = onMouseGrabberRelease + bottomSplitter = gameRootPanel:getChildById('bottomSplitter') gameMapPanel = gameRootPanel:getChildById('gameMapPanel') gameRightPanel = gameRootPanel:getChildById('gameRightPanel') gameLeftPanel = gameRootPanel:getChildById('gameLeftPanel') @@ -90,6 +92,7 @@ function show() gameRootPanel:show() gameRootPanel:focus() gameMapPanel:followCreature(g_game.getLocalPlayer()) + updateStretchShrink() end function hide() @@ -187,6 +190,16 @@ function smartWalk(defaultDir) end end +function updateStretchShrink() + if Options.getOption('dontStretchShrink') then + gameMapPanel:setKeepAspectRatio(true) + gameMapPanel:setVisibleDimension({ width = 15, height = 11 }) + + -- Set gameMapPanel size to height = 11 * 32 + bottomSplitter:setMarginBottom(bottomSplitter:getMarginBottom() + (gameMapPanel:getHeight() - 32 * 11) - 10) + end +end + function toggleAspectRatio() if gameMapPanel:isKeepAspectRatioEnabled() then gameMapPanel:setKeepAspectRatio(false) diff --git a/modules/game_interface/gameinterface.otui b/modules/game_interface/gameinterface.otui index 8c899e48..185cfddb 100644 --- a/modules/game_interface/gameinterface.otui +++ b/modules/game_interface/gameinterface.otui @@ -63,7 +63,7 @@ UIWidget anchors.bottom: parent.bottom relative-margin: bottom margin-bottom: 172 - @canUpdateMargin: function(self, newMargin) return math.max(math.min(newMargin, self:getParent():getHeight() - 300), 100) end + @canUpdateMargin: function(self, newMargin) if Options.getOption('dontStretchShrink') then return self:getMarginBottom() end return math.max(math.min(newMargin, self:getParent():getHeight() - 300), 100) end @onGeometryChange: function(self) self:setMarginBottom(math.min(math.max(self:getParent():getHeight() - 300, 100), self:getMarginBottom())) end UIWidget