From 0d1fa4ceb1d6dc67175b75654238874d92d03dc5 Mon Sep 17 00:00:00 2001 From: RealFD Date: Fri, 4 Mar 2022 08:08:43 +0100 Subject: [PATCH] smool --- scripts/multiplayerscreen old.lua | 1159 +++++++++++++++++++++++++++ scripts/multiplayerscreen.lua | 267 +++--- textures/multi/lobby/song_panel.png | Bin 179243 -> 185891 bytes 3 files changed, 1314 insertions(+), 112 deletions(-) create mode 100644 scripts/multiplayerscreen old.lua diff --git a/scripts/multiplayerscreen old.lua b/scripts/multiplayerscreen old.lua new file mode 100644 index 0000000..bdfcc30 --- /dev/null +++ b/scripts/multiplayerscreen old.lua @@ -0,0 +1,1159 @@ +json = require "json" + +local common = require('common.common'); +local difbar = require("components.diff_rectangle"); +local Background = require('components.background'); +local msg = game.GetSkinSetting("MSG"); +local normname = game.GetSkinSetting("username") + +local creww = game.GetSkinSetting("single_idol") + +local m_jacket = gfx.CreateSkinImage("multi/lobby/multi_jacket.png", 1); +local m_base_panel = gfx.CreateSkinImage("multi/lobby/multi_base_panel.png", 1); +local m_anim = gfx.CreateSkinImage("multi/lobby/panel_laser.png", 1); +local m_panel = gfx.CreateSkinImage("multi/lobby/matching_panel.png", 1); +local m_s_panel = gfx.CreateSkinImage("multi/lobby/song_panel.png", 1); +local m_host_panel = gfx.CreateSkinImage("multi/lobby/user_panel.png", 1); +local m_bpm_panel = gfx.CreateSkinImage("multi/lobby/lane_speed_panel.png", 1); +local m_info_panel = gfx.CreateSkinImage("multi/lobby/button_panel.png", 1); + +local temppanels = gfx.CreateSkinImage("song_select/textboard.png", 1); + +local headerMatchingImage = gfx.CreateSkinImage("titlescreen/entry.png", 1); + +local m_4pb_panels = gfx.CreateSkinImage("multi/lobby/user_panel_2.png", 1); + +local ready_bt = gfx.CreateSkinImage("multi/lobby/READY.png", 1); + +local bg = gfx.CreateSkinImage("multi/lobby/bg.png", 1); +local bg_graid1 = gfx.CreateSkinImage("multi/lobby/gradient_bottom.png", 1); +local bg_graid2 = gfx.CreateSkinImage("multi/lobby/gradient_top.png", 1); + +local backgroundImage = gfx.CreateSkinImage("bg_pattern.png", gfx.IMAGE_REPEATX | gfx.IMAGE_REPEATY) + +local idolAnimation = gfx.LoadSkinAnimation('crew/anim/'..creww, 1 / 30, 0, true); +local idolAnimTransitionScale = 0; + +local resx, resy = game.GetResolution() +local desw = 1080 +local desh = 1920 +local scale; + +local mposx = 0; +local mposy = 0; +local hovered = nil; +local buttonHeight = 20; +local buttonBorder = 2; +local portrait +local jacket_size; + +local BAR_ALPHA = 191; +local HEADER_HEIGHT = 100 + +game.LoadSkinSample("click-02") +game.LoadSkinSample("click-01") +game.LoadSkinSample("menu_click") + +local loading = true; +local rooms = {}; +local lobby_users = {}; +local selected_room = nil; +local user_id = nil; +local jacket = 0; +local all_ready; +local user_ready; +local go; +local hard_mode = false; +local rotate_host = false; +local start_game_soon = false; +local host = nil; +local owner = nil; +local missing_song = false; +local placeholderJacket = gfx.CreateSkinImage("song_select/loading.png", 0) +local did_exit = false; + +-- Window variables +local resX, resY + +-- Aspect Ratios +local landscapeWidescreenRatio = 16 / 9 +local landscapeStandardRatio = 4 / 3 +local portraitWidescreenRatio = 9 / 16 + +-- Portrait sizes +local fullX, fullY +local desw = 1080 +local desh = 1920 + +local function resolutionChange(x, y) + resX = x + resY = y + fullX = portraitWidescreenRatio * y + fullY = y +end + +local irHeartbeatRequested = false; +local irText = '' + +local grades = { + {["max"] = 6900000, ["image"] = gfx.CreateSkinImage("common/grades/D.png", 0)}, + {["max"] = 7900000, ["image"] = gfx.CreateSkinImage("common/grades/C.png", 0)}, + {["max"] = 8600000, ["image"] = gfx.CreateSkinImage("common/grades/B.png", 0)}, + {["max"] = 8900000, ["image"] = gfx.CreateSkinImage("common/grades/A.png", 0)}, + {["max"] = 9200000, ["image"] = gfx.CreateSkinImage("common/grades/A+.png", 0)}, + {["max"] = 9400000, ["image"] = gfx.CreateSkinImage("common/grades/AA.png", 0)}, + {["max"] = 9600000, ["image"] = gfx.CreateSkinImage("common/grades/AA+.png", 0)}, + {["max"] = 9700000, ["image"] = gfx.CreateSkinImage("common/grades/AAA.png", 0)}, + {["max"] = 9800000, ["image"] = gfx.CreateSkinImage("common/grades/AAA+.png", 0)}, + {["max"] = 9900000, ["image"] = gfx.CreateSkinImage("common/grades/S.png", 0)} + } + +local badges = { + gfx.CreateSkinImage("badges/played.png", 0), + gfx.CreateSkinImage("badges/clear.png", 0), + gfx.CreateSkinImage("badges/hard-clear.png", 0), + gfx.CreateSkinImage("badges/full-combo.png", 0), + gfx.CreateSkinImage("badges/perfect.png", 0) +} + +local user_name_key = game.GetSkinSetting('multi.user_name_key') +if user_name_key == nil then + user_name_key = 'nick' +end +local name = game.GetSkinSetting(user_name_key) +if name == nil or name == '' then + name = 'Guest' +end + +local normal_font = game.GetSkinSetting('multi.normal_font') +if normal_font == nil then + normal_font = 'NotoSans-Regular.ttf' +end +local mono_font = game.GetSkinSetting('multi.mono_font') +if mono_font == nil then + mono_font = 'NovaMono.ttf' +end + +local SERVER = game.GetSkinSetting("multi.server") + +local drawIdol = function(deltaTime) + local idolAnimTickRes = gfx.TickAnimation(idolAnimation, deltaTime); + if idolAnimTickRes == 1 then + gfx.GlobalAlpha(idolAnimTransitionScale); + + idolAnimTransitionScale = idolAnimTransitionScale + 1 / 60; + if (idolAnimTransitionScale > 1) then + idolAnimTransitionScale = 1; + end + + gfx.ImageRect(0, 0, resX,resY, idolAnimation, 1, 0); + gfx.GlobalAlpha(1); + end +end + +songjacket = function() -- self explanatory + + if portrait then + split = resX + jacket_size = math.min(resX/4, resY/4); + song_x_off = 0; + else + split = resX/2 + jacket_size = math.min(resX/2, resY/2); + song_x_off = 1/2*resX; + end + + local jw , jh = gfx.ImageSize(m_jacket); + gfx.BeginPath(); + gfx.ImageRect(333, 1284, jw/1.18, jh/1.18, m_jacket,1,0); + +end + +m_own_info = function() + + local x = 0 + local y = 1310 + gfx.BeginPath(); + gfx.FontSize(40) + gfx.ImageRect(x, y, 343/1.18, 361/1.18,m_host_panel,1,0) + gfx.Text(normname, x+20, y+78) + + gfx.FontSize(22) + gfx.Text(irText, x+5, y+288); + +end + +m_base_part = function() -- just the images which slide up + local jw , jh = gfx.ImageSize(m_base_panel); + gfx.BeginPath(); + gfx.ImageRect(1, 1250, jw/1.17, jh/1.18, m_base_panel,1,0); + gfx.BeginPath(); + gfx.ImageRect(1, 1250, jw/1.17, jh/1.18, m_anim,1,0); + + gfx.LoadSkinFont('Digital-Serial-Bold.ttf') + gfx.FillColor(255,255,255) + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT, gfx.TEXT_ALIGN_LEFT) + gfx.FontSize(24) +end + +m_part = function() -- room name part + local jw , jh = gfx.ImageSize(m_panel); + gfx.BeginPath(); + gfx.ImageRect(429, 1142, jw/1.175, jh/1.18, m_panel,1,0); + + gfx.FontSize(32); + gfx.LoadSkinFont('Digital-Serial-Bold.ttf') + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT, gfx.TEXT_ALIGN_MIDDLE) + gfx.Text(selected_room.name, 575, 1179) +end + +m_s_part = function () -- song info panel + local jw , jh = gfx.ImageSize(m_s_panel); + gfx.BeginPath(); + gfx.ImageRect(283, 1187, jw/1.175, jh/1.18, m_s_panel,1,0); + + gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_LEFT); + gfx.FillColor(255,255,255) + + gfx.FontSize(32) + if selected_song == nil then + if host == user_id then + gfx.Text("NO SONG", 535, 1236) + gfx.Text("NO ARIST", 535, 1275) + gfx.FontSize(24) + gfx.Text("NO EFFECTOR", 746, 1378) + gfx.Text("NO ILLUSTRATOR", 746, 1406) + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + gfx.FontSize(22) + gfx.Text("BPM ?",780, 1307) + else + if missing_song then + gfx.Text("MISSING SONG!!!!", 535, 1235) + gfx.Text("MISSING ARIST!!!!", 535, 1275) + gfx.FontSize(24) + gfx.Text("MISSING EFFECTOR!!!!", 744, 1378) + gfx.Text("MISSING ILLUSTRATOR!!!!", 744, 1406) + else + gfx.Text("HOST IS SELECTING SONG", 535, 1235) + gfx.Text(" ", 535, 1275) + gfx.FontSize(24) + gfx.Text(" ", 746, 1378) + gfx.Text(" ", 746, 1406) + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + gfx.FontSize(22) + gfx.Text("BPM ?",780, 1307) + end + end + else + if selected_song.min_bpm ~= selected_song.max_bpm then + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + gfx.FontSize(22); + gfx.Text("BPM",777, 1307) + gfx.FontSize(26); + gfx.Text(string.format("%.0f - %.0f", + selected_song.min_bpm, selected_song.max_bpm), + 780 + 77, 1307) + else + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + gfx.FontSize(22); + gfx.Text("BPM",777, 1307) + gfx.Text(string.format("%.0f", + selected_song.min_bpm), + 780 + 77, 1307) + end + gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_LEFT); + gfx.FontSize(32); + gfx.Text(selected_song.title, 535, 1236) + gfx.Text(selected_song.artist, 535, 1275) + gfx.FontSize(24) + gfx.Text(selected_song.effector, 746, 1377) + gfx.Text(selected_song.illustrator, 746, 1406) + end +end + +m_bpm_part = function () -- bpm and lane speed + local jw , jh = gfx.ImageSize(m_bpm_panel); + gfx.BeginPath(); + gfx.ImageRect(0, 1692, jw/1.18, jh/1.18, m_bpm_panel,1,0); + + gfx.FontSize(32) + if selected_song == nil then + if host == user_id then + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + gfx.FontSize(32) + gfx.Text("BPM ?",76, 1788) + gfx.Text("LANE-SPEED ?",76, 1832) + else + if missing_song then + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + gfx.FontSize(32) + gfx.Text("BPM ?",76, 1788) + gfx.Text("LANE-SPEED ?",76, 1832) + else + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + gfx.FontSize(32) + gfx.Text("BPM ?",76, 1788) + gfx.Text("LANE-SPEED ?",76, 1832) + end + end + end + if selected_song ~= nil then + gfx.FillColor(255,255,255) + gfx.FontSize(32); + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + + if selected_song.min_bpm ~= selected_song.max_bpm then + + gfx.Text("BPM",76, 1788) + gfx.Text(string.format("%.0f - %.0f", + selected_song.min_bpm, selected_song.max_bpm), + 76 + 75, 1788) + + gfx.Text("LANE-SPEED",76, 1832) + gfx.Text(string.format("%.2f = %.0f", + selected_song.hispeed, selected_song.speed_bpm * selected_song.hispeed), + 76 + 175, 1832) + else + + gfx.FontSize(32); + gfx.Text("BPM",76, 1788) + gfx.Text(string.format("%.0f", + selected_song.min_bpm), + 76 + 75, 1788) + + gfx.Text("LANE-SPEED",76, 1832) + gfx.Text(string.format("%.2f = %.0f", + selected_song.hispeed, selected_song.speed_bpm * selected_song.hispeed), + 76 + 175, 1832) + end + end +end + +m_info_part = function () -- the info panel + local jw , jh = gfx.ImageSize(m_info_panel); + gfx.BeginPath(); + gfx.ImageRect(475, 1590, jw/1.18, jh/1.18, m_info_panel,1,0); + + draw_checkbox("Excessive", 635, 1639.25, toggle_hard, hard_mode, not start_game_soon) + draw_checkbox("Mirror",676.2, 1677.5, toggle_mirror, mirror_mode, not start_game_soon) + draw_checkbox("Rotate",854.1, 1677.5, toggle_rotate, do_rotate, + (owner == user_id or host == user_id) and not start_game_soon) + + gfx.FillColor(255,255,255,100) + gfx.Text("Leave",892.5, 1640) + gfx.FillColor(255,255,255) + gfx.FontSize(24) +-- gfx.Text("FX-L/FX-R TO READY UP",765.5,1859) + gfx.Text("FX-L/FX-R TO EXCEED SEX",765.5,1859) +end + +user_setup = function () -- (semi new) user layering + local distance = 350 + for i, user in ipairs(lobby_users) do + + buttonY = 1142-360/1.2 + + if owner == user_id and user.id ~= user_id then + draw_button("K",525+distance, buttonY, 100, function() + kick_user(user); + end) + end + + + + if i == 1 then + draw_user(user, -distance, 1142-360/1.2, 420/1.2, 330/1.2, i,215,245.5) + + if (owner == user_id or host == user_id) and user.id ~= host then + draw_button("H",-distance, buttonY, 50, function() + change_host(user);end) + end + + elseif i == 2 then + draw_user(user, 16, 1142-360/1.2, 420/1.2, 330/1.2, i,215,245.5) + + if (owner == user_id or host == user_id) and user.id ~= host then + draw_button("H",16, buttonY+250, 50, function() + change_host(user);end) + end + + elseif i == 3 then + draw_user(user, 16+distance, 1142-360/1.2, 420/1.2, 330/1.2, i,215,245.5) + + if (owner == user_id or host == user_id) and user.id ~= host then + draw_button("H",16+distance, buttonY, 50, function() + change_host(user);end) + end + + elseif i == 4 then + draw_user(user, 16+distance+distance, 1142-360/1.2, 420/1.2, 330/1.2, i,215,245.5) + + if (owner == user_id or host == user_id) and user.id ~= host then + draw_button("H",16+distance+distance, buttonY, 50, function() + change_host(user);end) + end + + 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) + + if (owner == user_id or host == user_id) and user.id ~= host then + draw_button("H",16+distance+distance+distance, buttonY, 25, function() + change_host(user);end) + end + + end + end +end + +function drawHeader() + gfx.BeginPath(); + gfx.FillColor(0, 0, 0, BAR_ALPHA); + gfx.Rect(0, 0, desw, HEADER_HEIGHT); + gfx.Fill(); + gfx.ClosePath() + + gfx.ImageRect(desw/2 - 200, HEADER_HEIGHT/2 - 20, 400, 40, headerMatchingImage, 1, 0) +end + +mouse_clipped = function(x,y,w,h) + return mposx > x and mposy > y and mposx < x+w and mposy < y+h; +end; + +draw_room = function(name, x, y, selected, hoverindex) + local buttonWidth = resX*(3/4); + local rx = x - (buttonWidth / 2); + local ty = y - (buttonHeight / 2); + local roomButtonBorder = buttonBorder; + gfx.BeginPath(); + gfx.FillColor(0,128,255); + if selected then + gfx.FillColor(0,255,0); + roomButtonBorder = 4; + end + if mouse_clipped(rx,ty, buttonWidth, buttonHeight) then + hovered = hoverindex; + gfx.FillColor(255,128,0); + end + gfx.Rect(rx - roomButtonBorder, + ty - roomButtonBorder, + buttonWidth + (roomButtonBorder * 2), + buttonHeight + (roomButtonBorder * 2)); + gfx.Fill(); + gfx.BeginPath(); + gfx.FillColor(40,40,40); + 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); + gfx.FontSize(40); + gfx.Text(name, x, y); +end; + +draw_button = function(name, x, y, buttonWidth, hoverindex) + draw_button_color(name, x, y, buttonWidth, hoverindex, temppanels) +end + +draw_button_color = function(name, x, y, buttonWidth, hoverindex,img) + 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, buttonHeight) then + hovered = hoverindex; + end + gfx.Rect(rx - buttonBorder, + ty - buttonBorder, + buttonWidth + (buttonBorder * 2), + buttonHeight + (buttonBorder * 2)); + gfx.BeginPath(); + gfx.BeginPath(); + gfx.FillColor(255,255,255); + gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE); + gfx.FontSize(40); + gfx.Text(name, x, y); +end; + +draw_checkbox = function(text, x, y, hoverindex, current, can_click) + gfx.BeginPath(); + + if can_click then + gfx.FillColor(255,255,255,100); + else + gfx.FillColor(100,100,100,100); + end + gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE); + gfx.FontSize(30); + gfx.Text(text, x, y) + + local xmin,ymin,xmax,ymax = gfx.TextBounds(x, y, text); + + local sx = xmin - 40; + local sy = y - 15; + + if can_click and mouse_clipped(xmin-10, ymin, xmax-xmin, ymax-ymin) then + hovered = hoverindex; + end + + if current then + -- Draw checkmark + gfx.BeginPath(); + gfx.FillColor(0, 236, 0,100); + gfx.Text(text, x, y) + end +end; + +draw_user = function(user, x, y , w, h, rank, breadx,bready) + local name = user.name + local showthing = false + if user.id == user_id then + name = name + end + if user.id == host then + name = name + elseif user.ready then + showthing = true + elseif not user.ready then + showthing = false + end + + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE); + gfx.FillColor(255,255,255) + gfx.FontSize(42) + + + gfx.FontSize(30) + gfx.BeginPath(); + gfx.ImageRect(x, y ,w, h,m_4pb_panels,1,0) + gfx.Text(name, x+135, y+51) + + + if showthing == true then + local jw , jh = gfx.ImageSize(ready_bt); + gfx.BeginPath(); + gfx.ImageRect(x+breadx, y+bready, jw/1.18, jh/1.18, ready_bt,1,0); + elseif showthing == false then + local jw , jh = gfx.ImageSize(ready_bt); + gfx.BeginPath(); + gfx.ImageRect(x+breadx, y+bready, jw/1.18, jh/1.18, ready_bt,0,0); + end + +end; + +function render_loading() + if not loading then return end + gfx.Save() + gfx.ResetTransform() + gfx.BeginPath() + gfx.MoveTo(resX, resY) + gfx.LineTo(resX - 350, resY) + gfx.LineTo(resX - 300, resY - 50) + gfx.LineTo(resX, resY - 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...", resX - 20, resY - 3) + gfx.Restore() +end + +function render_info() + + if searchStatus then + gfx.BeginPath() + gfx.FillColor(255,255,255) + gfx.FontSize(20); + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) + gfx.Text(searchStatus, 3, 3) + end + +end + + +draw_diff_icon = function(diff, x, y, w, h) + difbar.render(deltaTime, x, y, 1, diff.difficulty, diff.level); +end + +local doffset = 0; +local timer = 0; + +local possy = 1095; +local possx = 150; + +draw_diffs = function(diffs, x, y, w, h, selectedDiff) + local diffWidth = w/2 + local diffHeight = w/2 + local diffCount = #diffs + gfx.Scissor(x+84 + possx,y + possy,w/2.451,h) + for i = math.max(selectedDiff - 2, 1), math.max(selectedDiff - 1,1) do + local diff = diffs[i] + local xpos = x + ((w/2 - diffWidth/2) + (selectedDiff - i + doffset)*(-0.8*diffWidth)) + if i ~= selectedDiff then + draw_diff_icon(diff, xpos + possx, y + possy, diffWidth, diffHeight, false) + end + end + + --after selected + for i = math.min(selectedDiff + 2, diffCount), selectedDiff + 1,-1 do + local diff = diffs[i] + local xpos = x + ((w/2 - diffWidth/2) + (selectedDiff - i + doffset)*(-0.8*diffWidth)) + if i ~= selectedDiff then + draw_diff_icon(diff, xpos + possx, y + possy, diffWidth, diffHeight, false) + end + end + local diff = diffs[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) + game.PlaySample("click-02") + doffset = doffset + oldDiff - newDiff +end; + +local selected_room_index = 1; +local ioffset = 0; + +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) + local second_half_rooms = math.ceil(num_rooms_visible/2) - 1 + + local start_offset = math.max(selected_room_index - first_half_rooms, 1); + local end_offset = math.min(selected_room_index + second_half_rooms + 2, #rooms); + + local start_index_offset = 1; + + -- If our selection is near the start or end we have to offset + if selected_room_index <= first_half_rooms then + start_index_offset = 0; + end_offset = math.min(#rooms, num_rooms_visible + 1) + end + if selected_room_index >= #rooms - second_half_rooms then + start_offset = math.max(1, #rooms - num_rooms_visible) + end_offset = #rooms + end + + for i = start_offset, end_offset do + local room = rooms[i]; + -- if selected room < halfvis then we start at 1 + -- if sel > #rooms - halfvis then we start at -halfvis + local offset_index = (start_offset + first_half_rooms) - i + start_index_offset + + local offsetY = (offset_index + ioffset) * (buttonHeight + 10); + local ypos = y + (h/2) - offsetY; + local status = room.current..'/'..room.max + if room.ingame then + status = status..' (IN MATCH)' + end + if room.password then + status = status..'

' + end + draw_room(room.name .. ': '.. status, resX / 2, ypos, i == selected_room_index, function() + join_room(room) + end) + end +end + +change_selected_room = function(off) + + local new_index = selected_room_index + off; + --selected_room_index = 2; + if new_index < 1 or new_index > #rooms then + return; + end + + local h = resY - 290; + + local num_rooms_visible = math.floor(h / (buttonHeight + 10)) + + local first_half_rooms = math.floor(num_rooms_visible/2) + local second_half_rooms = math.ceil(num_rooms_visible/2) - 1 + + if off > 0 and (selected_room_index < first_half_rooms or selected_room_index >= #rooms - second_half_rooms - 1) then + elseif off < 0 and (selected_room_index <= first_half_rooms or selected_room_index >= #rooms - second_half_rooms) then + else + ioffset = ioffset - new_index + selected_room_index; + end + + game.PlaySample("menu_click") + + selected_room_index = new_index; +end + +local IR_HeartbeatResponse = function(res) + if res.statusCode == IRData.States.Success then + irText = res.body.serverName .. ' ' .. res.body.irVersion; + else + game.Log("Can't connect to IR!", game.LOGGER_WARNING) + end +end + +local IR_Handle = function() + if not irHeartbeatRequested then + IR.Heartbeat(IR_HeartbeatResponse) + irHeartbeatRequested = true; + end +end + +function render_lobby(deltaTime) + + local jw , jh = gfx.ImageSize(bg); + gfx.BeginPath(); + gfx.ImageRect(0, 0, resX, resY, bg,1,0); + drawIdol(deltaTime) + gfx.BeginPath(); + gfx.ImageRect(0, 0, resX, resY, bg_graid1,1,0); + gfx.ImageRect(0, 0, resX, resY, bg_graid2,1,0); + drawHeader() + gfx.BeginPath(); + m_base_part() + + m_own_info() + user_setup() + + m_info_part() + m_part() + m_s_part() + m_bpm_part() + songjacket() + + + if selected_song == nil then + if jacket == 0 then + jacket = placeholderJacket + end + else + draw_diffs(selected_song.all_difficulties, 2 + song_x_off - 150, 200, 300, 100, selected_song.diff_index+1) + + if selected_song.jacket == nil or selected_song.jacket == placeholderJacket then + selected_song.jacket = gfx.LoadImageJob(selected_song.jacketPath, placeholderJacket) + jacket = selected_song.jacket + end + end + gfx.Save() + gfx.BeginPath() + gfx.Translate(481, 1303+jacket_size/2) + gfx.ImageRect(-jacket_size/2,-jacket_size/2,jacket_size,jacket_size,jacket,1,0) + + if mouse_clipped(481-jacket_size/2,1423+-jacket_size/2,jacket_size,jacket_size) and host == user_id then + hovered = function() + missing_song = false + mpScreen.SelectSong() + end + end + gfx.Restore() +end + +drawResultScreen = function (x, y, w, h, deltaTime) + gfx.BeginPath() + + gfx.Translate(x, y); + gfx.Scale(w / 1080, h / 1920); + gfx.Scissor(0, 0, 1080, 1920); + Background.draw(deltaTime) + + gfx.GlobalAlpha(1) + + IR_Handle(); + + gfx.ResetTransform() +end + +function render_room_list(deltaTime) + + draw_rooms(175, resY - 290); + + -- Draw cover for rooms out of view + gfx.BeginPath() + gfx.FillColor(20, 20, 20) + gfx.Rect(0, 0, resX, 145) + gfx.Rect(0, resY-170, resX, 170) + gfx.Fill() + + gfx.BeginPath() + gfx.FillColor(60, 60, 60) + gfx.Rect(0, 145, resX, 2) + gfx.Rect(0, resY-170-2, resX, 2) + gfx.Fill() + + gfx.FillColor(255,255,255) + gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_BOTTOM) + gfx.FontSize(70) + gfx.Text("Multiplayer Rooms", resX/2, 100) + + + if not loading then + draw_button("Create new room", resX/2, resY-40-buttonHeight, resX*(3/4), new_room); + end +end + + +passwordErrorOffset = 0; +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.."...", resX/2, resY/4) + + gfx.FillColor(50,50,50) + gfx.BeginPath() + gfx.Rect(0, resY/2-10, resX, 40) + gfx.Fill(); + + gfx.FillColor(255,255,255) + gfx.Text("Please enter room password:", resX/2, resY/2-40) + gfx.Text(string.rep("*",#textInput.text), resX/2, resY/2+40) + if passwordError then + + gfx.FillColor(255,50,50) + gfx.FontSize(60 + math.floor(passwordErrorOffset*20)) + gfx.Text("Invalid password", resX/2, resY/2+80) + end + draw_button("Join", resX/2, resY*3/4, resX/2, mpScreen.JoinWithPassword); +end + +function render_new_room_password(delta_time) + gfx.FillColor(255,255,255) + gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_BOTTOM) + gfx.FontSize(70) + gfx.Text("Create New Room", resX/2, resY/4) + + gfx.FillColor(50,50,50) + gfx.BeginPath() + gfx.Rect(0, resY/2-10, resX, 40) + gfx.Fill(); + + gfx.FillColor(255,255,255) + gfx.Text("Enter room password:", resX/2, resY/2-40) + gfx.Text(string.rep("*",#textInput.text), resX/2, resY/2+40) + draw_button("Create Room", resX/2, resY*3/4, resX/2, mpScreen.NewRoomStep); +end +--here +function render_new_room_name(deltaTime) + gfx.BeginPath(); + gfx.LoadSkinFont("segoeui.ttf") + gfx.FillColor(255,255,255) + gfx.TextAlign(gfx.TEXT_ALIGN_CENTER, gfx.TEXT_ALIGN_BOTTOM) + gfx.FontSize(70) + gfx.Text("Create New Room", resX/2, resY/4) + + gfx.Rect(0, resY/2-10, resX, 60) + + + gfx.Text("Please enter room name:", resX/2, resY/2-40) + gfx.Text(textInput.text, resX/2, resY/2+40) + draw_button("Next", resX/2, resY*3/4, resX/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...", resX/2, resY/4) + + gfx.FillColor(50,50,50) + gfx.BeginPath() + gfx.Rect(0, resY/2-10, resX, 60) + gfx.Fill(); + + gfx.FillColor(255,255,255) + gfx.Text("Enter a display name:", resX/2, resY/2-40) + gfx.Text(textInput.text, resX/2, resY/2+40) + draw_button("Join Multiplayer", resX/2, resY*3/4, resX/2, function() + loading = true; + mpScreen.SaveUsername() + end); + +end + +render = function(deltaTime) + local resx, resy = game.GetResolution() + if resx ~= resX or resy ~= resY then + resolutionChange(resx, resy) + end + + gfx.BeginPath() + local bgImageWidth, bgImageHeight = gfx.ImageSize(backgroundImage) + gfx.Rect(0, 0, resX, resY) + gfx.FillPaint(gfx.ImagePattern(0, 0, bgImageWidth, bgImageHeight, 0, backgroundImage, 0.2)) + gfx.Fill() + + drawResultScreen((resX - fullX) / 2, 0, fullX, fullY, deltaTime) + buttonWidth = resX*(3/4); + mposx,mposy = game.GetMousePos(); + + common.stopMusic(); + + doffset = doffset * 0.9 + ioffset = ioffset * 0.9 + passwordErrorOffset = passwordErrorOffset * 0.9 + timer = (timer + deltaTime) + timer = timer % 2 + + hovered = nil; + + gfx.LoadSkinFont(normal_font); + + do_sounds(deltaTime); + + -- Room Listing View + if screenState == "inRoom" then + render_lobby(deltaTime); + elseif screenState == "roomList" then + render_room_list(deltaTime); + elseif screenState == "passwordScreen" then + render_password_screen(deltaTime); + elseif screenState == "newRoomName" then + render_new_room_name() + elseif screenState == "newRoomPassword" then + render_new_room_password() + elseif screenState == "setUsername" then + loading = false; + render_set_username() + end + render_loading(); + render_info(); + +end + +-- Ready up to play +function ready_up() + Tcp.SendLine(json.encode({topic="user.ready.toggle"})) +end + +-- Toggle hard gauage +function toggle_hard() + Tcp.SendLine(json.encode({topic="user.hard.toggle"})) +end + +-- Toggle hard gauage +function toggle_mirror() + Tcp.SendLine(json.encode({topic="user.mirror.toggle"})) +end + +function new_room() + host = user_id + owner = user_id + mpScreen.NewRoomStep() +end + +-- Toggle host rotation +function toggle_rotate() + Tcp.SendLine(json.encode({topic="room.option.rotation.toggle"})) +end + +-- Change lobby host +function change_host(user) + Tcp.SendLine(json.encode({topic="room.host.set", host=user.id})) +end + +-- Kick user +function kick_user(user) + Tcp.SendLine(json.encode({topic="room.kick", id=user.id})) +end + +-- Tell the server to start the game +function start_game() + selected_song.self_picked = false + if (selected_song == nil) then + return + end + if (start_game_soon) then + return + end + + Tcp.SendLine(json.encode({topic="room.game.start"})) +end + +-- Join a given room +function join_room(room) + host = user_id + selected_room = room; + if room.password then + mpScreen.JoinWithPassword(room.id) + else + mpScreen.JoinWithoutPassword(room.id) + end +end + +-- Handle button presses to advance the UI +button_pressed = function(button) + + if button == game.BUTTON_FXL and game.BUTTON_FXR then + if start_game_soon then + return + end + if screenState == "roomList" then + if #rooms == 0 then + new_room() + else + -- TODO navigate room selection + join_room(rooms[selected_room_index]) + end + elseif screenState == "inRoom" then + if host == user_id then + if selected_song and selected_song.self_picked then + if all_ready then + start_game() + else + missing_song = false + mpScreen.SelectSong() + end + else + missing_song = false + mpScreen.SelectSong() + end + else + ready_up() + end + end + end + + if button == game.BUTTON_BTA then + toggle_hard(); + end + if button == game.BUTTON_BTB then + toggle_mirror(); + end + if button == game.BUTTON_BTC then + toggle_rotate(); + end + if button == game.BUTTON_BTD then + for i, user in ipairs(lobby_users) do + if lobby_users[i] == user then + kick_user(user); + end + end + end +end + +-- Handle the escape key around the UI +function key_pressed(key) + if key == 27 then --escape pressed + if screenState == "roomList" then + did_exit = true; + mpScreen.Exit(); + return + end + + -- Reset room data + screenState = "roomList" -- have to update here + selected_room = nil; + rooms = {}; + selected_song = nil + selected_song_index = 1; + jacket = 0; + end + +end + +-- Handle mouse clicks in the UI +mouse_pressed = function(button) + if hovered then + hovered() + end + return 0 +end + +function init_tcp() +Tcp.SetTopicHandler("server.info", function(data) + loading = false + user_id = data.userid +end) +-- Update the list of rooms as well as get user_id for the client +Tcp.SetTopicHandler("server.rooms", function(data) + + rooms = {} + for i, room in ipairs(data.rooms) do + table.insert(rooms, room) + end +end) + +Tcp.SetTopicHandler("server.room.joined", function(data) + selected_room = data.room +end) + +local sound_time = 0; +local sound_clip = nil; +local sounds_left = 0; +local sound_interval = 0; + +function repeat_sound(clip, times, interval) + sound_clip = clip; + sound_time = 0; + sounds_left = times - 1; + sound_interval = interval; + game.PlaySample(clip) +end + +function do_sounds(deltaTime) + if sound_clip == nil then + return + end + + sound_time = sound_time + deltaTime; + if sound_time > sound_interval then + sound_time = sound_time - sound_interval; + game.PlaySample(sound_clip); + sounds_left = sounds_left - 1 + if sounds_left <= 0 then + sound_clip = nil + end + end +end + +local last_song = nil + +-- Update the current lobby +Tcp.SetTopicHandler("room.update", function(data) + -- Update the users in the lobby + lobby_users = {} + local prev_all_ready = all_ready; + all_ready = true + for i, user in ipairs(data.users) do + table.insert(lobby_users, user) + if user.id == user_id then + user_ready = user.ready + end + if not user.ready then + all_ready = false + end + end + + if user_id == host and #data.users > 1 and all_ready and not prev_all_ready then + repeat_sound("click-02", 3, .1) + end + + if data.host == user_id and host ~= user_id then + repeat_sound("click-02", 3, .1) + end + + if data.song ~=nil and last_song ~=data.song then + game.PlaySample("menu_click") + last_song = data.song + end + host = data.host + if data.owner then + owner = data.owner + else + owner = host + end + hard_mode = data.hard_mode + mirror_mode = data.mirror_mode + do_rotate = data.do_rotate + if data.start_soon and not start_game_soon then + repeat_sound("click-01", 5, 1) + end + start_game_soon = data.start_soon + +end) +end diff --git a/scripts/multiplayerscreen.lua b/scripts/multiplayerscreen.lua index da2dcc3..6c4e0e4 100644 --- a/scripts/multiplayerscreen.lua +++ b/scripts/multiplayerscreen.lua @@ -2,7 +2,7 @@ json = require "json" local common = require('common.common'); local difbar = require("components.diff_rectangle"); -local spinnybg = require('components.background'); +local Background = require('components.background'); local msg = game.GetSkinSetting("MSG"); local normname = game.GetSkinSetting("username") @@ -29,29 +29,50 @@ local bg = gfx.CreateSkinImage("multi/lobby/bg.png", 1); local bg_graid1 = gfx.CreateSkinImage("multi/lobby/gradient_bottom.png", 1); local bg_graid2 = gfx.CreateSkinImage("multi/lobby/gradient_top.png", 1); +local backgroundImage = gfx.CreateSkinImage("bg_pattern.png", gfx.IMAGE_REPEATX | gfx.IMAGE_REPEATY) + local idolAnimation = gfx.LoadSkinAnimation('crew/anim/'..creww, 1 / 30, 0, true); local idolAnimTransitionScale = 0; - -local resX,resY = game.GetResolution() - -local mposx = 0; -local mposy = 0; -local hovered = nil; -local buttonWidth = resX*(3/4); -local buttonHeight = 20; -local buttonBorder = 2; -local portrait -local jacket_size; - -local BAR_ALPHA = 191; -local HEADER_HEIGHT = 100 - local resx, resy = game.GetResolution() local desw = 1080 local desh = 1920 local scale; +local rightPanelX = 283; +local rightPanelY = 1187; + +local leftPanelX = 575; +local leftPanelY = 1472; + +local bottomPanelX = 1; +local bottomPanelY = 1250; + +local jacketPanelX = 333; +local jacketPanelY = 1284; + +local ownPanelX = 0; +local ownPanelY = 1310; + +local roomNamePanelX = 429; +local roomNamePanelY = 1142; + +local bpmPanelX = 0; +local bpmPanelY = 1692; + +local infPanelX = 475 +local infPanelY = 1590 + +local mposx = 0; +local mposy = 0; +local hovered = nil; +local buttonHeight = 20; +local buttonBorder = 2; +local portrait + +local BAR_ALPHA = 191; +local HEADER_HEIGHT = 100 + game.LoadSkinSample("click-02") game.LoadSkinSample("click-01") game.LoadSkinSample("menu_click") @@ -74,6 +95,9 @@ local missing_song = false; local placeholderJacket = gfx.CreateSkinImage("song_select/loading.png", 0) local did_exit = false; +-- Window variables +local resX, resY + -- Aspect Ratios local landscapeWidescreenRatio = 16 / 9 local landscapeStandardRatio = 4 / 3 @@ -84,6 +108,13 @@ local fullX, fullY local desw = 1080 local desh = 1920 +local function resolutionChange(x, y) + resX = x + resY = y + fullX = portraitWidescreenRatio * y + fullY = y +end + local irHeartbeatRequested = false; local irText = '' @@ -143,44 +174,59 @@ local drawIdol = function(deltaTime) end end -songjacket = function() -- self explanatory +songjacket = function() -- self explanatory -- done - if portrait then - split = resX - jacket_size = math.min(resX/4, resY/4); - song_x_off = 0; - else - split = resX/2 - jacket_size = math.min(resX/2, resY/2); - song_x_off = 1/2*resX; + local resx, resy = game.GetResolution() + if resx ~= resX or resy ~= resY then + resolutionChange(resx, resy) end local jw , jh = gfx.ImageSize(m_jacket); gfx.BeginPath(); - gfx.ImageRect(333, 1284, jw/1.18, jh/1.18, m_jacket,1,0); +-- gfx.ImageRect(jacketPanelX, jacketPanelY, jw/1.18, jh/1.18, m_jacket,1,0); + gfx.ImageRect(resX, resY, jw/1.18, jh/1.18, m_jacket,1,0); + + gfx.BeginPath() + gfx.ImageRect(jacketPanelX+12, jacketPanelY+19,jw/1.269,jh/1.35,jacket,1,0) + + if mouse_clipped(jacketPanelX+12, jacketPanelY+19,jw/1.269,jh/1.35) and host == user_id then + hovered = function() + missing_song = false + mpScreen.SelectSong() + end + end + + if selected_song == nil then + if jacket == 0 then + jacket = placeholderJacket + end + else + if selected_song.jacket == nil or selected_song.jacket == placeholderJacket then + selected_song.jacket = gfx.LoadImageJob(selected_song.jacketPath, placeholderJacket) + jacket = selected_song.jacket + end + end end -m_own_info = function() +m_own_info = function() -- bottom left -- done - local x = 0 - local y = 1310 gfx.BeginPath(); gfx.FontSize(40) - gfx.ImageRect(x, y, 343/1.18, 361/1.18,m_host_panel,1,0) - gfx.Text(normname, x+20, y+78) + gfx.ImageRect(ownPanelX, ownPanelY, 343/1.18, 361/1.18,m_host_panel,1,0) + gfx.Text(normname, ownPanelX+20, ownPanelY+78) gfx.FontSize(22) - gfx.Text(irText, x+5, y+288); + gfx.Text(irText, ownPanelX+5, ownPanelY+288); end -m_base_part = function() -- just the images which slide up +m_base_part = function() -- just the images which slide up -- done local jw , jh = gfx.ImageSize(m_base_panel); gfx.BeginPath(); - gfx.ImageRect(1, 1250, jw/1.17, jh/1.18, m_base_panel,1,0); + gfx.ImageRect(bottomPanelX, bottomPanelY, jw/1.17, jh/1.18, m_base_panel,1,0); gfx.BeginPath(); - gfx.ImageRect(1, 1250, jw/1.17, jh/1.18, m_anim,1,0); + gfx.ImageRect(bottomPanelX, bottomPanelY, jw/1.17, jh/1.18, m_anim,1,0); gfx.LoadSkinFont('Digital-Serial-Bold.ttf') gfx.FillColor(255,255,255) @@ -188,21 +234,21 @@ m_base_part = function() -- just the images which slide up gfx.FontSize(24) end -m_part = function() -- room name part +m_part = function() -- room name part -- done local jw , jh = gfx.ImageSize(m_panel); gfx.BeginPath(); - gfx.ImageRect(429, 1142, jw/1.175, jh/1.18, m_panel,1,0); + gfx.ImageRect(roomNamePanelX, roomNamePanelY, jw/1.175, jh/1.18, m_panel,1,0); gfx.FontSize(32); gfx.LoadSkinFont('Digital-Serial-Bold.ttf') gfx.TextAlign(gfx.TEXT_ALIGN_LEFT, gfx.TEXT_ALIGN_MIDDLE) - gfx.Text(selected_room.name, 575, 1179) + gfx.Text(selected_room.name,roomNamePanelX+146, roomNamePanelY+37) end -m_s_part = function () -- song info panel +m_s_part = function () -- song info panel -- done local jw , jh = gfx.ImageSize(m_s_panel); gfx.BeginPath(); - gfx.ImageRect(283, 1187, jw/1.175, jh/1.18, m_s_panel,1,0); + gfx.ImageRect(rightPanelX, rightPanelY, jw/1.175, jh/1.18, m_s_panel,1,0); gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_LEFT); gfx.FillColor(255,255,255) @@ -210,82 +256,83 @@ m_s_part = function () -- song info panel gfx.FontSize(32) if selected_song == nil then if host == user_id then - gfx.Text("NO SONG", 535, 1236) - gfx.Text("NO ARIST", 535, 1275) + gfx.Text("NO SONG", rightPanelX+245, rightPanelY+50) + gfx.Text("NO ARIST", rightPanelX+245, rightPanelY+88) gfx.FontSize(24) - gfx.Text("NO EFFECTOR", 746, 1378) - gfx.Text("NO ILLUSTRATOR", 746, 1406) + gfx.Text("NO EFFECTOR", rightPanelX+463, rightPanelY+191) + gfx.Text("NO ILLUSTRATOR", rightPanelX+463, rightPanelY+219) gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) gfx.FontSize(22) - gfx.Text("BPM ?",780, 1307) + gfx.Text("BPM ?",rightPanelX+497, rightPanelY+118) else if missing_song then - gfx.Text("MISSING SONG!!!!", 535, 1235) - gfx.Text("MISSING ARIST!!!!", 535, 1275) + gfx.Text("MISSING SONG!!!!", rightPanelX+245, rightPanelY+50) + gfx.Text("MISSING ARIST!!!!", rightPanelX+245, rightPanelY+88) gfx.FontSize(24) - gfx.Text("MISSING EFFECTOR!!!!", 744, 1378) - gfx.Text("MISSING ILLUSTRATOR!!!!", 744, 1406) + gfx.Text("MISSING EFFECTOR!!!!", rightPanelX+463, rightPanelY+191) + gfx.Text("MISSING ILLUSTRATOR!!!!", rightPanelX+463, rightPanelY+219) else - gfx.Text("HOST IS SELECTING SONG", 535, 1235) - gfx.Text(" ", 535, 1275) + gfx.Text("HOST IS SELECTING SONG", rightPanelX+245, rightPanelY+50) + gfx.Text(" ", rightPanelX+245, rightPanelY+88) gfx.FontSize(24) - gfx.Text(" ", 746, 1378) - gfx.Text(" ", 746, 1406) + gfx.Text(" ", rightPanelX+463, rightPanelY+191) + gfx.Text(" ", rightPanelX+463, rightPanelY+219) gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) gfx.FontSize(22) - gfx.Text("BPM ?",780, 1307) + gfx.Text("BPM ?",rightPanelX+497, rightPanelY+118) end end else if selected_song.min_bpm ~= selected_song.max_bpm then gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) gfx.FontSize(22); - gfx.Text("BPM",777, 1307) + gfx.Text("BPM",rightPanelX+497, rightPanelY+118) gfx.FontSize(26); gfx.Text(string.format("%.0f - %.0f", selected_song.min_bpm, selected_song.max_bpm), - 780 + 77, 1307) + rightPanelX+497 + 77, rightPanelY+118) else gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) gfx.FontSize(22); - gfx.Text("BPM",777, 1307) + gfx.Text("BPM",rightPanelX+497, rightPanelY+118) gfx.Text(string.format("%.0f", selected_song.min_bpm), - 780 + 77, 1307) + rightPanelX+497 + 77, rightPanelY+118) end gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_LEFT); gfx.FontSize(32); - gfx.Text(selected_song.title, 535, 1236) - gfx.Text(selected_song.artist, 535, 1275) + gfx.Text(selected_song.title, rightPanelX+245, rightPanelY+50) + gfx.Text(selected_song.artist, rightPanelX+245, rightPanelY+88) gfx.FontSize(24) - gfx.Text(selected_song.effector, 746, 1377) - gfx.Text(selected_song.illustrator, 746, 1406) + 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) end end m_bpm_part = function () -- bpm and lane speed local jw , jh = gfx.ImageSize(m_bpm_panel); gfx.BeginPath(); - gfx.ImageRect(0, 1692, jw/1.18, jh/1.18, m_bpm_panel,1,0); + gfx.ImageRect(bpmPanelX, bpmPanelY, jw/1.18, jh/1.18, m_bpm_panel,1,0); gfx.FontSize(32) if selected_song == nil then if host == user_id then gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) gfx.FontSize(32) - gfx.Text("BPM ?",76, 1788) - gfx.Text("LANE-SPEED ?",76, 1832) + gfx.Text("BPM ?",bpmPanelX+76, bpmPanelY + 96) + gfx.Text("LANE-SPEED ?",bpmPanelX+76, bpmPanelY + 140) else if missing_song then gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) gfx.FontSize(32) - gfx.Text("BPM ?",76, 1788) - gfx.Text("LANE-SPEED ?",76, 1832) + gfx.Text("BPM ?",bpmPanelX+76, bpmPanelY + 96) + gfx.Text("LANE-SPEED ?",bpmPanelX+76, bpmPanelY + 140) else gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP) gfx.FontSize(32) - gfx.Text("BPM ?",76, 1788) - gfx.Text("LANE-SPEED ?",76, 1832) + gfx.Text("BPM ?",bpmPanelX+76, bpmPanelY + 96) + gfx.Text("LANE-SPEED ?",bpmPanelX+76, bpmPanelY + 140) end end end @@ -296,27 +343,27 @@ m_bpm_part = function () -- bpm and lane speed if selected_song.min_bpm ~= selected_song.max_bpm then - gfx.Text("BPM",76, 1788) + gfx.Text("BPM",bpmPanelX+76, bpmPanelY + 96) gfx.Text(string.format("%.0f - %.0f", selected_song.min_bpm, selected_song.max_bpm), - 76 + 75, 1788) + bpmPanelX+ 76 + 75, bpmPanelY + 96) - gfx.Text("LANE-SPEED",76, 1832) + gfx.Text("LANE-SPEED",bpmPanelX+76, bpmPanelY + 140) gfx.Text(string.format("%.2f = %.0f", selected_song.hispeed, selected_song.speed_bpm * selected_song.hispeed), - 76 + 175, 1832) + bpmPanelX +76 + 175, bpmPanelY + 140) else gfx.FontSize(32); - gfx.Text("BPM",76, 1788) + gfx.Text("BPM",bpmPanelX+76, bpmPanelY + 96) gfx.Text(string.format("%.0f", selected_song.min_bpm), - 76 + 75, 1788) + bpmPanelX+ 76 + 75, bpmPanelY + 96) - gfx.Text("LANE-SPEED",76, 1832) + gfx.Text("LANE-SPEED",bpmPanelX+76, bpmPanelY + 140) gfx.Text(string.format("%.2f = %.0f", selected_song.hispeed, selected_song.speed_bpm * selected_song.hispeed), - 76 + 175, 1832) + bpmPanelX + 76 + 175, bpmPanelY + 140) end end end @@ -324,19 +371,19 @@ end m_info_part = function () -- the info panel local jw , jh = gfx.ImageSize(m_info_panel); gfx.BeginPath(); - gfx.ImageRect(475, 1590, jw/1.18, jh/1.18, m_info_panel,1,0); + gfx.ImageRect(infPanelX, infPanelY, jw/1.18, jh/1.18, m_info_panel,1,0); - draw_checkbox("Excessive", 635, 1639.25, toggle_hard, hard_mode, not start_game_soon) - draw_checkbox("Mirror",676.2, 1677.5, toggle_mirror, mirror_mode, not start_game_soon) - draw_checkbox("Rotate",854.1, 1677.5, toggle_rotate, do_rotate, + draw_checkbox("Excessive",infPanelX+160, infPanelY+49.25, toggle_hard, hard_mode, not start_game_soon) + draw_checkbox("Mirror",infPanelX+201.2, infPanelY+87.5, toggle_mirror, mirror_mode, not start_game_soon) + draw_checkbox("Rotate",infPanelX+379.1, infPanelY+87.5, toggle_rotate, do_rotate, (owner == user_id or host == user_id) and not start_game_soon) gfx.FillColor(255,255,255,100) - gfx.Text("Leave",892.5, 1640) + gfx.Text("Leave",infPanelX+417.5, infPanelY+50) gfx.FillColor(255,255,255) gfx.FontSize(24) --- gfx.Text("FX-L/FX-R TO READY UP",765.5,1859) - gfx.Text("FX-L/FX-R TO EXCEED SEX",765.5,1859) +-- gfx.Text("FX-L/FX-R TO READY UP",infPanelX+290.5,infPanelY+269) + gfx.Text("FX-L/FX-R TO EXCEED SEX",infPanelX+290.5,infPanelY+269) end user_setup = function () -- (semi new) user layering @@ -698,6 +745,11 @@ end function render_lobby(deltaTime) + local resx, resy = game.GetResolution() + if resx ~= resX or resy ~= resY then + resolutionChange(resx, resy) + end + local jw , jh = gfx.ImageSize(bg); gfx.BeginPath(); gfx.ImageRect(0, 0, resX, resY, bg,1,0); @@ -717,38 +769,25 @@ function render_lobby(deltaTime) m_s_part() m_bpm_part() songjacket() +end - - if selected_song == nil then - if jacket == 0 then - jacket = placeholderJacket - end - else - draw_diffs(selected_song.all_difficulties, split/2 + song_x_off - 150, 200, 300, 100, selected_song.diff_index+1) - - if selected_song.jacket == nil or selected_song.jacket == placeholderJacket then - selected_song.jacket = gfx.LoadImageJob(selected_song.jacketPath, placeholderJacket) - jacket = selected_song.jacket - end - end - gfx.Save() +drawResultScreen = function (x, y, w, h, deltaTime) gfx.BeginPath() - gfx.Translate(481, 1303+jacket_size/2) - gfx.ImageRect(-jacket_size/2,-jacket_size/2,jacket_size,jacket_size,jacket,1,0) - if mouse_clipped(481-jacket_size/2,1423+-jacket_size/2,jacket_size,jacket_size) and host == user_id then - hovered = function() - missing_song = false - mpScreen.SelectSong() - end - end - gfx.Restore() + gfx.Translate(x, y); + gfx.Scale(w / 1080, h / 1920); + gfx.Scissor(0, 0, 1080, 1920); + Background.draw(deltaTime) + + gfx.GlobalAlpha(1) + + IR_Handle(); + + gfx.ResetTransform() end function render_room_list(deltaTime) - spinnybg.draw(deltaTime); - draw_rooms(175, resY - 290); -- Draw cover for rooms out of view @@ -855,12 +894,16 @@ function render_set_username(deltaTime) end render = function(deltaTime) - resX,resY = game.GetResolution(); + local resx, resy = game.GetResolution() + if resx ~= resX or resy ~= resY then + resolutionChange(resx, resy) + end + + + buttonWidth = resX*(3/4); mposx,mposy = game.GetMousePos(); - portrait = resY > resX - IR_Handle() common.stopMusic(); doffset = doffset * 0.9 diff --git a/textures/multi/lobby/song_panel.png b/textures/multi/lobby/song_panel.png index aa7e782c3e963fed427fbbf5e3f15e825ef14fa9..14c8c2223fcc18e3c58a9d90274bc6c59664d649 100644 GIT binary patch delta 181488 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 z