|
|
- 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
|