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