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
|