+ letterboxing to songwheel, filterwheel and sortwheel

This commit is contained in:
FajsiEx 2021-11-22 22:25:38 +01:00
parent bed2ede94c
commit 543bf7b447
5 changed files with 49 additions and 35 deletions

View File

@ -74,8 +74,7 @@ local draw = function (deltaTime, params)
end end
gfx.Save() gfx.Save()
resetLayoutInformation()
gfx.Scale(scale, scale)
gfx.LoadSkinFont("NotoSans-Regular.ttf"); gfx.LoadSkinFont("NotoSans-Regular.ttf");

View File

@ -17,12 +17,6 @@ local animationHeaderGlowAlpha = 0;
local headerTitleImage = gfx.CreateSkinImage("song_select/header/title.png", 1) local headerTitleImage = gfx.CreateSkinImage("song_select/header/title.png", 1)
local headerGlowTitleImage = gfx.CreateSkinImage("song_select/header/title_glow.png", 1) local headerGlowTitleImage = gfx.CreateSkinImage("song_select/header/title_glow.png", 1)
function resetLayoutInformation()
resx, resy = game.GetResolution()
desw = 1080
desh = 1920
scale = resx / desw
end
local drawHeader = function () local drawHeader = function ()
gfx.BeginPath(); gfx.BeginPath();
@ -53,8 +47,6 @@ end
local draw = function (deltatime) local draw = function (deltatime)
gfx.Save() gfx.Save()
resetLayoutInformation()
gfx.Scale(scale, scale)
gfx.LoadSkinFont("NotoSans-Regular.ttf"); gfx.LoadSkinFont("NotoSans-Regular.ttf");

View File

@ -349,7 +349,6 @@ function drawFilterWheelContent(deltatime)
end end
local drawFilterWheel = function (x,y,w,h, deltaTime) local drawFilterWheel = function (x,y,w,h, deltaTime)
gfx.Scissor(x,y,w,h);
gfx.Translate(x,y); gfx.Translate(x,y);
gfx.Scale(w/1080, h/1920); gfx.Scale(w/1080, h/1920);

View File

@ -163,11 +163,8 @@ local resolutionChange = function(x, y)
resY = y resY = y
fullX = portraitWidescreenRatio * y fullX = portraitWidescreenRatio * y
fullY = y fullY = y
end
function resetLayoutInformation() game.Log('resX:' .. resX .. ' // resY:' .. resY .. ' // fullX:' .. fullX .. ' // fullY:' .. fullY, game.LOGGER_ERROR);
resx, resy = game.GetResolution()
scale = resx / desw
end end
function load_number_image(path) function load_number_image(path)
@ -250,13 +247,14 @@ function getGradeImageForScore(score)
end end
function drawLaserAnim() function drawLaserAnim()
gfx.Save();
gfx.BeginPath() gfx.BeginPath()
gfx.Scissor(0, transitionLaserY, desw, 100); gfx.Scissor(0, transitionLaserY, desw, 100);
gfx.ImageRect(0, 0, desw, desh, laserAnimBaseImage, 1, 0) gfx.ImageRect(0, 0, desw, desh, laserAnimBaseImage, 1, 0)
gfx.ResetScissor(); gfx.Restore();
end end
function drawBackground(deltaTime) function drawBackground(deltaTime)
@ -765,9 +763,11 @@ function tickTransitions(deltaTime)
end end
draw_songwheel = function(x,y,w,h, deltaTime) draw_songwheel = function(x,y,w,h, deltaTime)
gfx.Scissor(x,y,w,h);
gfx.Translate(x,y); gfx.Translate(x,y);
gfx.Scale(w/1080, h/1920); gfx.Scale(w/1080, h/1920);
gfx.Scissor(0,0,1080,1920);
drawBackground(deltaTime); drawBackground(deltaTime);
@ -803,8 +803,6 @@ render = function (deltaTime)
difficultyNumbers = load_number_image('diff_num') difficultyNumbers = load_number_image('diff_num')
end end
game.SetSkinSetting('_currentScreen', 'title')
-- detect resolution change -- detect resolution change
local resx, resy = game.GetResolution(); local resx, resy = game.GetResolution();
if resx ~= resX or resy ~= resY then if resx ~= resX or resy ~= resY then

View File

@ -1,6 +1,9 @@
require('common') require('common')
local Easing = require('common.easings'); local Easing = require('common.easings');
local resx, resy = game.GetResolution()
local desw, desh = 1080, 1920
-- AUDIO -- AUDIO
game.LoadSkinSample('sort_wheel/enter.wav'); game.LoadSkinSample('sort_wheel/enter.wav');
game.LoadSkinSample('sort_wheel/leave.wav'); game.LoadSkinSample('sort_wheel/leave.wav');
@ -12,10 +15,6 @@ local activeItemBgImage = gfx.CreateSkinImage(
local titleTextImage = local titleTextImage =
gfx.CreateSkinImage('song_select/sort_wheel/title.png', 0) gfx.CreateSkinImage('song_select/sort_wheel/title.png', 0)
local resx, resy = game.GetResolution()
local desw, desh = 1080, 1920;
local scale = 1;
local selection = 1; local selection = 1;
local renderedButtonLabels = {} local renderedButtonLabels = {}
@ -48,9 +47,24 @@ local transitionEnterOffsetX = 0;
local previousActiveState = false; local previousActiveState = false;
function resetLayoutInformation() -- Window variables
resx, resy = game.GetResolution() local resX, resY
scale = resx / desw
-- Aspect Ratios
local landscapeWidescreenRatio = 16 / 9
local landscapeStandardRatio = 4 / 3
local portraitWidescreenRatio = 9 / 16 --+ 0.0035
-- Portrait sizes
local fullX, fullY
local resolutionChange = function(x, y)
resX = x
resY = y
fullX = portraitWidescreenRatio * y
fullY = y
game.Log('resX:' .. resX .. ' // resY:' .. resY .. ' // fullX:' .. fullX .. ' // fullY:' .. fullY, game.LOGGER_ERROR);
end end
function tableContains(table, value) function tableContains(table, value)
@ -136,11 +150,16 @@ function tickTransitions(deltaTime)
transitionEnterOffsetX = Easing.inOutQuad(1 - transitionEnterScale) * 416 transitionEnterOffsetX = Easing.inOutQuad(1 - transitionEnterScale) * 416
end end
function drawSortWheel(deltaTime) local drawSortWheel = function (x,y,w,h, deltaTime)
gfx.Scissor(x,y,w,h);
gfx.Translate(x,y);
gfx.Scale(w/1080, h/1920);
gfx.Scissor(0,0,1080,1920);
-- Draw the dark overlay above song wheel -- Draw the dark overlay above song wheel
gfx.BeginPath(); gfx.BeginPath();
gfx.FillColor(0, 0, 0, math.floor(transitionEnterScale * 192)); gfx.FillColor(0, 0, 0, math.floor(transitionEnterScale * 192));
gfx.Rect(0, 0, desw, desh); gfx.Rect(0, 0, 1080, 1920);
gfx.Fill(); gfx.Fill();
-- Draw the panel background -- Draw the panel background
@ -188,8 +207,7 @@ function render(deltaTime, shown)
gfx.Save() gfx.Save()
gfx.ResetTransform() gfx.ResetTransform()
renderedButtonLabels = {}; renderedButtonLabels = {};
resetLayoutInformation()
gfx.Scale(scale, scale)
if (shown ~= previousActiveState) then if (shown ~= previousActiveState) then
if (shown) then if (shown) then
@ -201,12 +219,20 @@ function render(deltaTime, shown)
previousActiveState = shown; previousActiveState = shown;
end end
-- detect resolution change
local resx, resy = game.GetResolution();
if resx ~= resX or resy ~= resY then
resolutionChange(resx, resy)
end
gfx.GlobalAlpha(1)
if not shown then if not shown then
transitionEnterReverse = true transitionEnterReverse = true
if (transitionEnterScale > 0) then drawSortWheel(deltaTime) end if (transitionEnterScale > 0) then drawSortWheel((resX - fullX) / 2, 0, fullX, fullY, deltaTime) end
else else
transitionEnterReverse = false transitionEnterReverse = false
drawSortWheel(deltaTime) drawSortWheel((resX - fullX) / 2, 0, fullX, fullY, deltaTime)
end end
tickTransitions(deltaTime) tickTransitions(deltaTime)
setSkinSetting(); setSkinSetting();