--[[@------------------------------------------------------------------ @description:市场-上架物品界面 @author:hwr ----------------------------------------------------------------------]] MarketSalesHallView = MarketSalesHallView or BaseClass(BaseItem) local MarketSalesHallView = MarketSalesHallView local EquipModel = EquipModel function MarketSalesHallView:__init() self.base_file = "market" self.layout_file = "MarketSalesHallView" self.model = MarketModel:getInstance() self.equip_model = EquipModel:getInstance() self.mainRoleVo = RoleManager.Instance.mainRoleInfo self.item_list = {} self.bag_item_list = {} self.event_list = {} self.shelves_bag_list = {} self.column_num = 5 --一行多少个图标 self.show_count = 40 self:Load() end function MarketSalesHallView:__delete() for _, v in pairs(self.event_list) do self.model:UnBind(v) v = nil end self.event_list = {} if self.event_bag_change_id then GoodsModel:getInstance():UnBind(self.event_bag_change_id) self.event_bag_change_id = nil end for _, v in pairs(self.item_list) do v:DeleteMe() v = nil end self.item_list = {} for _, v in pairs(self.bag_item_list) do v:DeleteMe() v = nil end self.bag_item_list = {} self.mainRoleVo = nil end function MarketSalesHallView:Load_callback() self.nodes = { "bag_scroll","bag_scroll/Viewport/bag_con","sales_scroll","empty/empty_talk_image:raw", "sales_scroll/Viewport/sales_con","bg:img","empty/empty_text:tmp","empty/girl:raw","empty:obj", "all_up_btn:obj", } self:GetChildren(self.nodes) lua_resM:setOutsideRawImage(self, self.empty_talk_image_raw, GameResPath.GetViewBigBg("com_empty_bg1"), false) lua_resM:setOutsideRawImage(self, self.girl_raw, GameResPath.GetRoleBg("team_empty_bg_267_589"), false) self:InitEvent() if self.need_refreshData then self:UpdateView() end end function MarketSalesHallView:InitEvent() local onUpdatehandler = function () self:CreateShelvesItems() end self.event_list[#self.event_list +1] = self.model:BindOne("goods_shelves_list", onUpdatehandler) self.event_list[#self.event_list +1] = self.model:BindOne("under_shelves_list", onUpdatehandler) local function onChangeBagListHandler() self:UpdateBagItems() end self.event_bag_change_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler) local function on_one_up( ... ) self.model:Fire(MarketModel.REQUEST_CCMD_EVENT, 15519) end AddClickEvent(self.all_up_btn_obj, on_one_up) end function MarketSalesHallView:SetData(sub_index, param_list ) self.sub_index = sub_index self.param_list = param_list if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function MarketSalesHallView:UpdateView( ) self:CreateShelvesItems() self:UpdateBagItems() if self.param_list then if self.param_list.type == GoodsModel.TYPE.EQUIP then UIToolTipMgr:getInstance():AppendEquipTips(self.param_list.type_id, x, y,self.param_list,nil,nil,nil,"market_bag",self.param_list) else local data = { market_data = self.param_list, } UIToolTipMgr:getInstance():AppendGoodsTips(self.param_list.type_id, x, y, nil, nil,data, true) end self.param_list = nil end end function MarketSalesHallView:CreateShelvesItems() for _, v in pairs(self.item_list) do v:SetVisible(false) end local goods_list = self.model:GetOnShelvesList() local function sortfunction( a,b ) return a.up_time > b.up_time end table.sort( goods_list, sortfunction ) if TableSize(goods_list) == 0 then self.empty_obj:SetActive(true) self.empty_text_tmp.text = "赶紧试试卖个东西吧~" else self.empty_obj:SetActive(false) end -- local width = MarketSalesHallItem.WIDTH -- local height = MarketSalesHallItem.HEIGHT local width = 605 local height = 100 for i,v in ipairs(goods_list) do local item = self.item_list[i] if item == nil then item = MarketSalesHallItem.New(self.sales_con) self.item_list[i] = item end item:SetVisible(true) item:SetPosition(0, -height * (i - 1)-2) item:SetData(v,i) end self.sales_con.sizeDelta = Vector2(width, #goods_list*height) end function MarketSalesHallView:UpdateBagItems() if not self.is_loaded then return end local bag_goods_list = GoodsModel:getInstance().bag_goods_list self.shelves_bag_list = {} for k, v in pairs(bag_goods_list) do if self.model:IsGoodsCanUpShelves(v) then -- 非可提升的本职业装备才可以添加进出售列表 local can_tip, flag = self.equip_model:EquipCanShowGoodsTip(v) if not flag or flag ~= 1 then table.insert(self.shelves_bag_list, DeepCopy(v)) end end end local onSort = function (a, b) if a.is_hot_goods ~= b.is_hot_goods then return a.is_hot_goods else return a.type_id < b.type_id end end table.sort(self.shelves_bag_list, onSort) --引导数据封装 local is_help_finish = GuideModel:getInstance():IsLifelongHelpFinish(GuideModel.LIFELONG_TYPE.MARKET_SELL) if not is_help_finish then local my_career = RoleManager.Instance.mainRoleInfo.career local equip_cfg for i,v in ipairs(self.shelves_bag_list) do v.is_first_other_career_equip = false equip_cfg = self.equip_model:GetEquipmentCfg(v.type_id) if equip_cfg then local is_my_career = false for i2,v2 in pairs(equip_cfg.career) do if v2 == my_career then is_my_career = true break end end if not is_my_career then v.is_first_other_career_equip = true break end end end end for i = #self.shelves_bag_list + 1, 100 do self.shelves_bag_list[i] = {type_id = 0, goods_num = 0,index = i} end if not self.item_list_com then self.item_list_com = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = self.shelves_bag_list, item_con = self.bag_con, item_class = MarketBagItem, start_y = -2, start_x = 2, item_width = 78, item_height = 78, show_col = 5, space_x = 17, space_y = 12, scroll_view = self.bag_scroll.transform, create_frequency = 0.01, is_scroll_back_on_update = false, on_update_item = function(item, i, v) self:OnInitializeItem(item,i,v) end, } self.item_list_com:UpdateItems(info) end function MarketSalesHallView:OnInitializeItem(item,realIndex,data) if item and realIndex > 0 and realIndex <= #self.shelves_bag_list then item:SetData(self.shelves_bag_list[realIndex]) end end