From bed2ede94cb7359d36556fd99d9b791412584721 Mon Sep 17 00:00:00 2001 From: FajsiEx Date: Mon, 22 Nov 2021 20:39:56 +0100 Subject: [PATCH] + letterboxing to filterwheel --- scripts/songselect/filterwheel.lua | 72 +++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 20 deletions(-) diff --git a/scripts/songselect/filterwheel.lua b/scripts/songselect/filterwheel.lua index 01db50c..d451a91 100644 --- a/scripts/songselect/filterwheel.lua +++ b/scripts/songselect/filterwheel.lua @@ -3,6 +3,8 @@ local Easing = require('common.easings'); local SongSelectHeader = require('components.headers.songSelectHeader') local Footer = require('components.footer'); +local backgroundImage = gfx.CreateSkinImage("bg_pattern.png", gfx.IMAGE_REPEATX | gfx.IMAGE_REPEATY) + local defaultFolderBgImage = gfx.CreateSkinImage('song_select/filter_wheel/bg.png', 0) local collectionFolderBgImage = gfx.CreateSkinImage('song_select/filter_wheel/col_bg.png', 0) local subFolderBgImage = gfx.CreateSkinImage('song_select/filter_wheel/sub_bg.png', 0) @@ -107,6 +109,24 @@ local transitionLeaveScale = 1; local transitionLeaveReappearTimer = 0; local TRANSITION_LEAVE_DURATION = 0.1; +-- Window variables +local resX, resY + +-- Aspect Ratios +local landscapeWidescreenRatio = 16 / 9 +local landscapeStandardRatio = 4 / 3 +local portraitWidescreenRatio = 9 / 16 + +-- Portrait sizes +local fullX, fullY + +local resolutionChange = function(x, y) + resX = x + resY = y + fullX = portraitWidescreenRatio * y + fullY = y +end + function resetLayoutInformation() resx, resy = game.GetResolution() scale = resx / desw @@ -261,7 +281,7 @@ end function drawScrollbar() if not isFilterWheelActive or transitionLeaveScale ~= 0 then return end - + gfx.BeginPath() local bgW = 13*0.85; local bgH = 1282*0.85; @@ -323,34 +343,23 @@ function tickTransitions(deltaTime) end end -function drawFilterWheel(deltatime) - gfx.ResetTransform() - resetLayoutInformation() +function drawFilterWheelContent(deltatime) tickTransitions(deltatime); - gfx.Scale(scale, scale); - drawFolderList() end -render = function(deltatime, shown) - isFilterWheelActive = shown; - drawFilterWheel(deltatime) +local drawFilterWheel = function (x,y,w,h, deltaTime) + gfx.Scissor(x,y,w,h); + gfx.Translate(x,y); + gfx.Scale(w/1080, h/1920); - if not shown then - game.SetSkinSetting('_songWheelOverlayActive', 0); - else - game.SetSkinSetting('_songWheelOverlayActive', 1); - end - - game.SetSkinSetting('_songWheelActiveFolderLabel', getFolderData(filters.folder[selectedFolder]).label); - game.SetSkinSetting('_songWheelActiveSubFolderLabel', getFolderData(filters.level[selectedLevel]).label); - + drawFilterWheelContent(deltaTime) drawCursor() drawScrollbar() if (game.GetSkinSetting('_currentScreen') == 'songwheel') then - SongSelectHeader.draw(deltatime); - Footer.draw(deltatime); + SongSelectHeader.draw(deltaTime); + Footer.draw(deltaTime); end if (isFilterWheelActive ~= previousActiveState) then @@ -368,6 +377,29 @@ render = function(deltatime, shown) -- transitionLeaveScale .. ' // L_TRT: ' .. transitionLeaveReappearTimer, 8, 1870); end +render = function(deltaTime, shown) + isFilterWheelActive = shown; + + if not shown then + game.SetSkinSetting('_songWheelOverlayActive', 0); + else + game.SetSkinSetting('_songWheelOverlayActive', 1); + end + + game.SetSkinSetting('_songWheelActiveFolderLabel', getFolderData(filters.folder[selectedFolder]).label); + game.SetSkinSetting('_songWheelActiveSubFolderLabel', getFolderData(filters.level[selectedLevel]).label); + + -- detect resolution change + local resx, resy = game.GetResolution(); + if resx ~= resX or resy ~= resY then + resolutionChange(resx, resy) + end + + gfx.GlobalAlpha(1) + + drawFilterWheel((resX - fullX) / 2, 0, fullX, fullY, deltaTime); +end + set_selection = function(newIndex, isFolder) local oldIndex = 1; local total = 1;