hengyang_client/lua_probject/base_project/Game/View/Family/FamilAllRank.lua

189 lines
6.4 KiB
Lua
Raw Normal View History

2025-06-19 14:38:23 +08:00
local FamilAllRank = {}
local M = FamilAllRank
function FamilAllRank.New(root, groupId)
local self = setmetatable({}, { __index = M })
self._father = root
self.group_id = groupId
self:init()
return self
end
function M:init()
local root = self._father
self._lastTpe = root.familyType.selectedIndex
root.familyType.selectedIndex = 0
2025-06-24 21:48:34 +08:00
local comp_rank = UIPackage.CreateObjectFromURL("ui://Family/Comp_Rank")
2025-06-19 14:38:23 +08:00
root._view:AddChild(comp_rank)
2025-07-09 21:32:02 +08:00
--[[
2025-06-19 14:38:23 +08:00
comp_rank.width = root._view.width
comp_rank.height = root._view.height
comp_rank:Center()
2025-07-09 21:32:02 +08:00
]]
local scaleY = GRoot.inst.height / comp_rank.height
local scaleX = GRoot.inst.width / comp_rank.width
comp_rank:SetScale(scaleX, scaleY)
2025-06-19 14:38:23 +08:00
self._view = comp_rank
local viewBox_leftTime = comp_rank:GetChild('left_time')
local viewBox_rightTime = comp_rank:GetChild('right_time')
local viewBtn_search = comp_rank:GetChild('btn_search')
local viewBtn_close = comp_rank:GetChild('btn_close')
self._viewList_round = comp_rank:GetChild('list_round')
self._viewList_score = comp_rank:GetChild('list_score')
self._viewList_win = comp_rank:GetChild('list_win')
viewBtn_close.onClick:Set(function()
root.familyType.selectedIndex = self._lastTpe
self._lastTpe = nil
comp_rank.visible = false
end)
local serverDayValues, serverDayItems = self:InitTime()
viewBox_leftTime.items = serverDayItems
viewBox_leftTime.values = serverDayValues
viewBox_rightTime.items = serverDayItems
viewBox_rightTime.values = serverDayValues
self.leftTimes = tonumber(serverDayValues[1])
self.rightTimes = tonumber(serverDayValues[1])
viewBox_leftTime.onChanged:Set(function()
self.leftTimes = tonumber(viewBox_leftTime.value)
end)
viewBox_rightTime.onChanged:Set(function()
self.rightTimes = tonumber(viewBox_rightTime.value)
end)
self._viewList_round:SetVirtual()
self._viewList_round.itemRenderer = handler(self, self.RoundListRenderer)
self._viewList_score:SetVirtual()
self._viewList_score.itemRenderer = handler(self, self.ScoreListRenderer)
self._viewList_win:SetVirtual()
self._viewList_win.itemRenderer = handler(self, self.WinListRenderer)
viewBtn_search.onClick:Set(function()
self:SearchRank()
end)
self:SearchRank()
end
function M:InitTime()
local timeTable = os.date("*t", os.time())
timeTable.hour = 0
timeTable.min = 0
timeTable.sec = 0
local serverDayItems = {}
local serverDayValues = {}
for i = 0, 6 do
local tempValue = os.time(timeTable) - 86400 * i
print(tempValue)
local tempItems = os.date("%Y-%m-%d", tempValue)
table.insert(serverDayItems, tempItems)
table.insert(serverDayValues, tostring(tempValue))
end
return serverDayValues, serverDayItems
end
2025-06-20 17:25:43 +08:00
function M:ShouRanks()
self._lastTpe = self._father.familyType.selectedIndex
self._father.familyType.selectedIndex = 0
self._view.visible = true
self:SearchRank()
end
2025-06-19 14:38:23 +08:00
function M:RoundListRenderer(index, obj)
local rankTable = self.roundRanks
2025-10-18 18:42:59 +08:00
obj:GetChild('text_rank').text = index + 1
2025-06-19 14:38:23 +08:00
obj:GetChild('text_id').text = rankTable[index + 1].rankTable
obj:GetChild('text_name').text = rankTable[index + 1].nick
obj:GetChild('text_other').text = rankTable[index + 1].round
ImageLoad.Load(rankTable[index + 1].portrait, obj:GetChild('btn_head')._iconObject)
end
function M:WinListRenderer(index, obj)
local rankTable = self.winRanks
2025-10-18 18:42:59 +08:00
obj:GetChild('text_rank').text = index + 1
2025-06-19 14:38:23 +08:00
obj:GetChild('text_id').text = rankTable[index + 1].rankTable
obj:GetChild('text_name').text = rankTable[index + 1].nick
obj:GetChild('text_other').text = rankTable[index + 1].win
ImageLoad.Load(rankTable[index + 1].portrait, obj:GetChild('btn_head')._iconObject)
end
function M:ScoreListRenderer(index, obj)
local rankTable = self.scoreRanks
2025-10-18 18:42:59 +08:00
obj:GetChild('text_rank').text = index + 1
2025-06-19 14:38:23 +08:00
obj:GetChild('text_id').text = rankTable[index + 1].rankTable
obj:GetChild('text_name').text = rankTable[index + 1].nick
2025-09-05 16:23:34 +08:00
obj:GetChild('text_other').text = rankTable[index + 1].score
2025-06-19 14:38:23 +08:00
ImageLoad.Load(rankTable[index + 1].portrait, obj:GetChild('btn_head')._iconObject)
end
function M:SearchRank()
local fgCtr = ControllerManager.GetController(NewGroupController)
local begin_time = math.min(self.leftTimes, self.rightTimes)
2025-06-20 17:25:43 +08:00
local end_time = math.max(self.leftTimes, self.rightTimes) + 86399
2025-06-19 14:38:23 +08:00
self:ClearingTable()
self:RecursionSearchRank(fgCtr, 0, begin_time, end_time)
end
function M:RecursionSearchRank(fgCtr, index, begin_time, end_time)
2025-11-06 17:37:53 +08:00
ViewUtil:ShowModalWait2()
2025-06-19 14:38:23 +08:00
fgCtr:FG_GetMemberRank(self.group_id, 0, index * 2, 2, begin_time, end_time, nil, function(res)
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "获取排行榜失败")
return
else
local info = res.Data
if info.ranks and #info.ranks > 0 then
self:RankTableInsert(info.ranks)
self:RecursionSearchRank(fgCtr, index + 1, begin_time, end_time)
else
2025-11-06 17:37:53 +08:00
ViewUtil.CloseModalWait2()
2025-06-19 14:38:23 +08:00
table.sort(self.roundRanks, function(a, b)
return a.round > b.round
end)
table.sort(self.winRanks, function(a, b)
return a.win > b.win
end)
table.sort(self.scoreRanks, function(a, b)
return a.score > b.score
end)
2025-10-24 19:30:35 +08:00
if #self.roundRanks > 0 then
self._view:GetController('noPeople').selectedIndex = 0
else
self._view:GetController('noPeople').selectedIndex = 1
end
2025-06-19 14:38:23 +08:00
self._viewList_round.numItems = #self.roundRanks
self._viewList_score.numItems = #self.winRanks
self._viewList_win.numItems = #self.scoreRanks
end
end
end)
end
function M:RankTableInsert(ranks)
for i = 1, #ranks do
table.insert(self.roundRanks, ranks[i])
table.insert(self.winRanks, ranks[i])
table.insert(self.scoreRanks, ranks[i])
end
end
function M:ClearingTable()
self.roundRanks = {}
self.winRanks = {}
self.scoreRanks = {}
self._viewList_round.numItems = 0
self._viewList_score.numItems = 0
self._viewList_win.numItems = 0
end
return M