WardrobeShopView = WardrobeShopView or BaseClass(BaseItem) local WardrobeShopView = WardrobeShopView WardrobeShopView.SHOP_TYPE = { SINGLE = 1, DOUBLE = 2, } local table_insert = table.insert function WardrobeShopView:__init() self.base_file = "wardrobe" self.layout_file = "WardrobeShopView" self.model = WardrobeModel:GetInstance() self.cur_tab_index = 1 self.tab_item_list = {}--左边tab self.top_goods_item_list = {}--主打商品表 self.shop_bg_position = { [1] = {x = 30.5, y = 7.5}, [2] = {x = 140.5, y = 90.5}, } self.ani_left = -200 self.ani_right = 400 self.adjust_mid = {left = 50, right = 640} self:Load() end function WardrobeShopView:Load_callback() self.nodes = { "right/help_btn:obj", "right/bg:raw", "right/item_scroll/Viewport/item_con", "right/item_scroll:obj", "left/tab_con", "right/shop_scroll/Viewport/shop_item", "right/shop_scroll:obj", --中间总览 "mid/total_mid_con/icon_image:obj:img", "mid/icon_small_image:obj:img", "mid/total_mid_con/wardrobe_text:txt", "mid/total_mid_con:obj", --中间商城 "mid/shop_mid_con/shop_bg2:obj:img", "mid/shop_mid_con/shop_bg1:obj:img", "mid/shop_mid_con:obj", "mid/shop_mid_con/tip_bg:obj", "mid/shop_mid_con/tip_text:tmp", "mid/shop_mid_con/shop_bg2/shop_item_con2", "mid/shop_mid_con/shop_bg1/shop_item_con1", } self:GetChildren(self.nodes) lua_resM:setOutsideImageSprite(self, self.shop_bg1_img, GameResPath.GetWardrobeImage("wardrobe_shop_mid_bg")) lua_resM:setOutsideImageSprite(self, self.shop_bg2_img, GameResPath.GetWardrobeImage("wardrobe_shop_mid_bg")) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function WardrobeShopView:AddEvents( ) local function on_click( target ) if self.help_btn_obj == target then GlobalEventSystem:Fire(EventName.OPEN_INSTRUCTION_VIEW, 42200) end end AddClickEvent(self.help_btn_obj, on_click) local function on_update_total( ) self:UpdateTabItem() self:UpdateTotalList() end self.on_update_total_id = self.model:BindOne("wardrobe_total_info", on_update_total) local function on_update_shop( ) self:UpdateShopList() end self.on_update_shop_id = self.model:BindOne("wardrobe_shop_info", on_update_shop) end function WardrobeShopView:UpdateView( ) self:UpdateTabItem() self:SwitchTab(self.cur_tab_index) end function WardrobeShopView:SetData( index, sub_index ) self.cur_tab_index = sub_index or self.cur_tab_index if sub_index then self.model:Fire(WardrobeConst.REQ_WARDROBE_SCMD, 42202, sub_index - 1) end if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function WardrobeShopView:SwitchTab( index ) if self.cur_tab_index ~= index and index ~= 1 then self.model:Fire(WardrobeConst.REQ_WARDROBE_SCMD, 42202, index - 1) end self.cur_tab_index = index self.icon_small_image_obj:SetActive(self.cur_tab_index ~= 1) self.item_scroll_obj:SetActive(self.cur_tab_index == 1) self.shop_scroll_obj:SetActive(self.cur_tab_index ~= 1) self.total_mid_con_obj:SetActive(self.cur_tab_index == 1) self.shop_mid_con_obj:SetActive(self.cur_tab_index ~= 1) if self.cur_tab_index == 1 then--选中总览了 self:UpdateTotalList() else self:UpdateShopList() end for i,v in ipairs(self.tab_item_list) do v:SetItemSelect(self.cur_tab_index) end end function WardrobeShopView:UpdateTabItem( ) local data = DeepCopy(Config.Wardrobeopen) table_insert(data, 1, {store_name = "风采总览",condition = 0, icon = 0}) local height = 56 local y_offset = 10 local function call_back_func( index) self:SwitchTab(index) end if not self.tab_data then self.tab_data = data end for i,v in ipairs(data) do local item = self.tab_item_list[i] if not item then item = WardrobeVerTabItem.New(self.tab_con) item:SetPosition(0, -(i - 1) * (height + y_offset)) self.tab_item_list[i] = item end item:SetData(v,i, call_back_func, self.cur_tab_index) end end function WardrobeShopView:UpdateShopList( ) local cfg_data = Config.Wardrobeopen if cfg_data and cfg_data[self.cur_tab_index - 1] then local cur_stage = self.model:GetMyWardrobeStage() if cur_stage < cfg_data[self.cur_tab_index - 1].condition then self.tip_bg_obj:SetActive(true) if Config.Wardrobestage[cfg_data[self.cur_tab_index - 1].condition] then self.tip_text_tmp.text = string.format("风采值达到 %s 解锁本货柜", HtmlColorTxt(Config.Wardrobestage[cfg_data[self.cur_tab_index - 1].condition].low_value, "#FDFFC2")) end else self.tip_bg_obj:SetActive(false) self.tip_text_tmp.text = "" end else self.tip_bg_obj:SetActive(false) self.tip_text_tmp.text = "" end if not self.tab_data or self.cur_tab_index == 1 then--没有构造好数据的时候不让进来 return end local cfg_data = self.model:GetWardrobeShopCFGByID(self.tab_data[self.cur_tab_index].store_id) local server_data = self.model:GeteWardrobeShopInfo(self.tab_data[self.cur_tab_index].store_id) local data = {} local top_data = {} for i,v in pairsByKeys(cfg_data) do if v.is_top == 1 then--是主打 if TableSize(top_data) < 2 and server_data[v.pos] then--有服务端数据才插进去 table_insert(top_data, v) elseif server_data[v.pos] then--有服务端数据才插进去 table_insert(data, v) end elseif server_data[v.pos] then--有服务端数据才插进去 table_insert(data, v) end end self:UpdateTopGoods(top_data, server_data) if not self.shop_item_list_com then self.shop_item_list_com = self:AddUIComponent(UI.ItemListCreator) end self.shop_item_list_com:Reset() local info = { data_list = data, item_con = self.shop_item, item_class = WardrobeShopItem, item_height = 157, item_width = 126, start_x = 0, space_x = 2, start_y = 0, scroll_view = self.shop_scroll.transform, create_frequency = 0.05, is_scroll_back_on_update = false, child_names = child_names, on_update_item = function(item, i, v) item:SetData(v,i) item:SetServerData(server_data[v.pos]) end, } self.shop_item_list_com:UpdateItems(info) end --更新主打商品 function WardrobeShopView:UpdateTopGoods( data, server_data) local len = TableSize(data) for i,v in ipairs(self.top_goods_item_list) do v:SetVisible(false) end if len == 0 then self.shop_bg1_obj:SetActive(false) self.shop_bg2_obj:SetActive(false) elseif len == 1 then self.shop_bg1_obj:SetActive(true) self.shop_bg2_obj:SetActive(false) SetAnchoredPosition(self.shop_bg1,self.shop_bg_position[len].x, self.shop_bg_position[len].y) else self.shop_bg1_obj:SetActive(true) self.shop_bg2_obj:SetActive(true) SetAnchoredPosition(self.shop_bg1,self.shop_bg_position[len].x, self.shop_bg_position[len].y) end for i,v in ipairs(data) do local item = self.top_goods_item_list[i] if not item then item = WardrobeShopItem.New(self["shop_item_con"..i]) self.top_goods_item_list[i] = item end item:SetData(v,i) item:SetServerData(server_data[v.pos]) end end function WardrobeShopView:UpdateTotalList( ) local total_data = self.model:GetWardrobeTotalInfo() local total_list = total_data.wardrobe_list or {} self.wardrobe_text_txt.text = total_data.sum_wardrobe_value local res_name = string.format("wardrobe_level%s", total_data.stage or 1) lua_resM:setOutsideImageSprite(self, self.icon_image_img, GameResPath.GetWardrobeImage(res_name), true) lua_resM:setOutsideImageSprite(self, self.icon_small_image_img, GameResPath.GetWardrobeImage(res_name), true) if not self.total_item_list_com then self.total_item_list_com = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = total_list, item_con = self.item_con, item_class = WardrobeTotalItem, item_height = 107, start_x = 11, start_y = -8, scroll_view = self.item_scroll.transform, create_frequency = 0.05, is_scroll_back_on_update = false, child_names = child_names, on_update_item = function(item, i, v) item:SetData(v,i) end, } self.total_item_list_com:UpdateItems(info) end function WardrobeShopView:UpdateMidInfo( ) end function WardrobeShopView:__delete( ) for i,v in ipairs(self.tab_item_list) do v:DeleteMe() v = nil end self.tab_item_list = {} if self.on_update_total_id then self.model:UnBind(self.on_update_total_id) self.on_update_total_id = nil end if self.on_update_shop_id then self.model:UnBind(self.on_update_shop_id) self.on_update_shop_id = nil end for i,v in ipairs(self.top_goods_item_list) do v:DeleteMe() v = nil end self.top_goods_item_list = {} end