diff --git a/scripts/components/headers/challengeSelectHeader.lua b/scripts/components/headers/challengeSelectHeader.lua new file mode 100644 index 0000000..795f657 --- /dev/null +++ b/scripts/components/headers/challengeSelectHeader.lua @@ -0,0 +1,61 @@ +local resx, resy = game.GetResolution(); +local desw = 1080; +local desh = 1920; +local scale = 1; + +local BAR_ALPHA = 191; + +local HEADER_HEIGHT = 100 +local headerY = 0; + +local animationHeaderGlowScale = 0; +local animationHeaderGlowAlpha = 0; + +-- Images +local headerTitleImage = gfx.CreateSkinImage("challenge_select/skill_analyzer.png", gfx.IMAGE_GENERATE_MIPMAPS) + +local drawHeader = function () + gfx.BeginPath(); + gfx.FillColor(0,0,0,BAR_ALPHA); + gfx.Rect(0,0,desw, HEADER_HEIGHT); + gfx.Fill(); + gfx.ClosePath() + + local headerImageWidth, headerImageHeight = gfx.ImageSize(headerTitleImage) + gfx.ImageRect( + (desw - headerImageWidth) / 2, (HEADER_HEIGHT - headerImageHeight) / 2, + headerImageWidth, headerImageHeight, + headerTitleImage, 1, 0 + ) +end + +local progressTransitions = function (deltatime) + -- HEADER GLOW ANIMATION + if animationHeaderGlowScale < 1 then + animationHeaderGlowScale = animationHeaderGlowScale + deltatime / 1 -- transition should last for that time in seconds + else + animationHeaderGlowScale = 0 + end + + if animationHeaderGlowScale < 0.5 then + animationHeaderGlowAlpha = animationHeaderGlowScale * 2; + else + animationHeaderGlowAlpha = 1-((animationHeaderGlowScale-0.5) * 2); + end + animationHeaderGlowAlpha = animationHeaderGlowAlpha*0.4 +end + +local draw = function (deltatime) + gfx.Save() + + gfx.LoadSkinFont("NotoSans-Regular.ttf"); + + drawHeader(); + + --progressTransitions(deltatime); + gfx.Restore() +end + +return { + draw = draw +}; \ No newline at end of file diff --git a/scripts/songselect/chalwheel.lua b/scripts/songselect/chalwheel.lua index dba5995..91da25b 100644 --- a/scripts/songselect/chalwheel.lua +++ b/scripts/songselect/chalwheel.lua @@ -1,6 +1,8 @@ +local Common = require("common.common") local Numbers = require("common.numbers") local DiffRectangle = require("components.diff_rectangle") -local Common = require("common.common") +local Header = require("components.headers.challengeSelectHeader") +local Footer = require("components.footer") local backgroundImage = gfx.CreateSkinImage("bg_pattern.png", gfx.IMAGE_REPEATX | gfx.IMAGE_REPEATY) local challengeBGImage = gfx.CreateSkinImage("challenge_select/bg.png", 0) @@ -90,6 +92,8 @@ local challengeCache = {} local timer = 0 -- Window variables +local desw = 1080 +local desh = 1920 local resX, resY -- Aspect Ratios @@ -532,6 +536,8 @@ end --]] render = function(deltaTime) + gfx.FontFace("dfmarugoth.ttf"); + -- detect resolution change local resx, resy = game.GetResolution(); if resx ~= resX or resy ~= resY then @@ -546,13 +552,14 @@ render = function(deltaTime) gfx.Fill() if chalwheel.challenges and chalwheel.challenges[1] then + local wheelCenterX = (resX - fullX) / 2 -- draw surface background gfx.BeginPath() - gfx.ImageRect((resX - fullX) / 2, 0, fullX, fullY, challengeBGImage, 1, 0) + gfx.ImageRect(wheelCenterX, 0, fullX, fullY, challengeBGImage, 1, 0) -- draw chalwheel gfx.BeginPath(); - draw_chalwheel((resX - fullX) / 2, 0, fullX, fullY) + draw_chalwheel(wheelCenterX, 0, fullX, fullY) -- Draw Legend Information --[[ will be reimplemented sometime later @@ -573,9 +580,13 @@ render = function(deltaTime) end --]] - gfx.FontFace("dfmarugoth.ttf"); + gfx.Translate(wheelCenterX, 0) + gfx.Scale(fullX / desw, fullY / desh); + + Header.draw(deltaTime) + Footer.draw(deltaTime) + gfx.ResetTransform() - gfx.ForceRender() end end diff --git a/scripts/songtransition.lua b/scripts/songtransition.lua index 6ddaee6..bf40b0a 100644 --- a/scripts/songtransition.lua +++ b/scripts/songtransition.lua @@ -1,5 +1,6 @@ local common = require('common.common'); +local Numbers = require('common.numbers') game.LoadSkinSample('song_transition_screen/transition_enter.wav'); @@ -50,35 +51,6 @@ function resetLayoutInformation() scale = resx / desw end -function load_number_image(path) - local images = {} - for i = 0, 9 do - images[i + 1] = gfx.CreateSkinImage(string.format("%s/%d.png", path, i), 0) - end - return images -end - -function draw_number(x, y, alpha, num, digits, images, is_dim, scale, kern) - scale = scale or 1; - kern = kern or 1; - local tw, th = gfx.ImageSize(images[1]) - tw = tw * scale; - th = th * scale; - x = x + (tw * (digits - 1)) / 2 - y = y - th / 2 - for i = 1, digits do - local mul = 10 ^ (i - 1) - local digit = math.floor(num / mul) % 10 - local a = alpha - if is_dim and num < mul then - a = 0.4 - end - gfx.BeginPath() - gfx.ImageRect(x, y, tw, th, images[digit + 1], a, 0) - x = x - (tw * kern) - end -end - function render(deltaTime) if not wasEnterSfxPlayed then common.stopMusic(); @@ -86,7 +58,7 @@ function render(deltaTime) wasEnterSfxPlayed = true; end if not difficultyNumbers then - difficultyNumbers = load_number_image('diff_num') + difficultyNumbers = Numbers.load_number_image('diff_num') end local x_offset = (resX - fullX) / 2 @@ -178,7 +150,7 @@ function render_screen(progress) -- Draw song diff level gfx.BeginPath(); - draw_number(933, 1140, 1.0, song.level, 2, difficultyNumbers, false, 1, 1) + Numbers.draw_number(933, 1140, 1.0, song.level, 2, difficultyNumbers, false, 1, 1) -- Draw song diff label (NOV/ADV/EXH/MXM/etc.) gfx.BeginPath();