big thing

This commit is contained in:
RealFD 2022-07-05 20:44:14 +02:00
parent e516e5c3b2
commit b506c8ff50
39 changed files with 381 additions and 150 deletions

View File

@ -5,7 +5,7 @@ local common = require('common.util');
local Sound = require("common.sound")
local Numbers = require('components.numbers')
local VolforceWindow = require("components.volforceWindow")
local dancheck = require("components.dancheck");
-- Window variables
local resX, resY
@ -39,6 +39,7 @@ local playerInfoOverlayBgImage = gfx.CreateSkinImage("challenge_result/player_in
local headerTitleImage = gfx.CreateSkinImage("challenge_result/header/title.png", 0);
local username = game.GetSkinSetting("username");
local msg = game.GetSkinSetting("MSG");
local appealCardImage = gfx.CreateSkinImage("crew/appeal_card.png", 0);
local danBadgeImage = gfx.CreateSkinImage("dan/inf.png", 0);
local crewImage = gfx.CreateSkinImage("crew/portrait.png", 0);
@ -51,7 +52,6 @@ local completionPassImage = gfx.CreateSkinImage("challenge_result/pass_states/pa
local irHeartbeatRequested = false;
local IRserverName = "";
local badgeImages = {
gfx.CreateSkinImage("song_select/medal/nomedal.png", 1),
gfx.CreateSkinImage("song_select/medal/played.png", 1),
@ -69,14 +69,14 @@ local gradeImages = {
AA = gfx.CreateSkinImage("common/grades/AA.png", 0),
A_P = gfx.CreateSkinImage("common/grades/A+.png", 0),
A = gfx.CreateSkinImage("common/grades/A.png", 0),
B = gfx.CreateSkinImage("common/grades/B.png", 0),
B = gfx.CreateSkinImage("commo n/grades/B.png", 0),
C = gfx.CreateSkinImage("common/grades/C.png", 0),
D = gfx.CreateSkinImage("common/grades/D.png", 0),
none = gfx.CreateSkinImage("common/grades/none.png", 0),
}
local percRequired = 1;
local percGet = 0;
local percRequired = nil;
local percGet = nil;
-- AUDIO
game.LoadSkinSample("challenge_result.wav")
@ -134,11 +134,11 @@ function drawPlayerInfo()
gfx.FontSize(28)
gfx.LoadSkinFont("Digital-Serial-Bold.ttf")
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
gfx.Text("Hellooooooo", 310, 370);
gfx.Text(msg, 310, 370);
-- Draw username
gfx.FontSize(40)
gfx.Text(username, 310, 413);
gfx.Text(string.upper(username), 310, 413);
-- Draw IR server name
gfx.FontSize(28)
@ -146,7 +146,7 @@ function drawPlayerInfo()
-- Draw dan badge
gfx.BeginPath();
gfx.ImageRect(311, 490, 107 * 1.25, 29 * 1.25, danBadgeImage, 1, 0);
gfx.ImageRect(311, 490, 107 * 1.25, 29 * 1.25, dancheck(false), 1, 0);
end
local scoreNumber = Numbers.load_number_image("score_num");
@ -161,7 +161,7 @@ function drawChartResult(deltaTime, x, y, chartResult)
gfx.GlobalAlpha(1);
gfx.Text(chartResult.title, x+160,y+32);
DiffRectangle.render(deltaTime, x+287.5, y+67, 0.85, chartResult.difficulty, chartResult.level)
DiffRectangle.render(deltaTime, x+287.5, y+67, 0.85, chartResult.difficulty+1, chartResult.level)
local score = chartResult.score or 0;
@ -215,6 +215,10 @@ function drawCompletion()
gfx.BeginPath()
gfx.ImageRect(63, 1331, 766*0.85, 130*0.85, completitionImage, 1, 0)
if (percRequired == nil) then
return
end
Numbers.draw_number(925, 1370, 1.0, percGet, 3, scoreNumber, true, 0.3, 1.12)
@ -224,9 +228,14 @@ function drawCompletion()
gfx.Fill()
end
function result_set()
if (result.requirement_text == nil) then
return
end
local reqTextWords = common.split(result.requirement_text, ' ');
for index, word in ipairs(reqTextWords) do
if string.find(word, '%%') ~= nil then -- %% = %, because % is an escape char
local percNumber = tonumber(string.gsub(word, '%%', ''), 10)
@ -234,6 +243,11 @@ function result_set()
end
end
if (percRequired == nil) then
return
end
game.Log(percRequired, game.LOGGER_ERROR);
local a = 0;

View File

@ -1,5 +1,5 @@
local function split(s, delimiter)
result = {};
local result = {};
for match in (s..delimiter):gmatch("(.-)"..delimiter) do
table.insert(result, match);
end

View File

@ -1,5 +1,7 @@
local vfBrackets = {0, 10, 12, 14, 15, 16, 17, 18, 19, 20, 24}
local volforceAmount = game.GetSkinSetting('_volforce');
local stNum = 1
if not volforceAmount then
@ -22,7 +24,7 @@ local function handleForce(vf)
end
break
end
if i > 7 then
if i < 7 then
stNum = 2
else
stNum = 1
@ -69,8 +71,12 @@ function render(deltatime, x, y,size,iftxt,amount)
gfx.FontSize(11)
gfx.Text('VOLFORCE', x + 47, y + 14);
gfx.FontSize(18)
if amount == nil then
gfx.Text("0.000", x + 47, y + 30)
else
gfx.Text(string.format('%.3f', amount), x + 47, y + 30);
end
end
end
return {

View File

@ -12,8 +12,6 @@ local getroom = require("multi.roomList.getroom");
local getgrad = require("multi.roomList.getgrad");
local gettop = require("multi.roomList.gettop");
local l_grad = gfx.CreateSkinImage("multi/roomselect/lobby_select_gradiant.png", 1);
local curser = gfx.CreateSkinImage("multi/roomselect/room_panel_glow.png",1)
local jacketFallback = gfx.CreateSkinImage("song_select/loading.png", 0)
@ -170,33 +168,30 @@ end
function render_loading()
if not loading then return end
gfx.Save()
gfx.ResetTransform()
gfx.FillColor(255,255,255)
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
gfx.FontSize(20)
gfx.FontSize(32)
gfx.Text("LOADING "..math.random(1000), resX/resX+10, resY-410)
gfx.Text("LOADING "..math.random(1000), resY/3+25, resX/2 + 302+20)
gfx.Restore()
end
function render_hotkeys()
gfx.Save()
gfx.ResetTransform()
gfx.FontSize(19)
gfx.FontSize(32)
spacer = 370
for i = 1, 2, 1 do
gfx.FillColor(255,255,255)
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
if i == 1 then
gfx.Text("FXR: Sorting", resY/3+25, resX/2 + 302+20 +(i*20))
gfx.Text("FXR: Sorting", resX/resX+10, resY-spacer +(i*20))
elseif i == 2 then
gfx.Text("FXL: LV", resY/3+25, resX/2 + 302+20 +(i*20))
gfx.Text("FXL: LV", resX/resX+10, resY-spacer+10 +(i*20))
end
end
gfx.Restore()
end
function render(deltaTime)
@ -222,14 +217,13 @@ function render(deltaTime)
gfx.Translate(xOffset, 500 - yOffset * entryH)
--make it later like songwheel type loading
for i, song in ipairs(songs) do
if math.abs(cursorPos - i) <= xCount * yCount*1.5 + xCount then
i = i - 1
local x = entryW * (i % xCount)
local y = math.floor(i / xCount) * entryH/2
render_song(song, x, y)
if math.abs(#songs - i) < 1 then load_more() end
if math.abs(#songs - i) < 50 then load_more() end
end
end
gfx.ResetScissor()
@ -254,8 +248,8 @@ function render(deltaTime)
soffset = soffset * 0.8
draw_search(100,50, -100/3-200, 100/4)
draw_search(10,150, -(resX+1000), 100)
gfx.ResetScissor()
end
function archive_callback(entries, id)
@ -420,52 +414,44 @@ function advance_selection(steps)
end
function render_level_filters()
gfx.Save()
gfx.ResetTransform()
gfx.BeginPath()
gfx.FontSize(20)
gfx.FontSize(40)
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE)
-- 1 - 20
for i = 1, 20 do
x = (resY/2)
y = (resX/2) + (i - 1) * 40
x = (resX/resX)
y = (resY/resY) + (i - 1) * 50
if selectedLevels[i] then gfx.FillColor(255,255,0) else gfx.FillColor(255,255,255) end
gfx.Text(tostring(i), x+290-5, y/1.4-130-9)
gfx.Text(tostring(i), x+30, y+460)
if i == 1 then
bruhX = x+279-5
bruhY = y-295-9 + (levelcursor*28.5)
bruhX = x+9
bruhY = y+435 + (levelcursor*50)
end
end
--box
gfx.BeginPath()
gfx.Rect(bruhX,bruhY, 22, 22)
gfx.Rect(bruhX,bruhY, 44, 44)
gfx.StrokeColor(0,204,255)
gfx.StrokeWidth(2)
gfx.Stroke()
gfx.Restore()
end
function render_sorting_selection()
gfx.Save()
gfx.ResetTransform()
gfx.BeginPath()
gfx.FillColor(255,255,255)
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP)
gfx.FontSize(20)
gfx.Text("Sorting method:", resX-400, 100)
gfx.BeginPath()
gfx.Rect(resX, resY, 150, 44)
gfx.StrokeColor(255,128,0)
gfx.StrokeWidth(2)
gfx.Stroke()
gfx.FontSize(20)
gfx.FontSize(30)
gfx.Text("Sorting method:", resX/resX+50, 250)
gfx.FontSize(25)
this = 285
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE)
gfx.Scissor(resX-350, 120,400,20)
gfx.Scissor(resX/resX+125, this,400,20)
for i, opt in ipairs(sortingOptions) do
y = 110 + (i - sortingcursor) *20
y = this-10 + (i - sortingcursor) *20
if selectedSorting == opt then gfx.FillColor(255,255,255) else gfx.FillColor(127,127,127) end
gfx.Text(string.upper(opt), resX-300, y)
gfx.Text(string.upper(opt), resX/resX+175, y)
end
gfx.ResetScissor()
end
@ -482,8 +468,6 @@ function update_search_text(active, text)
local searchIndex = 1
function draw_search(x,y,w,h)
gfx.Save()
gfx.ResetTransform()
soffset = soffset + (searchIndex) - (searchInputActive and 0 or 1)
if searchIndex ~= (searchInputActive and 0 or 1) then
game.PlaySample("woosh")
@ -491,9 +475,9 @@ function draw_search(x,y,w,h)
searchIndex = searchInputActive and 0 or 1
gfx.BeginPath()
local xpos = x+110 + (searchIndex + soffset)*w
local xpos = x + (searchIndex + soffset)*w
gfx.BeginPath();
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE);
gfx.DrawLabel(searchText, xpos+10,y+(h/2), w-20)
gfx.DrawLabel(searchText, xpos,y+(h/2), w-20)
end

View File

@ -173,7 +173,7 @@ local render = function (deltaTime)
local scale = resy / desh
if (isLandscape) then
ALERT_Y_POS = desh*0.6
ALERT_Y_POS = (desh+150)*0.6
else
ALERT_Y_POS = desh*0.58
end

View File

@ -1,6 +1,7 @@
local Charting = require('common.charting');
local DiffRectangle = require('components.diff_rectangle');
local Easing = require('common.easing');
local desw = 1080;
local desh = 1920;
@ -19,13 +20,19 @@ local jacketFallbackImage = gfx.CreateSkinImage("song_select/loading.png", 0);
local jacketImage;
local loadedJacketImage = false;
speedYin = 0
speedYoff = 25
local transitionEnterScale = 0
local loadJacketImage = function (jacketPath)
if jacketImage == nil or jacketImage == jacketFallbackImage then
jacketImage = gfx.LoadImageJob(jacketPath, jacketFallbackImage)
end
end
local renderOutlinedText = function (x,y, text, outlineWidth)
local renderOutlinedText = function (x,y, text, outlineWidth,r,g,b)
gfx.BeginPath();
gfx.FillColor(0,0,0,255);
gfx.Text(text, x-outlineWidth, y+outlineWidth);
@ -33,12 +40,16 @@ local renderOutlinedText = function (x,y, text, outlineWidth)
gfx.Text(text, x+outlineWidth, y+outlineWidth);
gfx.Text(text, x+outlineWidth, y-outlineWidth);
gfx.FillColor(255,255,255,255);
gfx.FillColor(r,g,b,255);
gfx.Text(text, x, y);
end
local tickTransitions = function (deltaTime)
if transitionEnterScale < 1 then
transitionEnterScale = transitionEnterScale + deltaTime / 0.66 -- transition should last for that time in seconds
else
transitionEnterScale = 1
end
end
local demoMode = function (songTitle,songArtist)
@ -54,15 +65,15 @@ local demoMode = function (songTitle,songArtist)
gfx.BeginPath();
gfx.FontSize(38)
gfx.LoadSkinFont('Digital-Serial-Bold.ttf')
renderOutlinedText(desw/4+12,th+90, "DEMO MODE", 2);
renderOutlinedText(desw/4+12,th+90, "DEMO MODE", 2,255,255,255);
gfx.BeginPath();
gfx.ImageRect((desw/4)+15,th+129,desw/2.12,th/2.25,jacketImage,1,0)
gfx.BeginPath();
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE)
renderOutlinedText(desw/2,th+685, songTitle, 2);
renderOutlinedText(desw/2,th+725, songArtist, 2);
renderOutlinedText(desw/2,th+685, songTitle, 2,255,255,255);
renderOutlinedText(desw/2,th+725, songArtist, 2,255,255,255);
end
local render = function (deltaTime, bpm, laneSpeed, jacketPath, diff, level, progress, songTitle, songArtist)
@ -130,31 +141,58 @@ local render = function (deltaTime, bpm, laneSpeed, jacketPath, diff, level, pro
gfx.FontSize(30);
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
renderOutlinedText(25,y+247, "BPM", 2);
renderOutlinedText(25,y+281, "LANE-SPEED", 2);
renderOutlinedText(25,y+247, "BPM", 2,255,255,255);
renderOutlinedText(25,y+281, "LANE-SPEED", 2,255,255,255);
local actualLaneSpeed = (bpm*laneSpeed)/100
gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT + gfx.TEXT_ALIGN_MIDDLE);
renderOutlinedText(260,y+247, string.format("%.0f", bpm), 2);
renderOutlinedText(260,y+281, string.format("%.2f", actualLaneSpeed), 2);
renderOutlinedText(260,y+247, string.format("%.0f", bpm), 2,255,255,255);
renderOutlinedText(260,y+281, string.format("%.2f", actualLaneSpeed), 2,255,255,255);
move = 0
if game.GetButton(game.BUTTON_STA) then
move = 25
renderOutlinedText(130,y+315, "HI-SPEED", 2,255,255,255)
renderOutlinedText(255,y+315,string.format("%.1f",laneSpeed), 2,0,255,0)
end
if gameplay.hitWindow.type ~= nil and gameplay.hitWindow.type == 0 then
symbolthing = "-"
elseif gameplay.hitWindow.type == 1 then
symbolthing = ""
elseif gameplay.hitWindow.type == 2 then
symbolthing = "+"
end
gfx.FontSize(20);
gfx.FillColor(255,255,0)
gfx.Text(string.upper("Judge:")..symbolthing..gameplay.hitWindow.type,80,y+315+move);
gfx.FillColor(255,255,255)
gfx.FontSize(18);
if not isLandscape then -- notify thingy
theY = {350;394.5}
else
theY = {640;684.5}
end
if gameplay.autoplay and not gameplay.demoMode and gameplay.practice_setup == nil then
gfx.BeginPath();
gfx.ImageRect(0,y+310,245,67,notify,1,0);
gfx.ImageRect(0,y+theY[1],245,67,notify,1,0);
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
renderOutlinedText(30,y+354.5, "AUTOPLAY IS ENABLED", 1.5);
renderOutlinedText(30,y+theY[2], "AUTOPLAY IS ENABLED", 1.5,255,255,255);
elseif gameplay.demoMode and gameplay.practice_setup == nil then
gfx.BeginPath();
if (isLandscape) then
gfx.ImageRect(0,y+310,245,67,notify,1,0);
gfx.ImageRect(0,y+theY[1],245,67,notify,1,0);
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
renderOutlinedText(30,y+354.5, "DEMO MODE IS ENABLED", 1.5);
renderOutlinedText(30,y+theY[2], "DEMO MODE IS ENABLED", 1.5,255,255,255);
else
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
demoMode(songTitle,songArtist)
@ -172,9 +210,9 @@ local render = function (deltaTime, bpm, laneSpeed, jacketPath, diff, level, pro
elseif gameplay.practice_setup then
gfx.BeginPath();
gfx.ImageRect(0,y+310,245,67,notify,1,0);
gfx.ImageRect(0,y+theY[1],245,67,notify,1,0);
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
renderOutlinedText(30,y+354.5, "PRACTICE MODE IS ENABLED", 1.5);
renderOutlinedText(30,y+theY[2], "PRACTICE MODE IS ENABLED", 1.5,255,255,255);
end

View File

@ -10,8 +10,8 @@ local isLandscape = false;
local bgImage = gfx.CreateSkinImage("gameplay/user_panel/bg.png", 0);
local appealCardImage = gfx.CreateSkinImage("crew/appeal_card.png", 0);
local danBadgeImage = gfx.CreateSkinImage("dan.png", 0);
local idolFrameImage = gfx.CreateSkinImage("crew/frame.png", 0);
@ -134,6 +134,10 @@ local render = function (deltaTime, score, bestReplay)
VolforceWindow.render(deltaTime, 220, y+197,42,true,volforceAmount)
else
appealCardImage = gfx.CreateSkinImage("gameplay/user_panel/appeal_card.png", 0);
idolFrameImage = gfx.CreateSkinImage("gameplay/user_panel/frame.png", 0);
gfx.BeginPath();
gfx.ImageRect(
0,

View File

@ -36,9 +36,11 @@ local lang = {
},
Result = {
--leftside
re = "AUTOPLAY Aktiv",
re = "AUTOPLAY Aktiv",
re1 = "AUTOPLAY ist aktiv.",
re2 = "Spielstände werden nicht gespeichert",
re3 = "Manueller Ausgang erkannt",
re4 = "Manueller Ausgang wurde benutzt",
},
}

View File

@ -36,9 +36,11 @@ local lang = {
},
Result = {
--leftside
re = "AUTOPLAY Active",
re = "AUTOPLAY Detected",
re1 = "AUTOPLAY is active.",
re2 = "Scores will not be saved",
re3 = "Manual Exit Detected",
re4 = "Manual Exit was used",
},
}

View File

@ -39,6 +39,8 @@ local lang = {
re = "AUTOPLAY Aktív",
re1 = "AUTOPLAY aktív.",
re2 = "Az eredmények nem lesznek mentve",
re3 = "Manual Exit Detected",
re4 = "Manual Exit was used",
},
}

View File

@ -39,6 +39,8 @@ local lang = {
re = "AUTOPLAY Active",
re1 = "AUTOPLAY is active.",
re2 = "Scores will not be saved",
re3 = "Manual Exit Detected",
re4 = "Manual Exit was used",
},
}

View File

@ -40,6 +40,8 @@ local lang = {
re = "AUTOPLAY Active",
re1 = "AUTOPLAY is active.",
re2 = "Scores will not be saved",
re3 = "Manual Exit Detected",
re4 = "Manual Exit was used",
},
}

View File

@ -13,10 +13,10 @@ local m_own_info = function()
gfx.BeginPath();
gfx.FontSize(40)
gfx.ImageRect(ownPanelX, ownPanelY, 343/1.18, 361/1.18,m_host_panel,1,0)
gfx.Text(normname, ownPanelX+20, ownPanelY+78)
gfx.Text(string.upper(normname), ownPanelX+20, ownPanelY+78)
gfx.FontSize(22)
gfx.Text(msg,ownPanelX+20, ownPanelY+37)
gfx.Text(irText, ownPanelX+20, ownPanelY+288);
gfx.Text(string.upper(msg),ownPanelX+20, ownPanelY+37)
gfx.Text(string.upper(irText), ownPanelX+20, ownPanelY+288);
if showthing == true then

View File

@ -3,12 +3,14 @@
local l_grad = gfx.CreateSkinImage("multi/roomselect/lobby_select_gradiant.png", 1);
local getgrad = function(x,y)
gfx.Save()
local jw,jh = gfx.ImageSize(l_grad);
gfx.BeginPath();
gfx.ImageRect(x/x, y/y+376, jw, jh, l_grad,1,0);
gfx.Restore()
end

View File

@ -6,16 +6,17 @@ local desw,desh = Dim.design.width,Dim.design.height
lobbypanelY = 376;
local l_color = gfx.CreateSkinImage("multi/roomselect/lobby_select_color.png", 1);
local ncolor = gfx.CreateSkinImage("multi/roomselect/main_box.png", 1);
local l_load = gfx.CreateSkinImage("multi/roomselect/lobby_not_loaded.png",1)
local n_play_dot = gfx.CreateSkinImage("multi/roomselect/nautica/nautica_pl_dot.png",1);
local n_play_dot = gfx.CreateSkinImage("multi/roomselect/nautica/nautica_pl_dot.png",1);
local getpanel = function()
if screenState == "roomList" then --multi
local jw,jh = gfx.ImageSize(l_color);
local jw,jh = gfx.ImageSize(ncolor);
gfx.BeginPath();
gfx.ImageRect(desw/desw, lobbypanelY, jw, jh, l_color,1,0);
gfx.ImageRect(desw/desw, lobbypanelY, jw/1.17, jh/1.17, ncolor,1,0);
if not loading then
gfx.BeginPath()
@ -26,10 +27,10 @@ local getpanel = function()
if screenState ~= "roomList" then --nautica
local jw,jh = gfx.ImageSize(l_color);
local jw,jh = gfx.ImageSize(ncolor);
gfx.BeginPath();
gfx.ImageRect(lobbypanelX,lobbypanelY, jw, jh, l_color,1,0);
gfx.ImageRect(lobbypanelX,lobbypanelY, jw/1.17, jh/1.17, ncolor,1,0);
gfx.BeginPath()
local jw,jh = gfx.ImageSize(l_load);
@ -38,25 +39,23 @@ local getpanel = function()
local jw,jh = gfx.ImageSize(n_play_dot);
for i = 1, 3, 1 do
gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT + gfx.TEXT_ALIGN_MIDDLE)
gfx.BeginPath()
gfx.FontSize(26)
gfx.FontSize(30)
if i == 1 then
gfx.SetImageTint(255,9,253)
gfx.ImageRect(desw-50, 680+(desh/2)-(40*i), jw, jh, n_play_dot,1,0);
gfx.Text(string.upper("Not Downloaded"),desw-50, 14+680+desh/2-(40*i))
gfx.FillColor(255,9,253)
gfx.Text(string.upper("Not Downloaded"),desw-30, 14+680+desh/2-(40*i))
elseif i == 2 then
gfx.SetImageTint(240,246,0)
gfx.ImageRect(desw-50, 680+(desh/2)-(40*i), jw, jh, n_play_dot,1,0);
gfx.Text(string.upper("Downloaded"),desw-50, 14+680+desh/2-(40*i))
gfx.FillColor(240,246,0)
gfx.Text(string.upper("Downloaded"),desw-30, 14+680+desh/2-(40*i))
elseif i == 3 then
gfx.SetImageTint(0,246,2)
gfx.ImageRect(desw-50, 680+(desh/2)-(40*i), jw, jh, n_play_dot,1,0);
gfx.Text(string.upper("Preview Playing"),desw-50, 14+680+desh/2-(40*i))
gfx.FillColor(0,246,2)
gfx.Text(string.upper("Preview Playing"),desw-30, 14+680+desh/2-(40*i))
end
gfx.SetImageTint(255,255,255)
gfx.FillColor(255,255,255)
end
end
end

View File

@ -3,15 +3,16 @@ local difbar = require("components.diff_rectangle")
local desw, desh = Dim.design.width,Dim.design.height
local l_panel = gfx.CreateSkinImage("multi/roomselect/room_panel.png",1);
local l_panel = gfx.CreateSkinImage("multi/roomselect/room_panel.png",1); -- when separates are here
local n_panel = gfx.CreateSkinImage("multi/roomselect/main_box.png",1);
local n_cost,l_pw = gfx.CreateSkinImage("multi/roomselect/pw_or_price_panel.png",1);
local n_cost = gfx.CreateSkinImage("multi/roomselect/pw_or_price_panel.png",1);
local n_panel_ja = gfx.CreateSkinImage("multi/roomselect/nautica/nautica_bg_jacket.png",1);
local n_nodif = gfx.CreateSkinImage("multi/roomselect/nautica/no_dif.png",1);
local n_play_dot = gfx.CreateSkinImage("multi/roomselect/nautica/nautica_pl_dot.png",1);
local n_play_dot = gfx.CreateSkinImage("multi/roomselect/nautica/nautica_pl_dot.png",1); -- when separates are here
local info_panel = gfx.CreateSkinImage("multi/roomselect/room_panel_name_or_song.png",1);
local info_panel = gfx.CreateSkinImage("multi/roomselect/room_panel_name_or_song.png",1); -- when separates are here
local xnum = 190
local ynum = 24
@ -27,16 +28,18 @@ local getroom = function(song,x,y,downloaded)
if screenState ~= "roomList" then
local jw,jh = gfx.ImageSize(l_panel); -- if bpm is a think change l_panel to n_panel
gfx.BeginPath();
gfx.ImageRect(x,y, jw, jh, l_panel,1,0);
gfx.ImageRect(x,y, jw/1.17, jh/1.17, l_panel,1,0);
that = 9.5
why = 1
local jw,jh = gfx.ImageSize(n_panel_ja);
gfx.BeginPath();
gfx.ImageRect(x+3,y+5, jw, jh, n_panel_ja,1,0);
gfx.ImageRect(x+that,y+5+why, jw/1.17, jh/1.17, n_panel_ja,1,0);
gfx.BeginPath()
gfx.ImageRect(x+3+8.9,y+5+19, jw/1.19, jh/1.3, song.jacket, 1, 0)
gfx.ImageRect(x+that+8.9,y+5+19, jw/1.4, jh/1.4, song.jacket, 1, 0)
local jw,jh = gfx.ImageSize(n_nodif);
@ -46,8 +49,8 @@ local getroom = function(song,x,y,downloaded)
end
local jw,jh = gfx.ImageSize(info_panel);
gfx.BeginPath();
gfx.ImageRect(x+147,y+5, jw, jh, info_panel,1,0);
gfx.BeginPath();
gfx.ImageRect(x+147,y+5, jw/1.17, jh/1.17, info_panel,1,0);
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP)
gfx.FontSize(30)
@ -57,7 +60,7 @@ local getroom = function(song,x,y,downloaded)
local jw,jh = gfx.ImageSize(n_play_dot);
gfx.BeginPath();
gfx.SetImageTint(255,9,253)
gfx.ImageRect(x+764, y+11, jw, jh, n_play_dot,1,0);
gfx.ImageRect(x,y, jw/1.17, jh/1.17, n_play_dot,1,0);
gfx.SetImageTint(255,255,255)
local jw,jh = gfx.ImageSize(n_nodif);
@ -75,7 +78,7 @@ local getroom = function(song,x,y,downloaded)
local jw,jh = gfx.ImageSize(n_cost);
gfx.BeginPath();
gfx.ImageRect(x+650,y+69, jw, jh, n_cost,1,0);
gfx.ImageRect(x+650,y+69, jw/1.17, jh/1.17, n_cost,1,0);
local buy = "AP 8000"
@ -85,34 +88,35 @@ local getroom = function(song,x,y,downloaded)
gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT + gfx.TEXT_ALIGN_MIDDLE)
if not downloaded[song.id] then
gfx.BeginPath()
gfx.Text(string.upper(buy),x+868,y+94)
gfx.Text(string.upper(buy),x+868,y+90)
elseif downloaded[song.id] == "Downloading" then
gfx.BeginPath()
gfx.Text(string.upper(buy), x+868,y+94)
gfx.Text(string.upper(buy), x+868,y+90)
elseif downloaded[song.id] == "Downloaded" then
gfx.BeginPath()
gfx.Text(string.upper(buy), x+868,y+94)
gfx.Text(string.upper(buy), x+868,y+90)
end
if song.status == "Playing" then
gfx.BeginPath()
gfx.FontSize(24)
gfx.Text(string.upper(song.status), x+878-10, y+25)
end
if downloaded[song.id] == "Downloaded" then
gfx.BeginPath()
gfx.SetImageTint(240,246,0)
gfx.ImageRect(x+764, y+11, jw, jh, n_play_dot,1,0);
gfx.ImageRect(x,y, jw/1.17, jh/1.17, n_play_dot,1,0);
gfx.SetImageTint(255,255,255)
elseif downloaded[song.id] == "Downloading" then
gfx.BeginPath()
gfx.SetImageTint(240,20,0)
gfx.ImageRect(x+764, y+11, jw, jh, n_play_dot,1,0);
gfx.ImageRect(x,y, jw/1.17, jh/1.17, n_play_dot,1,0);
gfx.SetImageTint(255,255,255)
end
if song.status == "Playing" then
gfx.BeginPath();
gfx.SetImageTint(0,246,2)
gfx.ImageRect(x+764, y+11, jw, jh, n_play_dot,1,0);
gfx.ImageRect(x,y, jw/1.17, jh/1.17, n_play_dot,1,0);
gfx.SetImageTint(255,255,255)
end

View File

@ -3,25 +3,20 @@
lobbypanelY = (1080/2.5)-56;
local l_base_panel = gfx.CreateSkinImage("multi/roomselect/lobby_select.png",1);
local n_name = gfx.CreateSkinImage("multi/roomselect/nautica/nautica_station.png",1);
local gettop = function(x,y)
station = "Nautica Station"
local jw,jh = gfx.ImageSize(l_base_panel);
gfx.BeginPath();
gfx.SetImageTint(255,255,255,50)
gfx.ImageRect(x/x, y/y+376, jw, jh, l_base_panel,1,0);
gfx.BeginPath();
gfx.FontSize(40)
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_CENTER)
gfx.LoadSkinFont("Digital-Serial-Bold.ttf");
gfx.FillColor(243,217,175,255)
gfx.Fill()
gfx.Text(string.upper(station),x/2, y/2-546)
gfx.FillColor(255,255,255,50)
gfx.Text(string.upper(station),x/2, y/2-546)
gfx.Fill()
gfx.ImageRect(x/x, y/y+376, jw/1.17, jh/1.17, l_base_panel,1,0);
local jw,jh = gfx.ImageSize(n_name);
gfx.ImageRect(x/2.5, y/2-585, jw,jh,n_name,1,0)
end

View File

@ -137,6 +137,31 @@ local drawIdol = function(deltaTime)
end
end
function getCorrectedIndex(from, offset)
total = #songwheel.songs
if (math.abs(offset) > total) then
if (offset < 0) then
offset = offset + total*math.floor(math.abs(offset)/total)
else
offset = offset - total*math.floor(math.abs(offset)/total)
end
end
index = from + offset
if index < 1 then
index = total + (from+offset) -- this only happens if the offset is negative
end
if index > total then
indexesUntilEnd = total - from
index = offset - indexesUntilEnd -- this only happens if the offset is positive
end
return index
end
user_setup = function () -- (semi new) user layering
local distance = 350
@ -379,6 +404,7 @@ function draw_rooms(y, h)
if #rooms == 0 then
return
end
local num_rooms_visible = math.floor(h / (buttonHeight + 10))
local first_half_rooms = math.floor(num_rooms_visible/2)
@ -425,7 +451,6 @@ function draw_rooms(y, h)
end
stats ={statusST,statusF,statusM,statusPW}
draw_room(room.name, desw/2, ypos,stats, i == selected_room_index, function()
join_room(room)
end)

View File

@ -49,14 +49,13 @@ local rightPanelImage = gfx.CreateSkinImage("result/panels/right.png", 0);
local bottomPanelImage = gfx.CreateSkinImage("result/panels/bottom.png", 0);
local cMOD = gfx.CreateSkinImage("result/panels/cmod.png",0);
local warn = gfx.CreateSkinImage("result/panels/warning.png",0);
local warntxt = gfx.CreateSkinImage("result/warnings/AUTOPLAY.png",0);
local arrow = gfx.CreateSkinImage("result/arrow.png",0);
local defaultJacketImage = gfx.CreateSkinImage("result/default_jacket.png", 0);
local bestScoreBadgeImage = gfx.CreateSkinImage("result/best.png", 0);
local appealCardImage = gfx.CreateSkinImage("crew/appeal_card.png", 0);
local danBadgeImage = gfx.CreateSkinImage("dan/inf.png", 0);
local badgeLines = gfx.CreateSkinImage("result/badge_lines.png", 0);
local badgeGrade = gfx.CreateSkinImage("result/badge_gradient.png", 0);
@ -64,6 +63,23 @@ local timming = gfx.CreateSkinImage("result/timing.png", 0);
local irpanelsB = gfx.CreateSkinImage("result/panels/new_score_blue.png",0);
local irpanelsO = gfx.CreateSkinImage("result/panels/new_score_orange.png",0)
local hight
local irGB = {
string.upper("New Global ");
string.upper("New Local ");
string.upper(" Score!");
string.upper("New Score!");
string.upper("Update!")
}
local fixed = false
if fixed then
fixed = ""
else
fixed = " "
end
local gaugeTypeMirrorImage = gfx.CreateSkinImage("result/gauge_type_badges/mirror.png", 0);
local gaugeTypeRandomImage = gfx.CreateSkinImage("result/gauge_type_badges/random.png", 0);
@ -169,6 +185,10 @@ local clearBadgeImages = {
image = gfx.CreateSkinImage("result/clears/AUTOPLAY.png", 0),
xPos = 1100
},
{
image = gfx.CreateSkinImage("result/clears/SAVED.png", 0),
xPos = 970
},
}
local transitionEnterScale = 0;
@ -332,8 +352,9 @@ end
local drawmod = function ()
if result.speedModType == 2 then
local jw, jh = gfx.ImageSize(cMOD);
gfx.BeginPath();
gfx.ImageRect(rightPanelX + 1080 - 250, rightPanelY-35, 254, 35, cMOD, 1, 0);
gfx.ImageRect(desw - jw, rightPanelY-35, jw, jh, cMOD, 1, 0);
end
end
@ -344,9 +365,19 @@ local drawarn = function ()
gfx.BeginPath();
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE);
gfx.FontSize(20)
gfx.Text(lang.Result.re,bottomPanelX + AutoPosiX + 30, bottomPanelY+534);
gfx.Text(lang.Result.re1,bottomPanelX + AutoPosiX, bottomPanelY+564);
gfx.Text(lang.Result.re2,bottomPanelX + AutoPosiX, bottomPanelY+584);
gfx.Text(string.upper(lang.Result.re),bottomPanelX + AutoPosiX + 30, bottomPanelY+534);
gfx.Text(string.upper(lang.Result.re1),bottomPanelX + AutoPosiX, bottomPanelY+564);
gfx.Text(string.upper(lang.Result.re2),bottomPanelX + AutoPosiX, bottomPanelY+584);
end
if not result.autoplay and result.badge == 0 then
gfx.BeginPath();
gfx.ImageRect(bottomPanelX+30 , bottomPanelY+495, 541*0.85, 136*0.85, warn, 1, 0);
gfx.BeginPath();
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE);
gfx.FontSize(20)
gfx.Text(string.upper(lang.Result.re3),bottomPanelX + AutoPosiX + 30, bottomPanelY+534);
gfx.Text(string.upper(lang.Result.re4),bottomPanelX + AutoPosiX, bottomPanelY+564);
gfx.Text(string.upper(lang.Result.re2),bottomPanelX + AutoPosiX, bottomPanelY+584);
end
end
@ -366,6 +397,119 @@ local drawRightPanel = function()
gfx.ImageRect(rightPanelX, rightPanelY, tw, th, rightPanelImage, 1, 0);
end
local onlinebar = function(h,text)
local highScoreScore = 0;
if highScore then highScoreScore = highScore.score end
local jw,jh = gfx.ImageSize(irpanelsO)
gfx.BeginPath();
gfx.ImageRect((desw-jw/1.17),h,jw/1.17,jh/1.17,irpanelsO,1,0)
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE)
-- making the text
gfx.FillColor(0,0,0)
gfx.Text(text[1]..text[3],(desw-jw/1.17)+110,h+15)
gfx.FillColor(255,255,255)
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
-- makeing the score check
gfx.FontSize(26)
if result.highScores[1] ~= nil then
gfx.Text(string.format("%08d",result.score),(desw-jw/1.17)+45,h+50)
gfx.Text(string.format("%08d", highScoreScore),desw-370+50,h+50)
if string.format("%08d",result.score) >= string.format("%08d", highScoreScore) then
gfx.Text(text[5],desw-240+50,h+50)
end
local tw,th = gfx.ImageSize(arrow)
gfx.BeginPath();
gfx.ImageRect(desw-360,h+38,tw*0.3,th*0.3,arrow,1,0)
else
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
gfx.Text(string.upper(username)..fixed.."'S",(desw-jw)+130,h+50)
gfx.Text(string.format("%08d", result.score),desw-330+47,h+50)
if string.format("%08d",result.score) >= string.format("%08d", highScoreScore) then
gfx.Text(text[4],desw-200+50,h+50)
end
end
end
local offlinebar = function(h,text)
local highScoreScore = 0;
if highScore then highScoreScore = highScore.score end
local jw,jh = gfx.ImageSize(irpanelsB)
gfx.BeginPath();
gfx.ImageRect((desw-jw/1.17),h+5+(jh/1.17),jw/1.17,jh/1.17,irpanelsB,1,0)
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE)
-- making the text
gfx.FillColor(0,0,0)
gfx.Text(text[2]..text[3],(desw-jw/1.17)+110,h+90)
gfx.FillColor(255,255,255)
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
gfx.FontSize(26)
-- the score check
if result.highScores[1] ~= nil then
gfx.Text(string.format("%08d",result.score),(desw-jw/1.17)+45,h+123)
gfx.Text(string.format("%08d", highScoreScore),desw-370+50,h+123)
if string.format("%08d",result.score) >= string.format("%08d", highScoreScore) then
gfx.Text(text[5],desw-240+50,h+123)
end
local tw,th = gfx.ImageSize(arrow)
gfx.BeginPath();
gfx.ImageRect(desw-360,h+112,tw*0.3,th*0.3,arrow,1,0)
else
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
gfx.Text(string.upper(username)..fixed.."'S",(desw-jw)+130,h+123)
gfx.Text(string.format("%08d", highScoreScore),desw-330+47,h+123)
if string.format("%08d",result.score) >= string.format("%08d", highScoreScore) then
gfx.Text(text[4],desw-200+50,h+123)
end
end
end
local drawRightLeaderCheck = function ()
local jw,jh = gfx.ImageSize(irpanelsB)
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER+ gfx.TEXT_ALIGN_MIDDLE)
if result.speedModType == 2 then
hight = rightPanelY-40-12-((jh/1.17)*2)
else
hight = rightPanelY-12-((jh/1.17)*2)
end
if not result.autoplay and result.badge ~= 0 then
if IRData.Active then
gfx.FontSize(21.5)
onlinebar(hight,irGB)
gfx.FontSize(21.5)
offlinebar(hight,irGB)
else
gfx.FontSize(21.5)
offlinebar(hight,irGB)
end
end
end
local scoreNumber = Numbers.load_number_image("score_num");
local drawRightPanelContent = function()
@ -375,9 +519,11 @@ local drawRightPanelContent = function()
local highScoreDelta = result.score - highScoreScore
-- Draw clear badge
local badgeData = clearBadgeImages[result.badge + 1] or clearBadgeImages[1]
badgeData = clearBadgeImages[result.badge + 1] or clearBadgeImages[1]
if (result.autoplay) then
badgeData = clearBadgeImages[7]; -- Display AUTOPLAY badge
elseif result.uid ~= nil or (badgeData[1] or result.badge == 0) then
badgeData = clearBadgeImages[8]; -- Display SAVED badge
end
local tw, th = gfx.ImageSize(badgeData.image);
@ -399,7 +545,7 @@ local drawRightPanelContent = function()
scoreNumber, true, 0.25, 1.12)
-- If this is the highscore, draw over the glowing best badge
if highScoreDelta > 0 then
if highScoreDelta > 0 and not result.autoplay or result.badge ~= 0 then
gfx.BeginPath();
gfx.ImageRect(rightPanelX + 364, rightPanelY + 167, 97, 53,
bestScoreBadgeImage, 1, 0);
@ -631,7 +777,7 @@ local drawBottomPanelContent = function(deltatime)
gfx.FontSize(22)
gfx.LoadSkinFont('Digital-Serial-Bold.ttf')
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
gfx.Text(msg, bottomPanelX + 190, bottomPanelY + 282);
gfx.Text(string.upper(msg), bottomPanelX + 190, bottomPanelY + 282);
-- Draw username
gfx.FontSize(28)
@ -669,8 +815,9 @@ local drawBottomPanelContent = function(deltatime)
end
local drawmultipanelcontent = function(deltaTime)
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_BASELINE)
if result.uid == nil then
gfx.Text(" ",100,100)
return
else
local i = result.displayIndex
@ -700,7 +847,6 @@ local drawmultipanelcontent = function(deltaTime)
gfx.BeginPath()
gfx.ImageRect(multx, multy,posDWWidth/half,posDWHeight/half,UsBottom,1,0)
gfx.BeginPath()
gfx.ImageRect(multx, multy,posUPWidth/half,posUPHeight/half,UsTop,1,0)
@ -708,7 +854,7 @@ local drawmultipanelcontent = function(deltaTime)
gfx.ImageRect(multx+332.5, multy+240, 79/half/1.5, 69/half/1.5, badgeImage, 1, 0)
gfx.BeginPath()
gfx.ImageRect(multx+332.5, multy+20,posWidth,posHeight,pos[i+1],1,0)
gfx.ImageRect(multx+272, multy+80,posWidth/1.18,posHeight,pos[i+1],1,0)
gfx.Text(string.upper(result.playerName),multx+75,multy+247)
@ -717,6 +863,7 @@ local drawmultipanelcontent = function(deltaTime)
gfx.Text(string.format("%04d", math.floor(result.score/10000)), multx+221, multy+294)
local lastFourDigits = ((result.score / 10000) - math.floor(result.score / 10000))*10000
gfx.Text(string.format("%04d", math.floor(lastFourDigits)), multx+273, multy+294)
--[[
local gaugeFillImage = gaugeEffPassFillImage;
local gaugeBreakpoint = 0;
@ -754,7 +901,7 @@ local drawmultipanelcontent = function(deltaTime)
gfx.BeginPath()
gfx.GlobalAlpha(0.75);
local lineY = gaugePosY + (FillH - (FillH * (gaugeBreakpoint)))
local lineY = gaugePosY + (FillW - (FillW * (gaugeBreakpoint)))
gfx.MoveTo(gaugePosX, lineY)
gfx.LineTo(gaugePosX + 10, lineY)
@ -767,6 +914,7 @@ local drawmultipanelcontent = function(deltaTime)
gfx.Restore()
end
]]
end
end
@ -961,11 +1109,12 @@ drawResultScreen = function (x, y, w, h, deltaTime)
gfx.GlobalAlpha(Easing.outQuad(transitionEnterScale))
drawmultipanelcontent(deltaTime)
drawBottomPanel()
drawBottomPanelContent(deltaTime)
drawmultipanelcontent(deltaTime)
drawRightLeaderCheck()
drawRightPanel()
drawRightBarAni(deltaTime)

View File

@ -6,6 +6,7 @@ local Wallpaper = require("components.wallpaper")
local common = require("common.util")
local Sound = require("common.sound")
local Numbers = require("components.numbers")
local util = require("common.util")
local username = game.GetSkinSetting("username")
local VolforceCalc = require("components.volforceCalc")
@ -1021,7 +1022,7 @@ function tickTransitions(deltaTime)
-- Is a variable BPM
if (type(songBpm) == "string") then
local s = commmon.split(songBpm, '-')
s = util.split(songBpm, '-')
songBpm = tonumber(s[1]) -- Lowest bpm value
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

BIN
textures/dan/inf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 KiB

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 870 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 703 B

After

Width:  |  Height:  |  Size: 1021 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 533 B

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
textures/result/arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB