diff --git a/config-definitions.json b/config-definitions.json index 2641223..28af1f3 100644 --- a/config-definitions.json +++ b/config-definitions.json @@ -42,6 +42,11 @@ "type": "bool", "default": false }, + "static_idol": { + "label": "If Single Image is in ,Stactic Folder, toggle this", + "type": "bool", + "default": false + }, "words": { "type": "selection", diff --git a/scripts/downloadscreen.lua b/scripts/downloadscreen.lua index f9d687c..6b409fb 100644 --- a/scripts/downloadscreen.lua +++ b/scripts/downloadscreen.lua @@ -2,11 +2,17 @@ json = require "common.json" local header = {} header["user-agent"] = "unnamed_sdvx_clone" +local Dim = require("common.dimensions") +local Wallpaper = require("components.wallpaper") +local Background = require('components.background'); + + + local jacketFallback = gfx.CreateSkinImage("song_select/loading.png", 0) local diffColors = {{50,50,127}, {50,127,50}, {127,50,50}, {127, 50, 127}} local entryW = 770 local entryH = 320 -local resX,resY = game.GetResolution() +local resX,resY = Dim.design.width,Dim.design.height local xCount = math.max(1, math.floor(resX / entryW)) local yCount = math.max(1, math.floor(resY / entryH)) local xOffset = (resX - xCount * entryW) / 2 @@ -33,6 +39,8 @@ local sortingcursor = 0 local sortingOptions = {"Uploaded", "Oldest"} local needsReload = false +local yOffset = 0 + function addsong(song) if song.jacket_url ~= nil then song.jacket = gfx.LoadWebImageJob(song.jacket_url, jacketFallback, 250, 250) @@ -44,8 +52,7 @@ function addsong(song) end table.insert(songs, song) end -local yOffset = 0 -local backgroundImage = gfx.CreateSkinImage("bg.png", 1); + dlcache = io.open(cachepath, "r") if dlcache then @@ -68,8 +75,6 @@ function encodeURI(str) return str end - - function gotSongsCallback(response) if response.status ~= 200 then error() @@ -87,6 +92,7 @@ Http.GetAsync(nextUrl, header, gotSongsCallback) function render_song(song, x,y) + --[[ gfx.Save() gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) gfx.Translate(x,y) @@ -143,6 +149,7 @@ function render_song(song, x,y) end gfx.ResetScissor() gfx.Restore() + ]] end function load_more() @@ -186,41 +193,38 @@ function render_hotkeys() gfx.ResetTransform() gfx.BeginPath() gfx.FillColor(0,0,0,240) - gfx.Rect(0,resY - 50, resX, 50) + gfx.Rect(0,resX - 50, resY, 50) gfx.Fill() gfx.FontSize(30) gfx.FillColor(255,255,255) gfx.TextAlign(gfx.TEXT_ALIGN_LEFT, gfx.TEXT_ALIGN_BOTTOM) - gfx.Text("FXR: Sorting", resX/2 + 20, resY - 10) + gfx.Text("FXR: Sorting", resY/2, resX - 10) gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT, gfx.TEXT_ALIGN_BOTTOM) - gfx.Text("FXL: Levels", resX/2 - 20, resY - 10) + gfx.Text("FXL: Levels", resY/2 -20, resX - 10) gfx.Restore() end function render_info() gfx.Save() gfx.ResetTransform() - gfx.BeginPath() - gfx.MoveTo(0, resY) - gfx.LineTo(350, resY) - gfx.LineTo(300, resY - 50) - gfx.LineTo(0, resY - 50) - gfx.ClosePath() - gfx.FillColor(33,33,33) - gfx.Fill() - gfx.FillColor(255,255,255) + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT, gfx.TEXT_ALIGN_BOTTOM) gfx.FontSize(70) - gfx.Text("Nautica", 3, resY - 3) - local xmin,ymin,xmax,ymax = gfx.TextBounds(3, resY - 3, "Nautica") + gfx.Text("Nautica", resX-2, resX-20) gfx.FontSize(20) - gfx.Text("https://ksm.dev/", xmax + 13, resY - 3) + gfx.Text("https://ksm.dev/", resX-13, resX-3) gfx.Restore() end function render(deltaTime) - gfx.BeginPath() - gfx.ImageRect(0, 0, resX, resY, backgroundImage, 1, 0); + + Dim.updateResolution() + Wallpaper.render() + + Dim.transformToScreenSpace() + + Background.draw(deltaTime) + gfx.LoadSkinFont("NotoSans-Regular.ttf"); displayCursorPosX = displayCursorPosX - (displayCursorPosX - cursorPosX) * deltaTime * 10 displayCursorPosY = displayCursorPosY - (displayCursorPosY - cursorPosY) * deltaTime * 10 @@ -380,7 +384,7 @@ function render_level_filters() gfx.Save() gfx.ResetTransform() gfx.BeginPath() - gfx.Rect(0,0, resX, resY) + gfx.Rect(0,0, resX+215, resY) gfx.FillColor(0,0,0,200) gfx.Fill() gfx.FillColor(255,255,255) @@ -388,16 +392,16 @@ function render_level_filters() gfx.FontSize(60) gfx.Text("Level filters:", 10, 10) gfx.BeginPath() - gfx.Rect(resX/2 - 30, resY/2 - 22, 60, 44) + gfx.Rect(resX, resY, 60, 44) gfx.StrokeColor(255,128,0) gfx.StrokeWidth(2) gfx.Stroke() gfx.FontSize(40) gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE) for i = 1, 20 do - y = (resY/2) + (i - (levelcursor + 1)) * 40 + y = (resX/2) + (i - (levelcursor + 1)) * 40 if selectedLevels[i] then gfx.FillColor(255,255,255) else gfx.FillColor(127,127,127) end - gfx.Text(tostring(i), resX/2, y) + gfx.Text(tostring(i), resX-115, y) end gfx.Restore() end @@ -406,7 +410,7 @@ function render_sorting_selection() gfx.Save() gfx.ResetTransform() gfx.BeginPath() - gfx.Rect(0,0, resX, resY) + gfx.Rect(0,0, resX+215, resY) gfx.FillColor(0,0,0,200) gfx.Fill() gfx.FillColor(255,255,255) @@ -414,16 +418,16 @@ function render_sorting_selection() gfx.FontSize(60) gfx.Text("Sorting method:", 10, 10) gfx.BeginPath() - gfx.Rect(resX/2 - 75, resY/2 - 22, 150, 44) + gfx.Rect(resX, resY, 150, 44) gfx.StrokeColor(255,128,0) gfx.StrokeWidth(2) gfx.Stroke() gfx.FontSize(40) gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE) for i, opt in ipairs(sortingOptions) do - y = (resY/2) + (i - (sortingcursor + 1)) * 40 + y = (resX/2) + (i - (sortingcursor + 1)) * 40 if selectedSorting == opt then gfx.FillColor(255,255,255) else gfx.FillColor(127,127,127) end - gfx.Text(opt, resX/2, y) + gfx.Text(opt, resX-115, y) end gfx.Restore() end \ No newline at end of file diff --git a/scripts/gameplay/banner.lua b/scripts/gameplay/banner.lua index 400f8f3..a2d478f 100644 --- a/scripts/gameplay/banner.lua +++ b/scripts/gameplay/banner.lua @@ -1,5 +1,25 @@ local bannerBaseImage = gfx.CreateSkinImage("gameplay/banner/base.png", 0) +local UsBottom = gfx.CreateSkinImage("result/multi_4p/base.png",0) +local UsTop = gfx.CreateSkinImage("result/multi_4p/top.png",0) + +local pos = { + gfx.CreateSkinImage("result/multi_4p/pos/1.png", 0), + + gfx.CreateSkinImage("result/multi_4p/pos/2.png", 0), + + gfx.CreateSkinImage("result/multi_4p/pos/3.png", 0), + + gfx.CreateSkinImage("result/multi_4p/pos/4.png", 0), + + gfx.CreateSkinImage("result/multi_4p/pos/5.png", 0), + + gfx.CreateSkinImage("result/multi_4p/pos/6.png", 0), + + gfx.CreateSkinImage("result/multi_4p/pos/7.png", 0), + + gfx.CreateSkinImage("result/multi_4p/pos/8.png", 0), +} local desw = 1080 local desh = 1920 @@ -15,13 +35,9 @@ local drawScoreboard = function (users, currentUserId) gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) gfx.FontSize(32) - local x = 16; - local basey = 510; - gfx.LoadSkinFont("Digital-Serial-Bold.ttf") for i, u in ipairs(users) do - local y = basey + i*28; if (u.id == currentUserId) then gfx.FillColor(128,192,255); @@ -29,17 +45,52 @@ local drawScoreboard = function (users, currentUserId) gfx.FillColor(255,255,255); end + isLandscape = desw < desh; - gfx.FontSize(26) - gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) - gfx.Text(string.format("%04d", math.floor(u.score/10000)), x, y) + local posUPWidth, posUPHeight = gfx.ImageSize(UsBottom) + numberx = posUPWidth; + if not isLandscape then + + local posUPWidth, posUPHeight = gfx.ImageSize(UsBottom) + local y = 16; - local lastFourDigits = ((u.score / 10000) - math.floor(u.score / 10000))*10000 - gfx.FontSize(22) - gfx.Text(string.format("%04d", math.floor(lastFourDigits)), x+58, y+1) + + gfx.BeginPath() + gfx.ImageRect(numberx, y,posUPWidth/1.75,posUPHeight/1.75,UsBottom,1,0) - gfx.FontSize(26) - gfx.Text('#' .. i .. ' ' .. u.name, x+120, y) + local posDWWidth, posDWHeight = gfx.ImageSize(UsTop) + gfx.BeginPath() + gfx.ImageRect(numberx, y,posDWWidth/1.75,posDWHeight/1.75,UsTop,1,0) + + local posWidth, posHeight = gfx.ImageSize(pos[i]) + gfx.BeginPath() + gfx.ImageRect(numberx+110, y+16,posWidth/2,posHeight/2,pos[i],1,0) + + gfx.BeginPath() + gfx.FontSize(26) + gfx.Text(u.name, numberx, y) + elseif isLandscape then + + local x = 16; + local basey = 510; + local y = basey + i*28; + + gfx.FontSize(26) + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) + gfx.Text(string.format("%04d", math.floor(u.score/10000)), x, y) + + local lastFourDigits = ((u.score / 10000) - math.floor(u.score / 10000))*10000 + gfx.FontSize(22) + gfx.Text(string.format("%04d", math.floor(lastFourDigits)), x+58, y+1) + + gfx.FontSize(26) + gfx.Text(u.name, x+155, y) + gfx.BeginPath() + local posWidth, posHeight = gfx.ImageSize(pos[i]) + gfx.BeginPath() + gfx.ImageRect(x+100, y-20,posWidth/2.5,posHeight/2.5,pos[i],1,0) + end + numberx = numberx+numberx end end @@ -71,6 +122,8 @@ local render = function (deltaTime, users, currentUserId) 0 ); + drawScoreboard(users, currentUserId); -- TODO: for now + gfx.ResetTransform() end diff --git a/scripts/gameplay/song_panel.lua b/scripts/gameplay/song_panel.lua index fb7c63e..53a8685 100644 --- a/scripts/gameplay/song_panel.lua +++ b/scripts/gameplay/song_panel.lua @@ -11,6 +11,7 @@ local bgLeftImage = gfx.CreateSkinImage("gameplay/song_panel/bg_left.png", 0); local bgRightImage = gfx.CreateSkinImage("gameplay/song_panel/bg_right.png", 0); local notify = gfx.CreateSkinImage("gameplay/song_panel/notice.png", 0) +local demopanel = gfx.CreateSkinImage("multi/lobby/multi_jacket.png",0) local progressDotImage = gfx.CreateSkinImage("gameplay/song_panel/dot.png", 0); local jacketFallbackImage = gfx.CreateSkinImage("song_select/loading.png", 0); @@ -40,6 +41,48 @@ local tickTransitions = function (deltaTime) end +local demoMode = function (songTitle,songArtist) + --[[ + gfx.BeginPath(); + local tw, th = gfx.ImageSize(demopanel); + th = (Dim.design.width / tw) * th; + gfx.BeginPath(); + gfx.ImageRect(0, 0, Dim.design.width, Dim.design.height,temp, 1, 0); + gfx.BeginPath(); + gfx.FillColor(50,80,120,100) + gfx.Rect((Dim.design.width/4)-29, th+62, Dim.design.width/1.75, th/1.75); + gfx.Fill() + gfx.BeginPath(); + gfx.FillColor(50,120,80,100) + gfx.Rect((Dim.design.width/4)+15, th+129, Dim.design.width/2.12, th/2.25); + gfx.Fill() + gfx.BeginPath(); + gfx.Text(actualLaneSpeed,Dim.design.width/4, th+100) + ]] + + gfx.BeginPath(); + local tw, th = gfx.ImageSize(demopanel); + th = (desw / tw) * th; + gfx.BeginPath(); + gfx.FillColor(50,80,120,100) + gfx.Rect((desw/4)-29, th+62, desw/1.75, th/1.64); +-- gfx.ImageRect((desw/4)-29,th+62,desw/1.75,th/1.64,demopanel,1,0) + gfx.Fill() + gfx.BeginPath(); + gfx.FontSize(38) + gfx.LoadSkinFont('Digital-Serial-Bold.ttf') + renderOutlinedText(desw/4+12,th+90, "DEMO MODE", 2); + gfx.BeginPath(); +-- gfx.FillColor(50,120,80,100) +-- gfx.Rect((desw/4)+15, th+129, desw/2.12, th/2.25); + gfx.ImageRect((desw/4)+15,th+129,desw/2.12,th/2.25,jacketImage,1,0) +-- gfx.Fill() + 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); +end + local render = function (deltaTime, bpm, laneSpeed, jacketPath, diff, level, progress, songTitle, songArtist) gfx.Save(); @@ -99,36 +142,6 @@ local render = function (deltaTime, bpm, laneSpeed, jacketPath, diff, level, pro 0 ); - if gameplay.autoplay and gameplay.demoMode == false and gameplay.practice_setup == false then - - gfx.BeginPath(); - gfx.ImageRect(0,y+310,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); - - elseif gameplay.demoMode == true and gameplay.practice_setup == false then - - gfx.BeginPath(); - gfx.ImageRect(0,y+310,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); - - elseif gameplay.scoreReplays and gameplay.demoMode == false and gameplay.practice_setup == false then - - gfx.BeginPath(); - gfx.ImageRect(0,y+310,245,67,notify,1,0); - gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) - renderOutlinedText(30,y+354.5, "REPLAY MODE IS ENABLED", 1.5); - - elseif gameplay.practice_setup == true then - - gfx.BeginPath(); - gfx.ImageRect(0,y+310,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); - - end - -- Draw diff rectangle local adjustedDiff = Charting.GetDisplayDifficulty(gameplay.jacketPath, diff) DiffRectangle.render(deltaTime, 31, y+140, 0.84, adjustedDiff, level); @@ -144,6 +157,44 @@ local render = function (deltaTime, bpm, laneSpeed, jacketPath, diff, level, pro renderOutlinedText(260,y+247, string.format("%.0f", bpm), 2); renderOutlinedText(260,y+281, string.format("%.2f", actualLaneSpeed), 2); + gfx.FontSize(18); + 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.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) + renderOutlinedText(30,y+354.5, "AUTOPLAY IS ENABLED", 1.5); + + 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.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) + renderOutlinedText(30,y+354.5, "DEMO MODE IS ENABLED", 1.5); + else + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) + demoMode(songTitle,songArtist) + end + + elseif gameplay.scoreReplays and not 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.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) + renderOutlinedText(30,y+354.5, "REPLAY MODE IS ENABLED", 1.5); + + elseif gameplay.practice_setup then + + gfx.BeginPath(); + gfx.ImageRect(0,y+310,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); + + end + + gfx.FontSize(30); -- Draw progress gfx.BeginPath() gfx.FillColor(244, 204, 101) diff --git a/scripts/multi/basepanel.lua b/scripts/multi/inRoom/basepanel.lua similarity index 100% rename from scripts/multi/basepanel.lua rename to scripts/multi/inRoom/basepanel.lua diff --git a/scripts/multi/bpmpanel.lua b/scripts/multi/inRoom/bpmpanel.lua similarity index 100% rename from scripts/multi/bpmpanel.lua rename to scripts/multi/inRoom/bpmpanel.lua diff --git a/scripts/multi/infopanel.lua b/scripts/multi/inRoom/infopanel.lua similarity index 100% rename from scripts/multi/infopanel.lua rename to scripts/multi/inRoom/infopanel.lua diff --git a/scripts/multi/mainpanel.lua b/scripts/multi/inRoom/mainpanel.lua similarity index 100% rename from scripts/multi/mainpanel.lua rename to scripts/multi/inRoom/mainpanel.lua diff --git a/scripts/multi/owninfo.lua b/scripts/multi/inRoom/owninfo.lua similarity index 100% rename from scripts/multi/owninfo.lua rename to scripts/multi/inRoom/owninfo.lua diff --git a/scripts/multi/songinfo.lua b/scripts/multi/inRoom/songinfo.lua similarity index 97% rename from scripts/multi/songinfo.lua rename to scripts/multi/inRoom/songinfo.lua index 5c90803..21f013e 100644 --- a/scripts/multi/songinfo.lua +++ b/scripts/multi/inRoom/songinfo.lua @@ -89,7 +89,6 @@ local m_s_part = function () gfx.Text(selected_song.effector, rightPanelX+463, rightPanelY+191) gfx.Text(selected_song.illustrator, rightPanelX+463, rightPanelY+219) draw_diffs(selected_song.all_difficulties, 395, 205, 300, 100, selected_song.diff_index+1) - gfx.Text("Dif pos: "..selected_song.diff_index,rightPanelX, rightPanelY) end end diff --git a/scripts/multi/songjacket.lua b/scripts/multi/inRoom/songjacket.lua similarity index 100% rename from scripts/multi/songjacket.lua rename to scripts/multi/inRoom/songjacket.lua diff --git a/scripts/multi/roomList/getpanel.lua b/scripts/multi/roomList/getpanel.lua new file mode 100644 index 0000000..cbd4b0c --- /dev/null +++ b/scripts/multi/roomList/getpanel.lua @@ -0,0 +1,41 @@ +local Dim = require("common.dimensions") + +local DigiSerBold = "Digital-Serial-Bold.ttf"; + +local desw,desh = Dim.design.width,Dim.design.height + +local lobbypanelX = 0; +local lobbypanelY = (1080/2.5)-56; + +local l_base_panel = gfx.CreateSkinImage("multi/roomselect/lobby_select.png",1); +local l_color = gfx.CreateSkinImage("multi/roomselect/lobby_select_color.png", 1); +local l_grad = gfx.CreateSkinImage("multi/roomselect/lobby_select_gradiant.png", 1); +local l_name = gfx.CreateSkinImage("multi/roomselect/multi_station.png",1); +local l_load = gfx.CreateSkinImage("multi/roomselect/lobby_not_loaded.png",1) + +local getpanel = function() + + local jw,jh = gfx.ImageSize(l_base_panel); + gfx.BeginPath(); + gfx.ImageRect(lobbypanelX, lobbypanelY, jw, jh, l_base_panel,1,0); + gfx.BeginPath(); + gfx.ImageRect(lobbypanelX, lobbypanelY, jw, jh, l_color,1,0); + + -- do the lobby oder here + draw_rooms(desw/2, desh - 290); + + gfx.BeginPath(); + gfx.ImageRect(lobbypanelX, lobbypanelY, jw, jh, l_grad,1,0); + + local nw,nh = gfx.ImageSize(l_name); + gfx.BeginPath(); + gfx.ImageRect(lobbypanelX+445, lobbypanelY+9, nw, nh, l_name,1,0); + + gfx.BeginPath(); + if not loading then + custom_button("Create new room",40+(desw/2), 530+(desh/2),l_load,DigiSerBold,70,new_room) + end +end + + +return getpanel \ No newline at end of file diff --git a/scripts/multiplayerscreen.lua b/scripts/multiplayerscreen.lua index 689c51a..36f5973 100644 --- a/scripts/multiplayerscreen.lua +++ b/scripts/multiplayerscreen.lua @@ -5,19 +5,21 @@ local Sound = require("common.sound") local Dim = require("common.dimensions") local Wallpaper = require("components.wallpaper") local Background = require('components.background'); -local difbar = require("components.diff_rectangle"); --no clue but starting to separating breaks it +local difbar = require("components.diff_rectangle"); local creww = game.GetSkinSetting("single_idol") -local songjacket = require("multi.songjacket") -local m_own_info = require("multi.owninfo") -local m_base_part = require("multi.basepanel") -local m_part = require("multi.mainpanel") -local m_s_part = require("multi.songinfo") -local m_bpm_part = require("multi.bpmpanel") -local m_info_part = require("multi.infopanel") +-- inRoom components +local songjacket = require("multi.inRoom.songjacket") +local m_own_info = require("multi.inRoom.owninfo") +local m_base_part = require("multi.inRoom.basepanel") +local m_part = require("multi.inRoom.mainpanel") +local m_s_part = require("multi.inRoom.songinfo") +local m_bpm_part = require("multi.inRoom.bpmpanel") +local m_info_part = require("multi.inRoom.infopanel") -local temppanels = gfx.CreateSkinImage("song_select/textboard.png", 1); --temp +-- roomList components +local getpanel = require("multi.roomList.getpanel") local headerMatchingImage = gfx.CreateSkinImage("titlescreen/entry.png", 1); @@ -35,10 +37,12 @@ local idolAnimTransitionScale = 0; local leftPanelX = 575; local leftPanelY = 1472; +local desw,desh = Dim.design.width,Dim.design.height + local mposx = 0; local mposy = 0; local hovered = nil; -local buttonWidth = Dim.design.width*(3/4); +local buttonWidth = desw*(3/4); local buttonHeight = 75; local buttonBorder = 2; local portrait @@ -47,7 +51,7 @@ local jacket_size; local BAR_ALPHA = 191; local HEADER_HEIGHT = 100 -local desh = game.GetResolution() + local scale; game.LoadSkinSample("click-02") @@ -124,13 +128,14 @@ local drawIdol = function(deltaTime) idolAnimTransitionScale = 1; end - gfx.ImageRect(0, 0, Dim.design.width,desh, idolAnimation, 1, 0); + gfx.ImageRect(0, 0, Dim.design.width,Dim.design.height, idolAnimation, 1, 0); gfx.GlobalAlpha(1); end end user_setup = function () -- (semi new) user layering local distance = 350 + for i, user in ipairs(lobby_users) do buttonY = 1142-360/1.2 @@ -156,7 +161,7 @@ user_setup = function () -- (semi new) user layering draw_user(user, 16+distance+distance, 1142-360/1.2, 42030//1.2, 31.2,215,245.5) elseif i > 4 then - draw_user(user, 16+distance+distance+distance+distance, 1142-360/1.2, 420/1.2, 330/1.2, i,215,245.5) + draw_user(user, 16+distance+distance+distance+distance, 1142-360/1.2, 420/1.2, 330/1.2, 31.2,215,245.5) end end end @@ -164,11 +169,11 @@ end function drawHeader() gfx.BeginPath() gfx.FillColor(0, 0, 0, BAR_ALPHA) - gfx.Rect(0, 0, Dim.design.width, HEADER_HEIGHT) + gfx.Rect(0, 0, desw, HEADER_HEIGHT) gfx.Fill() gfx.ClosePath() - gfx.ImageRect(Dim.design.width / 2 - 200, HEADER_HEIGHT / 2 - 20, 400, 40, headerMatchingImage, 1, 0) + gfx.ImageRect(desw / 2 - 200, HEADER_HEIGHT / 2 - 20, 400, 40, headerMatchingImage, 1, 0) end mouse_clipped = function(x,y,w,h) @@ -177,7 +182,7 @@ end; -- look into this when people are online draw_room = function(name, x, y, selected, hoverindex) - local buttonWidth = Dim.design.width/2; + local buttonWidth = desw*(3/4); local rx = x - (buttonWidth / 2); local ty = y - (buttonHeight / 2); local roomButtonBorder = buttonBorder; @@ -187,7 +192,7 @@ draw_room = function(name, x, y, selected, hoverindex) gfx.FillColor(0,255,0); roomButtonBorder = 4; end - if mouse_clipped(rx,ty-75, buttonWidth, buttonHeight/2) then + if mouse_clipped(rx,ty, buttonWidth, buttonHeight) then hovered = hoverindex; gfx.FillColor(255,128,0); end @@ -207,18 +212,40 @@ draw_room = function(name, x, y, selected, hoverindex) gfx.Text(name, x, y); end; -draw_button = function(name, x, y, buttonWidth, hoverindex) - draw_button_color(name, x, y, buttonWidth, hoverindex, temppanels) +custom_button = function (name,x,y,image,font,fSize,hoverindex) + local jw,jh = gfx.ImageSize(image); + gfx.BeginPath(); + gfx.ImageRect(x, y, jw, jh, image,1,0); + gfx.BeginPath(); + gfx.FillColor(255,255,255); + gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE); + gfx.LoadSkinFont(font) + gfx.FontSize(fSize); + gfx.Text(name, x+(jw/2)+5, y+(jh/2.25)); end -draw_button_color = function(name, x, y, buttonWidth, hoverindex,img) - local rx = x; - local ty = y - buttonHeight; +draw_button = function(name, x, y, buttonWidth, hoverindex) + draw_button_color(name, x, y, buttonWidth, hoverindex, 40,40,40, 0,128,255) +end + +draw_button_color = function(name, x, y, buttonWidth, hoverindex,r,g,b, olr,olg,olb) + local rx = x - (buttonWidth / 2); + local ty = y - (buttonHeight / 2); gfx.BeginPath(); - gfx.ImageRect(rx,ty,buttonWidth,buttonHeight,img,1,0) - if mouse_clipped(rx,ty, buttonWidth/1.5, buttonHeight*2) then + gfx.FillColor(olr, olg, olb); + if mouse_clipped(rx,ty, buttonWidth, buttonHeight) then hovered = hoverindex; + gfx.FillColor(255,128,0); end + gfx.Rect(rx - buttonBorder, + ty - buttonBorder, + buttonWidth + (buttonBorder * 2), + buttonHeight + (buttonBorder * 2)); + gfx.Fill(); + gfx.BeginPath(); + gfx.FillColor(r,g,b); + gfx.Rect(rx, ty, buttonWidth, buttonHeight); + gfx.Fill(); gfx.BeginPath(); gfx.FillColor(255,255,255); gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE); @@ -254,7 +281,7 @@ draw_checkbox = function(text, x, y, hoverindex, current, can_click) end end; -draw_user = function(user, x, y , w, h, breadx,bready) +draw_user = function(user, x, y , w, h, breadx,bready, idolID) local name = user.name local showthing = false if user.id == user_id then @@ -277,7 +304,6 @@ end gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE); gfx.FillColor(255,255,255) - gfx.FontSize(30) gfx.BeginPath() gfx.ImageRect(x,y,w,h,m_4pb_panels_bottom,1,0) @@ -305,17 +331,17 @@ function render_loading() gfx.Save() gfx.ResetTransform() gfx.BeginPath() - gfx.MoveTo(Dim.design.width, desh) - gfx.LineTo(Dim.design.width - 350, desh) - gfx.LineTo(Dim.design.width - 300, desh - 50) - gfx.LineTo(Dim.design.width, desh - 50) + gfx.MoveTo(desw, desh) + gfx.LineTo(desw - 350, desh) + gfx.LineTo(desw - 300, desh - 50) + gfx.LineTo(desw, desh - 50) gfx.ClosePath() gfx.FillColor(33,33,33) gfx.Fill() gfx.FillColor(255,255,255) gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT, gfx.TEXT_ALIGN_BOTTOM) gfx.FontSize(70) - gfx.Text("LOADING...", Dim.design.width - 20, desh - 3) + gfx.Text("LOADING...", desw - 20, desh - 3) gfx.Restore() end @@ -333,7 +359,7 @@ end draw_diff_icon = function(diff, x, y, w, h) - difbar.render(deltaTime, x, y, 1, diff.difficulty, diff.level); + difbar.render(deltaTime, x, y, 1, diff.difficulty+1, diff.level); end local doffset = 0; @@ -367,7 +393,6 @@ draw_diffs = function(diffs, x, y, w, h, selectedDiff) local xpos = x + ((w/2 - diffWidth/2) + (doffset)*(-0.8*diffWidth)) draw_diff_icon(diff, xpos + possx, y + possy, diffWidth, diffHeight, true) gfx.ResetScissor() - end set_diff = function(oldDiff, newDiff) @@ -417,7 +442,7 @@ function draw_rooms(y, h) if room.password then status = status..'

' end - draw_room(room.name .. ': '.. status, Dim.design.width/2, ypos, i == selected_room_index, function() + draw_room(room.name .. ': '.. status, desw/2, ypos, i == selected_room_index, function() join_room(room) end) end @@ -465,14 +490,14 @@ local IR_Handle = function() end function render_lobby(deltaTime) - local jw , jh = gfx.ImageSize(bg); gfx.BeginPath(); - gfx.ImageRect(0, 0, Dim.design.width, desh, bg,1,0); + gfx.ImageRect(0, 0, desw, desh, bg,1,0); drawIdol(deltaTime) gfx.BeginPath(); - gfx.ImageRect(0, 0, Dim.design.width, desh, bg_graid1,1,0); - gfx.ImageRect(0, 0, Dim.design.width, desh, bg_graid2,1,0); - gfx.BeginPath(); + gfx.ImageRect(0, 0, desw, desh, bg_graid1,1,0); + gfx.ImageRect(0, 0, desw, desh, bg_graid2,1,0); + gfx.BeginPath(); + m_base_part() m_own_info() @@ -489,17 +514,15 @@ function render_room_list(deltaTime) Background.draw(deltaTime) - - draw_rooms(175, desh - 290); + getpanel() - -- Draw cover for rooms out of view + gfx.BeginPath() gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_BOTTOM) gfx.FontSize(70) - if not loading then - draw_button("Create new room", Dim.design.width/2, desh-40-buttonHeight, Dim.design.width*(3/4), new_room); - end +-- draw_button("Create new room", desw/2, Dim.design.height-40-buttonHeight, desw/2, new_room); + end @@ -510,40 +533,37 @@ function render_password_screen(deltaTime) gfx.FillColor(255,255,255) gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_BOTTOM) gfx.FontSize(70) - gfx.Text("Joining "..selected_room.name.."...", Dim.design.width/2, desh/4) + gfx.Text("Joining "..selected_room.name.."...", desw/2, desh/4) gfx.FillColor(50,50,50) gfx.BeginPath() - gfx.Rect(0, desh/2-10, Dim.design.width, 40) + gfx.Rect(0, desh/2-10, desw, 40) gfx.Fill(); gfx.FillColor(255,255,255) - gfx.Text("Please enter room password:", Dim.design.width/2, desh/2-40) - gfx.Text(string.rep("*",#textInput.text), Dim.design.width/2, desh/2+40) + gfx.Text("Please enter room password:", desw/2, desh/2-40) + gfx.Text(string.rep("*",#textInput.text), desw/2, desh/2+40) if passwordError then gfx.FillColor(255,50,50) gfx.FontSize(60 + math.floor(passwordErrorOffset*20)) - gfx.Text("Invalid password", Dim.design.width/2, desh/2+80) + gfx.Text("Invalid password", desw/2, desh/2+80) end - draw_button("Join", Dim.design.width/2, desh*3/4, Dim.design.width/2, mpScreen.JoinWithPassword); + draw_button("Join", desw/2, desh*3/4, desw/2, mpScreen.JoinWithPassword); end -function render_new_room_password(delta_time) +function render_new_room_password(deltaTime) gfx.FillColor(255,255,255) gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_BOTTOM) gfx.FontSize(70) - gfx.Text("Create New Room", Dim.design.width/2, desh/4) + gfx.Text("Create New Room", desw/2, desh/4) - gfx.FillColor(50,50,50) - gfx.BeginPath() - gfx.Rect(0, desh/2-10, Dim.design.width, 40) - gfx.Fill(); +-- make something here gfx.FillColor(255,255,255) - gfx.Text("Enter room password:", Dim.design.width/2, desh/2-40) - gfx.Text(string.rep("*",#textInput.text), Dim.design.width/2, desh/2+40) - draw_button("Create Room", Dim.design.width/2, desh*3/4, Dim.design.width/2, mpScreen.NewRoomStep); + gfx.Text("Enter room password:", desw/2, desh/2-40) + gfx.Text(string.rep("*",#textInput.text), desw/2, desh/2+40) + draw_button("Create Room", desw/2, desh*3/4, desw/2, mpScreen.NewRoomStep); end function render_new_room_name(deltaTime) @@ -552,31 +572,31 @@ function render_new_room_name(deltaTime) gfx.FillColor(255,255,255) gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_BOTTOM) gfx.FontSize(70) - gfx.Text("Create New Room", Dim.design.width/2, desh/4) + gfx.Text("Create New Room", desw/2, desh/4) - gfx.Rect(0, desh/2-10, Dim.design.width, 60) + gfx.Rect(0, desh/2-10, desw/2, 60) - gfx.Text("Please enter room name:", Dim.design.width/2, desh/2-40) - gfx.Text(textInput.text, Dim.design.width/2, desh/2+40) - draw_button("Next", Dim.design.width/2, desh*3/4, Dim.design.width/2, mpScreen.NewRoomStep); + gfx.Text("Please enter room name:", desw/2, desh/2-40) + gfx.Text(textInput.text, desw/2, desh/2+40) + draw_button("Next", desw/2, desh*3/4, desw/2, mpScreen.NewRoomStep); end function render_set_username(deltaTime) gfx.FillColor(255,255,255) gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_BOTTOM) gfx.FontSize(70) - gfx.Text("First things first...", Dim.design.width/2, desh/4) + gfx.Text("First things first...", desw/2, desh/4) gfx.FillColor(50,50,50) gfx.BeginPath() - gfx.Rect(0, desh/2-10, Dim.design.width, 60) + gfx.Rect(0, desh/2-10, desw, 60) gfx.Fill(); gfx.FillColor(255,255,255) - gfx.Text("Enter a display name:", Dim.design.width/2, desh/2-40) - gfx.Text(textInput.text, Dim.design.width/2, desh/2+40) - draw_button("Join Multiplayer", Dim.design.width/2, desh*3/4, Dim.design.width/2, function() + gfx.Text("Enter a display name:", desw/2, desh/2-40) + gfx.Text(textInput.text, desw/2, desh/2+40) + draw_button("Join Multiplayer", desw/2, desh*3/4, desw/2, function() loading = true; mpScreen.SaveUsername() end); diff --git a/scripts/result.lua b/scripts/result.lua index 02bc25c..298fbbd 100644 --- a/scripts/result.lua +++ b/scripts/result.lua @@ -8,10 +8,12 @@ local lang = require("language.call") local crew = game.GetSkinSetting("single_idol") local betacrew = game.GetSkinSetting("beta_idol") +local staticcrew = game.GetSkinSetting("static_idol") local bad = "/bad" local okay = "/okay" local veryokay = "/good" local idle = "/idle" +local static = "/static" local VolforceWindow = require('components.volforceWindow') @@ -65,6 +67,20 @@ local gaugeTypeMirrorImage = gfx.CreateSkinImage("result/gauge_type_badges/mirro local gaugeTypeRandomImage = gfx.CreateSkinImage("result/gauge_type_badges/random.png", 0); local gaugeTypeMirrorRandomImage = gfx.CreateSkinImage("result/gauge_type_badges/random_mirror.png", 0); +local UsBottom = gfx.CreateSkinImage("result/multi_4p/base.png",0) +local UsTop = gfx.CreateSkinImage("result/multi_4p/top.png",0) + +local pos = { + gfx.CreateSkinImage("result/multi_4p/pos/1.png", 0), + gfx.CreateSkinImage("result/multi_4p/pos/2.png", 0), + gfx.CreateSkinImage("result/multi_4p/pos/3.png", 0), + gfx.CreateSkinImage("result/multi_4p/pos/4.png", 0), + gfx.CreateSkinImage("result/multi_4p/pos/5.png", 0), + gfx.CreateSkinImage("result/multi_4p/pos/6.png", 0), + gfx.CreateSkinImage("result/multi_4p/pos/7.png", 0), + gfx.CreateSkinImage("result/multi_4p/pos/8.png", 0), +} + local gradeImages = { S = gfx.CreateSkinImage("common/grades/S.png", 0), AAA_P = gfx.CreateSkinImage("common/grades/AAA+.png", 0), @@ -113,16 +129,13 @@ local gaugePermFillImage = gfx.CreateSkinImage( local gaugeBlastiveFillImage = gfx.CreateSkinImage( "gameplay/gauges/blastive/gauge_fill.png", 0) -local difficultyLabelImages = { - gfx.CreateSkinImage("diff/1 novice.png", 0), - gfx.CreateSkinImage("diff/2 advanced.png", 0), - gfx.CreateSkinImage("diff/3 exhaust.png", 0), - gfx.CreateSkinImage("diff/4 maximum.png", 0), - gfx.CreateSkinImage("diff/5 infinite.png", 0), - gfx.CreateSkinImage("diff/6 gravity.png", 0), - gfx.CreateSkinImage("diff/7 heavenly.png", 0), - gfx.CreateSkinImage("diff/8 vivid.png", 0), - gfx.CreateSkinImage("diff/9 exceed.png", 0) +local badgeImages = { + gfx.CreateSkinImage("song_select/medal/saved.png", 1), + gfx.CreateSkinImage("song_select/medal/played.png", 1), + gfx.CreateSkinImage("song_select/medal/clear.png", 1), + gfx.CreateSkinImage("song_select/medal/hard.png", 1), + gfx.CreateSkinImage("song_select/medal/uc.png", 1), + gfx.CreateSkinImage("song_select/medal/puc.png", 1), } local clearBadgeImages = { @@ -285,7 +298,7 @@ function drawTimingBar(y, value, max, type) end gettyping = function (animtype) - idolAnimation = gfx.LoadSkinAnimation('crew/anim/'..crew..animtype, 1 / 30, 0, true); + idolAnimation = gfx.LoadSkinAnimation('crew/anim/'..crew..animtype, 1 / 30, loopC, true); end @@ -432,10 +445,6 @@ local drawRightPanelContent = function() ) * 10 ); gfx.Text(decimalPortion .. '%', rightPanelX + 988, rightPanelY + 296); - - - -- gfx.FontSize(24) - -- gfx.Text('%', rightPanelX + 988, rightPanelY + 294); end gfx.FontSize(24) @@ -484,37 +493,35 @@ local drawRightPanelContent = function() local Fillmhd, Fillmihd = math.floor(result.meanHitDelta), result.medianHitDelta; - -- result.meanHitDelta up210 down + -- result.meanHitDelta bar gfx.BeginPath(); - gfx.FillColor(255, 100, 0, 255); - gfx.Rect(timmingX + 210, timmingY + 27.2 , Fillmhd, 12); - gfx.Fill(); - if Fillmhd >= 210 then - gfx.Rect(timmingX + 210, timmingY + 27.2 , 210, 12); - gfx.Fill(); - elseif Fillmhd <= -196 then - gfx.Rect(timmingX + 210, timmingY + 27.2 , -196, 12); - gfx.Fill(); - elseif Fillmhd == 0 then - gfx.Rect(timmingX + 210, timmingY + 27.2 , 1, 12); - gfx.Fill(); - end + gfx.Scissor(timmingX+13,timmingY + 27.2,408,12) + gfx.BeginPath(); + gfx.Rect(timmingX + 210, timmingY + 27.2 , Fillmhd*2, 12); - -- result.medianHitDelta + if Fillmhd < 0 then + gfx.FillColor(46, 221, 241, 255); + gfx.Fill(); + else + gfx.FillColor(215, 48, 182, 255); + gfx.Fill(); + end + gfx.ResetScissor() + + -- result.medianHitDelta bar gfx.BeginPath(); - gfx.FillColor(255, 136, 0, 255); - gfx.Rect(timmingX + 210, timmingY + 27.2 + detailTextMargin, Fillmihd, 12); - gfx.Fill(); - if Fillmihd >= 210 then - gfx.Rect(timmingX + 210, timmingY + 27.2 + detailTextMargin, 210, 12); - gfx.Fill(); - elseif Fillmihd <= -196 then - gfx.Rect(timmingX + 210, timmingY + 27.2 + detailTextMargin, -196, 12); - gfx.Fill(); - elseif Fillmihd == 0 then - gfx.Rect(timmingX + 210, timmingY + 27.2 + detailTextMargin, 1, 12); - gfx.Fill(); + gfx.Scissor(timmingX+13,timmingY + 27.2 + detailTextMargin,408,12) + gfx.BeginPath(); + gfx.Rect(timmingX + 210, timmingY + 27.2 + detailTextMargin, Fillmihd*2, 12); + if Fillmihd < 0 then + gfx.FillColor(46, 221, 241, 255); + gfx.Fill(); + else + gfx.FillColor(215, 48, 182, 255); + gfx.Fill(); end + gfx.ResetScissor() + gfx.ClosePath(); gfx.FillColor(255, 255, 255, 255); gfx.FontSize(19.25) @@ -659,6 +666,107 @@ local drawBottomPanelContent = function(deltatime) gfx.Text(string.format("%dms", offset), leftX + 370, baseY + 89); end +local drawmultipanelcontent = function(deltaTime) + if result.uid == nil then + gfx.Text(" ",100,100) + else + + local i = result.displayIndex + if result.badge == 0 then + badgeImage = badgeImages[1] + elseif result.badge == 1 then + badgeImage = badgeImages[2] + elseif result.badge == 2 then + badgeImage = badgeImages[3] + elseif result.badge == 3 then + badgeImage = badgeImages[4] + elseif result.badge == 4 then + badgeImage = badgeImages[5] + elseif result.badge == 5 then + badgeImage = badgeImages[6] + end + + gfx.LoadSkinFont('Digital-Serial-Bold.ttf') + gfx.FontSize(26) + local posDWWidth, posDWHeight = gfx.ImageSize(UsBottom) + local posUPWidth, posUPHeight = gfx.ImageSize(UsTop) + local posWidth, posHeight = gfx.ImageSize(pos[i+1]) + local multy = 16; + local multx = 0; + local half = 1.1 + + 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) + + gfx.BeginPath() + 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.Text(string.upper(result.playerName),multx+75,multy+247) + + gfx.Text(irText, multx + 15, multy + 294); + gfx.FontSize(24) + 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; + + if result.gauge_type == 0 then + gaugeBreakpoint = 0.7; + + if result.gauge <= 0.7 then + gaugeFillImage = gaugeEffFailFillImage; + else + gaugeFillImage = gaugeEffPassFillImage; + end + + elseif result.gauge_type == 1 then + gaugeFillImage = gaugeExcFillImage; + elseif result.gauge_type == 2 then + gaugeFillImage = gaugePermFillImage; + elseif result.gauge_type == 3 then -- BLASTIVE RATE + gaugeFillImage = gaugeBlastiveFillImage; + end + + local gaugePosX = multx + 120; + local gaugePosY = multy + 255; + local FillW, FillH = 236, 9.5; + + gfx.BeginPath(); + gfx.Scissor(gaugePosX, gaugePosY + (FillW - (FillW * (result.gauge))), + FillW, FillH * (result.gauge)) + gfx.ImageRect(gaugePosX, gaugePosY, FillW, FillH, gaugeFillImage, 1, 0); + gfx.ResetScissor(); + + + if (gaugeBreakpoint > 0) then + gfx.Save() + gfx.BeginPath() + gfx.GlobalAlpha(0.75); + + local lineY = gaugePosY + (FillH - (FillH * (gaugeBreakpoint))) + + gfx.MoveTo(gaugePosX, lineY) + gfx.LineTo(gaugePosX + 10, lineY) + + gfx.StrokeWidth(2) + gfx.StrokeColor(255, 255, 255) + gfx.Stroke() + + gfx.ClosePath() + gfx.Restore() + + end + end +end local drawJacketPanel = function() gfx.BeginPath(); @@ -672,16 +780,6 @@ local drawJacketPanelContent = function(deltaTime) gfx.ImageRect(jacketPanelX + 13, jacketPanelY + 28, 265, 265, jacketImage or defaultJacketImage, 1, 0); local adjustedDiff = Charting.GetDisplayDifficulty(result.jacketPath, result.difficulty) DiffRectangle.render(deltaTime, jacketPanelX+183, jacketPanelY+2.5, 0.67, adjustedDiff, result.level); - - -- gfx.BeginPath(); - -- gfx.ImageRect(jacketPanelX + 183, jacketPanelY + 2.5, 140 / 1.5, 31 / 1.5, - -- difficultyLabelImages[result.difficulty + 1] or - -- difficultyLabelImages[4], 1, 0); - - -- gfx.FontSize(17) - -- gfx.LoadSkinFont('Digital-Serial-Bold.ttf') - -- gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT + gfx.TEXT_ALIGN_MIDDLE) - -- gfx.Text(result.level, jacketPanelX + 265, jacketPanelY + 13.5); end local IR_HeartbeatResponse = function(res) @@ -821,24 +919,32 @@ result_set = function() end earlyLateBarsStats.criticals = result.perfects -- Criticals are for all objects - if betacrew == true then - if result.score < grades.S then - animtype = veryokay - elseif result.score < grades.AAA then - animtype = okay - elseif result.score < grades.A_P then - animtype = bad - elseif result.score < grades.A_P then - animtype = bad - end - else - animtype = idle + + if betacrew and not staticcrew then + + if result.score > grades.S-1 then + animtype = veryokay + loopC = 1 + elseif result.score > grades.AAA-1 then + animtype = okay + loopC = 1 + elseif result.score < grades.AAA-1 then + animtype = bad + loopC = 1 + end end + if not betacrew and not staticcrew then + animtype = idle + loopC = 0 + elseif not betacrew and staticcrew then + animtype = static + loopC = 0 +end gettyping(animtype) end - + drawResultScreen = function (x, y, w, h, deltaTime) gfx.BeginPath() @@ -853,6 +959,8 @@ drawResultScreen = function (x, y, w, h, deltaTime) gfx.GlobalAlpha(Easing.outQuad(transitionEnterScale)) + drawmultipanelcontent(deltaTime) + drawBottomPanel() drawBottomPanelContent(deltaTime) diff --git a/textures/multi/roomselect/lobby_not_loaded.png b/textures/multi/roomselect/lobby_not_loaded.png new file mode 100644 index 0000000..83b9e13 Binary files /dev/null and b/textures/multi/roomselect/lobby_not_loaded.png differ diff --git a/textures/multi/roomselect/lobby_select.png b/textures/multi/roomselect/lobby_select.png new file mode 100644 index 0000000..1f20da7 Binary files /dev/null and b/textures/multi/roomselect/lobby_select.png differ diff --git a/textures/multi/roomselect/lobby_select_color.png b/textures/multi/roomselect/lobby_select_color.png new file mode 100644 index 0000000..bb40700 Binary files /dev/null and b/textures/multi/roomselect/lobby_select_color.png differ diff --git a/textures/multi/roomselect/lobby_select_gradiant.png b/textures/multi/roomselect/lobby_select_gradiant.png new file mode 100644 index 0000000..7f49bc9 Binary files /dev/null and b/textures/multi/roomselect/lobby_select_gradiant.png differ diff --git a/textures/multi/roomselect/multi_station.png b/textures/multi/roomselect/multi_station.png new file mode 100644 index 0000000..c45d73e Binary files /dev/null and b/textures/multi/roomselect/multi_station.png differ diff --git a/textures/multi/roomselect/nautica/nautica_bg_jacket.png b/textures/multi/roomselect/nautica/nautica_bg_jacket.png new file mode 100644 index 0000000..a550c2e Binary files /dev/null and b/textures/multi/roomselect/nautica/nautica_bg_jacket.png differ diff --git a/textures/multi/roomselect/nautica/nautica_panel.png b/textures/multi/roomselect/nautica/nautica_panel.png new file mode 100644 index 0000000..cac0665 Binary files /dev/null and b/textures/multi/roomselect/nautica/nautica_panel.png differ diff --git a/textures/multi/roomselect/nautica/nautica_station.png b/textures/multi/roomselect/nautica/nautica_station.png new file mode 100644 index 0000000..c1f03ab Binary files /dev/null and b/textures/multi/roomselect/nautica/nautica_station.png differ diff --git a/textures/multi/roomselect/nautica/no_dif.png b/textures/multi/roomselect/nautica/no_dif.png new file mode 100644 index 0000000..b5046d1 Binary files /dev/null and b/textures/multi/roomselect/nautica/no_dif.png differ diff --git a/textures/multi/roomselect/pw_or_price_panel.png b/textures/multi/roomselect/pw_or_price_panel.png new file mode 100644 index 0000000..0e4ba09 Binary files /dev/null and b/textures/multi/roomselect/pw_or_price_panel.png differ diff --git a/textures/multi/roomselect/room_panel.png b/textures/multi/roomselect/room_panel.png new file mode 100644 index 0000000..5df3210 Binary files /dev/null and b/textures/multi/roomselect/room_panel.png differ diff --git a/textures/multi/roomselect/room_panel_name_or_song.png b/textures/multi/roomselect/room_panel_name_or_song.png new file mode 100644 index 0000000..4e3466e Binary files /dev/null and b/textures/multi/roomselect/room_panel_name_or_song.png differ diff --git a/textures/result/multi_4p/pos/5.png b/textures/result/multi_4p/pos/5.png new file mode 100644 index 0000000..23d32b6 Binary files /dev/null and b/textures/result/multi_4p/pos/5.png differ diff --git a/textures/result/multi_4p/pos/6.png b/textures/result/multi_4p/pos/6.png new file mode 100644 index 0000000..5fb1100 Binary files /dev/null and b/textures/result/multi_4p/pos/6.png differ diff --git a/textures/result/multi_4p/pos/7.png b/textures/result/multi_4p/pos/7.png new file mode 100644 index 0000000..009a292 Binary files /dev/null and b/textures/result/multi_4p/pos/7.png differ diff --git a/textures/result/multi_4p/pos/8.png b/textures/result/multi_4p/pos/8.png new file mode 100644 index 0000000..a26e2f9 Binary files /dev/null and b/textures/result/multi_4p/pos/8.png differ diff --git a/textures/song_select/medal/saved.png b/textures/song_select/medal/saved.png new file mode 100644 index 0000000..d94aed2 Binary files /dev/null and b/textures/song_select/medal/saved.png differ