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
|
|
|
|
|
local comp_rank = UIPackage.CreateObjectFromURL("ui://Family/comp_rank")
|
|
|
|
|
root._view:AddChild(comp_rank)
|
|
|
|
|
comp_rank.width = root._view.width
|
|
|
|
|
comp_rank.height = root._view.height
|
|
|
|
|
comp_rank:Center()
|
|
|
|
|
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
|
|
|
|
|
obj:GetChild('text_rank').text = index
|
|
|
|
|
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
|
|
|
|
|
obj:GetChild('text_rank').text = index
|
|
|
|
|
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
|
|
|
|
|
obj:GetChild('text_rank').text = index
|
|
|
|
|
obj:GetChild('text_id').text = rankTable[index + 1].rankTable
|
|
|
|
|
obj:GetChild('text_name').text = rankTable[index + 1].nick
|
|
|
|
|
obj:GetChild('text_other').text = d2ad(rankTable[index + 1].score)
|
|
|
|
|
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)
|
|
|
|
|
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
|
|
|
|
|
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)
|
|
|
|
|
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
|