源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

106 lines
2.6 KiB

FuliSignView = FuliSignView or BaseClass(BaseItem)
local FuliSignView = FuliSignView
function FuliSignView:__init()
self.base_file = "fuli"
self.layout_file = "FuliSignView"
self.model = FuliModel:GetInstance()
self.total_reward_item = {}
self.is_first = true
self:Load()
end
function FuliSignView:Load_callback()
self.nodes = {
"down_image:obj",
"item_scroll",
"item_scroll/Viewport/item_con",
"girl:raw",
"reward_con",
"sign_day:tmp",
}
self:GetChildren(self.nodes)
lua_resM:setOutsideRawImage(self, self.girl_raw, GameResPath.GetRoleBg("fuli_sign_girl_508_715"), false)
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function FuliSignView:AddEvents( )
local function on_update_view( )
self:UpdateView()
end
self.on_update_view_id = self.model:BindOne("fuli_sign_info", on_update_view)
end
function FuliSignView:UpdateView( )
self.data = self.model:GetFuliSignInfo()
if TableSize(self.data) == 0 then
return
end
self.cfg = self.model:GetFuliSignCFGByRound(self.data.round)
if not self.item_list_com then
self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
end
-- self.item_list_com:Reset()
local function set_depth( )
self.item_list_com:IterateItems(function ( item, i )
item:SetDepth(i)
end)
end
local info = {
data_list = self.cfg,
item_con = self.item_con,
item_class = FuliSignItem,
item_width = 135,
item_height = 154,
space_x = 3,
space_y = 0,
start_x = 0,
start_y = 0,
scroll_view = self.item_scroll,
create_frequency = 0.02,
is_scroll_back_on_update = false,
final_callback = set_depth,
on_update_item = function(item, i, v)
item:SetData(i, v, self.data)
end,
}
self.item_list_com:UpdateItems(info)
if self.is_first and TableSize(self.data) > 0 then
self.is_first = false
self.item_list_com:ScrollToItem(self.data.days + 1)
end
self:UpdateTotalSignRewardItem()
self.sign_day_tmp.text = string.format("累计签到:%s", HtmlColorTxt(self.data.days .. "", "#2cf86f"))
end
function FuliSignView:UpdateTotalSignRewardItem( )
local data = self.model:GetFuliTotalSignCFGByRound(self.data.round or 1)
for i=1,5 do
local item = self.total_reward_item[i]
if not item then
item = FuliSignRewardItem.New(self.reward_con)
item:SetPosition((i-1)*136,0)
self.total_reward_item[i] = item
end
item:SetData(data[i], self.data, i)
end
end
function FuliSignView:SetData( )
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function FuliSignView:__delete( )
if self.on_update_view_id then
self.model:UnBind(self.on_update_view_id)
self.on_update_view_id = nil
end
end