79 lines
No EOL
2.4 KiB
Lua
79 lines
No EOL
2.4 KiB
Lua
local tableInsert = table.insert
|
|
|
|
local XUiGridRedEnvelopeInfo = require("XUi/XUiRedEnvelope/XUiGridRedEnvelopeInfo")
|
|
|
|
local XUiRedEnvelope = XLuaUiManager.Register(XLuaUi, "UiRedEnvelope")
|
|
|
|
XUiRedEnvelope.LeaderTemplateId = 0 --指挥官templateId
|
|
|
|
function XUiRedEnvelope:OnStart(itemId, rewardGoodsList)
|
|
self.ItemId = itemId
|
|
self.RewardGoodsList = rewardGoodsList
|
|
|
|
self:InitView()
|
|
self:UpdateView()
|
|
end
|
|
|
|
function XUiRedEnvelope:InitView()
|
|
self.BtnTanchuangClose.CallBack = function() self:Close() end
|
|
|
|
local itemId = self.ItemId
|
|
self.TxtTitle.text = XDataCenter.ItemManager.GetItemName(itemId)
|
|
|
|
self.DynamicTable = XDynamicTableNormal.New(self.PanelDynamicList)
|
|
self.DynamicTable:SetProxy(XUiGridRedEnvelopeInfo)
|
|
self.DynamicTable:SetDelegate(self)
|
|
end
|
|
|
|
function XUiRedEnvelope:UpdateView()
|
|
self.MemberInfos = {}
|
|
local leaderInfo = {
|
|
Id = self.LeaderTemplateId,
|
|
ItemCount = 0,
|
|
IsLuckyBoy = false,
|
|
}
|
|
|
|
local maxCount = 0
|
|
for _, v in pairs(self.RewardGoodsList) do
|
|
if v.ItemCount > maxCount then
|
|
maxCount = v.ItemCount
|
|
end
|
|
end
|
|
|
|
for _, v in pairs(self.RewardGoodsList) do
|
|
local count = v.ItemCount
|
|
if v.NpcId == leaderInfo.Id then
|
|
leaderInfo.ItemCount = v.ItemCount
|
|
leaderInfo.ItemId = v.ItemId
|
|
if maxCount and count == maxCount then
|
|
leaderInfo.IsLuckyBoy = true
|
|
maxCount = nil
|
|
end
|
|
else
|
|
local memberInfo = {}
|
|
memberInfo.Id = v.NpcId
|
|
memberInfo.ItemCount = v.ItemCount
|
|
memberInfo.ItemId = v.ItemId
|
|
if maxCount and count == maxCount then
|
|
memberInfo.IsLuckyBoy = true
|
|
maxCount = nil
|
|
end
|
|
tableInsert(self.MemberInfos, memberInfo)
|
|
end
|
|
end
|
|
|
|
self.LeaderGrid = self.LeaderGrid or XUiGridRedEnvelopeInfo.New(self.GridLeader, self)
|
|
self.LeaderGrid:Refresh(leaderInfo)
|
|
|
|
self.DynamicTable:SetDataSource(self.MemberInfos)
|
|
self.DynamicTable:ReloadDataASync()
|
|
end
|
|
|
|
function XUiRedEnvelope:OnDynamicTableEvent(event, index, grid)
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
|
|
grid:InitParent(self)
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
local memberInfo = self.MemberInfos[index]
|
|
grid:Refresh(memberInfo)
|
|
end
|
|
end |