Skip to content

Commit

Permalink
rebirth add multi user list
Browse files Browse the repository at this point in the history
  • Loading branch information
poco0317 committed Oct 14, 2024
1 parent a6bf9d2 commit f7137b1
Show file tree
Hide file tree
Showing 5 changed files with 200 additions and 2 deletions.
2 changes: 2 additions & 0 deletions Themes/Rebirth/BGAnimations/ScreenNetRoom overlay/default.lua
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,8 @@ t[#t+1] = Def.ActorFrame {

t[#t+1] = makeroomlist()

t[#t+1] = LoadActor("lobbyuserlist")

t[#t+1] = LoadActor("../_mouse.lua")

return t
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
local usersZoom = 0.7
local usersWidth = 70
local usersWidthSmall = 32
local usersWidthZoom = usersWidth * (1 / usersZoom)
local usersWidthSmallZoom = usersWidthSmall * (1 / usersZoom)
local usersRowSize = 10
local usersRowSizeSmall = 20
local usersX = 15
local usersY = SCREEN_TOP + 66
local usersXGap = 7
local usersYGap = 15
local usersHeight = 8

local lobbos
local top = SCREENMAN:GetTopScreen()
local posit = COLORS:getColor("multiplayer", "UserInLobby")
local r = Def.ActorFrame {
BeginCommand = function(self)
self:queuecommand("Set")
end,
InitCommand = function(self)
self:queuecommand("Set")
end,
SetCommand = function(self)
top = SCREENMAN:GetTopScreen()
lobbos = NSMAN:GetLobbyUserList()
end,
UsersUpdateMessageCommand = function(self)
self:queuecommand("Set")
end
}

local function userLabel(i)
local aux = LoadFont("Common Normal") .. {
Name = i,
BeginCommand = function(self)
self:halign(0)
self:zoom(usersZoom):diffuse(posit):queuecommand("Set")
end,
SetCommand = function(self)
if SCREENMAN:GetTopScreen():GetName() ~= "ScreenNetRoom" then
return
end
local num = self:GetName() + 0
if num <= #lobbos then
self:settext(lobbos[num])
else
self:settext("")
end
if #lobbos < 21 then
self:x(usersX + (usersWidth + usersXGap) * ((i-1) % usersRowSize))
self:y(usersY + math.floor((i-1) / usersRowSize) * (usersHeight + usersYGap))
self:maxwidth(usersWidthZoom)
else
self:x(usersX + (usersWidthSmall + usersXGap/2) * ((i-1) % usersRowSizeSmall))
self:y(usersY + math.floor((i-1) / usersRowSizeSmall) * (usersHeight + usersYGap))
self:maxwidth(usersWidthSmallZoom)
end
end,
PlayerJoinedMessageCommand = function(self)
self:queuecommand("Set")
end,
PlayerUnjoinedMessageCommand = function(self)
self:queuecommand("Set")
end,
UsersUpdateMessageCommand = function(self)
self:queuecommand("Set")
end
}
return aux
end

for i = 1, 64 do
r[#r + 1] = userLabel(i)
end

return r
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@ local t = Def.ActorFrame {
end,
}

t[#t+1] = LoadActor("../_mouse.lua")

-- header
t[#t+1] = LoadActorWithParams("../playerInfoFrame/main.lua", {visualizer = themeConfig:get_data().global.ShowVisualizer, screen = "ScreenSelectMusic"})
updateDiscordStatusForMenus()
updateNowPlaying()

local scnm = Var ("LoadingScreen")
if scnm ~= nil and scnm:find("Net") ~= nil then
t[#t+1] = LoadActor("multiuserlist")
end

t[#t+1] = LoadActor("../_mouse.lua")

return t
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
local usersZoom = 0.7
local usersWidth = 70
local usersWidthSmall = 48
local usersWidthZoom = usersWidth * (1 / usersZoom)
local usersWidthSmallZoom = usersWidthSmall * (1 / usersZoom)
local usersRowSize = 7
local usersRowSizeSmall = 10
local usersX = SCREEN_CENTER_X / 1.6
local usersY = SCREEN_TOP + 15
local usersXGap = 7
local usersYGap = 15
local usersHeight = 8

local top = SCREENMAN:GetTopScreen()
local qty = 0
local posit = COLORS:getColor("multiplayer", "UserStatusInEval")
local negat = COLORS:getColor("multiplayer", "UserStatusNotReady")
local enable = COLORS:getColor("multiplayer", "UserStatusReady")
local disabled = COLORS:getColor("multiplayer", "UserStatusInGameplay")
local highlight = COLORS:getColor("multiplayer", "UserStatusInOptions")

local r = Def.ActorFrame {
BeginCommand = function(self)
self:queuecommand("Set")
end,
InitCommand = function(self)
self:queuecommand("Set")
end,
SetCommand = function(self)
top = SCREENMAN:GetTopScreen()
end,
UsersUpdateMessageCommand = function(self)
self:queuecommand("Set")
end
}

local function userLabel(i)
local aux = LoadFont("Common Normal") .. {
Name = i,
BeginCommand = function(self)
self:halign(0)
self:zoom(usersZoom):diffuse(posit):queuecommand("Set")
end,
SetCommand = function(self)
if SCREENMAN:GetTopScreen():GetName() ~= "ScreenNetSelectMusic" then
return
end
local num = self:GetName() + 0
qty = top:GetUserQty()
if num <= qty then
local str = ""
str = str .. top:GetUser(num)
self:settext(str)
local state = top:GetUserState(num)
if state == 3 then
-- eval
self:diffuse(posit)
elseif state == 2 then
-- playing
self:diffuse(disabled)
elseif state == 4 then
-- options
self:diffuse(highlight)
else -- 1 == can play
local ready = top:GetUserReady(num)
if ready then
self:diffuse(enable)
else
self:diffuse(negat)
end
end
else
self:settext("")
end
if qty < 8 then
self:x(usersX + (usersWidth + usersXGap) * ((i-1) % usersRowSize))
self:y(usersY + 6.5)
self:maxwidth(usersWidthZoom)
elseif qty < 15 then
self:x(usersX + (usersWidth + usersXGap) * ((i-1) % usersRowSize))
self:y(usersY + math.floor((i-1) / usersRowSize) * (usersHeight + usersYGap))
self:maxwidth(usersWidthZoom)
else
self:x(usersX + (usersWidthSmall + usersXGap/3) * ((i-1) % usersRowSizeSmall))
self:y(usersY + math.floor((i-1) / usersRowSizeSmall) * (usersHeight + usersYGap))
self:maxwidth(usersWidthSmallZoom)
end
end,
PlayerJoinedMessageCommand = function(self)
self:queuecommand("Set")
end,
PlayerUnjoinedMessageCommand = function(self)
self:queuecommand("Set")
end,
UsersUpdateMessageCommand = function(self)
self:queuecommand("Set")
end
}
return aux
end

for i = 1,32 do
r[#r + 1] = userLabel(i)
end

return r
8 changes: 8 additions & 0 deletions Themes/Rebirth/Scripts/01 color_config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ local defaultConfig = {
SeparationDivider = "#ffffff", -- also some accents like slider markers and text cursors
SelectMusicBackground = "#000000", -- only used if single bg is on
},
multiplayer = {
UserStatusInEval = "#9645FD",
UserStatusNotReady = "#FF9999",
UserStatusReady = "#4CBB17",
UserStatusInGameplay = "#666666",
UserStatusInOptions = "#614080",
UserInLobby = "#614080",
},
leaderboard = {
Background = "#111111",
Border = "#000111",
Expand Down

0 comments on commit f7137b1

Please sign in to comment.