]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Chop game background in mainmenu (#10796)
authorLars Müller <34514239+appgurueu@users.noreply.github.com>
Tue, 14 Sep 2021 18:46:02 +0000 (20:46 +0200)
committerGitHub <noreply@github.com>
Tue, 14 Sep 2021 18:46:02 +0000 (20:46 +0200)
games/devtest/menu/background.png
src/gui/guiEngine.cpp

index 415bb3d146a2ff6a8bca17c90c68cfc6638b2183..89c45fcd5861990de8602899b4e8112c46fca762 100644 (file)
Binary files a/games/devtest/menu/background.png and b/games/devtest/menu/background.png differ
index b3808535c593e295545f23c0fae1650d31abad69..c39c3ee0dcd7dcf9817ca8e088a3d9d484741300 100644 (file)
@@ -437,9 +437,22 @@ void GUIEngine::drawBackground(video::IVideoDriver *driver)
                return;
        }
 
+       // Chop background image to the smaller screen dimension
+       v2u32 bg_size = screensize;
+       v2f32 scale(
+                       (f32) bg_size.X / sourcesize.X,
+                       (f32) bg_size.Y / sourcesize.Y);
+       if (scale.X < scale.Y)
+               bg_size.X = (int) (scale.Y * sourcesize.X);
+       else
+               bg_size.Y = (int) (scale.X * sourcesize.Y);
+       v2s32 offset = v2s32(
+               (s32) screensize.X - (s32) bg_size.X,
+               (s32) screensize.Y - (s32) bg_size.Y
+       ) / 2;
        /* Draw background texture */
        draw2DImageFilterScaled(driver, texture,
-               core::rect<s32>(0, 0, screensize.X, screensize.Y),
+               core::rect<s32>(offset.X, offset.Y, bg_size.X + offset.X, bg_size.Y + offset.Y),
                core::rect<s32>(0, 0, sourcesize.X, sourcesize.Y),
                NULL, NULL, true);
 }