|
|
- MarketAttentionView = MarketAttentionView or BaseClass(BaseItem)
- local MarketAttentionView = MarketAttentionView
- local table_insert = table.insert
-
- function MarketAttentionView:__init()
- self.base_file = "market"
- self.layout_file = "MarketAttentionView"
- self.model = MarketModel:GetInstance()
- self.sell_type = 1
- self.is_first = true--是否第一次进入
- self.series_limit = 0
- self.career_limit = RoleManager.Instance.mainRoleInfo.career--默认拿自己的防具
- self.color = 99
- self.tab_item_list = {}
- self:Load()
- end
-
- function MarketAttentionView:Load_callback()
- self.nodes = {
- "series_con:obj","right_scroll","series_con/series_drop","color_con:obj","clean_btn:obj",
- "left_scroll/Viewport/left_con","right_scroll/Viewport/right_con","left_scroll","color_con/color_drop",
- "career_con/career_drop", "career_con/career_text:tmp", "career_con:obj",
- }
- self:GetChildren(self.nodes)
- self:InitDropDown()
-
- self:AddEvents()
- if self.need_refreshData then
- self:UpdateView()
- end
- end
-
- function MarketAttentionView:AddEvents( )
- local function on_click( ... )
- self.model:Fire(MarketModel.REQUEST_CCMD_EVENT, 15516, self.sell_type or self.last_sell_type, self.sell_sub_type)
- end
- AddClickEvent(self.clean_btn_obj, on_click)
- end
-
- function MarketAttentionView:InitDropDown()
- local list = {}
- local cfg_color = Config.Marketgoodsselectbycolor
- table.insert(list,"所有品质")
- for i,v in ipairs(cfg_color) do
- table.insert(list, v.describe)
- end
- self.color_index = 1
- local function update_color_func(index)
- self.color_index = index
- if index == 1 then
- self.color = 99
- else
- self.color = index-1
- end
- self.need_reset = true
- self:UpdateGoodsList()
- end
-
- local prefab_data = {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", offset_y = -#list*ComboxItem.Height-9, show_type = "down"}
- if not self.combox_color then
- self.combox_color = Combox.New(self.color_drop,list,update_color_func,122,38,nil,prefab_data)
- else
- self.combox_color:ResetData(list,self.color_index,update_color_func,122,38)
- end
-
- local list = {}
- local cfg_lv = Config.Marketgoodsselectbylev
- table.insert(list,"不限套装")
- for i,v in ipairs(cfg_lv) do
- table.insert(list, v.stage.."代")
- end
- local function update_series_func(index)
- self.series_index = index
- if index == 1 then
- self.series_limit = 0
- else
- self.series_limit = cfg_lv[index-1].id
- end
- self.need_reset = true
- self:UpdateGoodsList()
- end
-
- local prefab_data = {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", offset_y = -#list*ComboxItem.Height-9, show_type = "down"}
- if not self.combox_series then
- self.combox_series = Combox.New(self.series_drop,list,update_series_func,122,38,nil,prefab_data)
- else
- self.combox_series:ResetData(list,self.series_index,update_series_func,122,38)
- end
-
- local list = {}
- local cfg_career = Config.Marketgoodsselectbycareer
- table.insert(list,"不限职业")
- for i,v in ipairs(cfg_career) do
- table.insert(list, v.describe)
- end
- local function update_career_func(index)
- self.career_index = index
- if index == 1 then
- self.career_limit = 0
- else
- self.career_limit = cfg_career[index-1].id
- end
- if not self.is_first then
- if self.cur_hor_tab_index == 1 then
- self.model:CleanMarketGoodsInfoByType(self.sell_type or self.last_sell_type, self.sell_sub_type)
- else
- self.model:CleanMarketGuildGoodsInfoByType(self.sell_type or self.last_sell_type, self.sell_sub_type)
- end
- self.need_reset = true
- self:UpdateGoodsList()
- end
- end
-
- local prefab_data = {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", offset_y = -#list*ComboxItem.Height-9, show_type = "down"}
- if not self.combox_career then
- self.combox_career = Combox.New(self.career_drop,list,update_career_func,122,38,nil,prefab_data)
- else
- self.combox_career:ResetData(list,self.career_index,update_career_func,122,38)
- end
- end
-
- function MarketAttentionView:UpdateView( )
- self:UpdateVerTabBtns(true)
- end
-
- function MarketAttentionView:UpdateVerTabBtns( need_refresh )
- self.tab_cfg = self.model:GetMarketGoodsCFG()
- self.tab_creator = self.tab_creator or self:AddUIComponent(UI.ItemListCreator)
- -- 声明点击回调
- local data = {}
- if (self.sell_type and need_refresh) or self.tab_all_close then
- for i,v in pairsByKeys(self.tab_cfg) do
- if i == self.sell_type then--如果是当前选中的第一层
- table_insert(data, DeepCopy(v))
- data[#data].is_tab = true
- table_insert(data, {name = "全部", is_zero = true, sell_sub_type = 0, sell_type = i})--为了插一个全部
- for ii,vv in pairsByKeys(v) do
- table_insert(data, DeepCopy(vv))
- end
- else
- table_insert(data, DeepCopy(v))
- data[#data].is_tab = true
- end
- end
- else
- data = self.tab_data
- end
- if not self.sell_sub_type then--没选中就默认选第一个
- self.sell_sub_type = 0
- end
- self.tab_data = data
- local call_back = function(data, sell_type, sell_sub_type)
- local need_refresh = self.sell_type ~= sell_type
- self.need_reset = true
- if sell_type == 0 then
- self.career_limit = 0--热卖的话就不用筛职业
- elseif sell_type ~= 0 and sell_type ~= 1 and sell_type ~= 3 then --其他类别的 不筛选职业和套装
- self.career_limit = 0
- self.series_limit = 0
- elseif sell_type == 1 and need_refresh then --切页签了 要默认筛自己的防具
- local cfg_career = MarketConst.Sex
- local career = RoleManager.Instance.mainRoleInfo.career
- local career_index = self.model:GetMarketDefultSelectIndexByType(MarketConst.FliterType.Armor, career)
- self.career_limit = cfg_career[career_index-1].id
- elseif sell_type == 3 and need_refresh then --切页签了 要默认筛自己的武器
- local career = RoleManager.Instance.mainRoleInfo.career
- -- local cfg_career = MarketConst.Career
- -- local career_index = self.model:GetMarketDefultSelectIndexByType(MarketConst.FliterType.Armor, career)
- -- self.career_limit = self.model:GetMarketFliterCareerBySex(cfg_career[career_index-1].id)
- self.career_limit = career
- end
- if not need_refresh and not sell_sub_type then--如果不需要刷新 且点到了tab 意思就是要收起来tab
- self.need_reset = false
- self.tab_all_close = true
- self.last_sell_type = self.sell_type --先保存起来上一个选中的tab
- self.sell_type = nil
- else
- self.tab_all_close = false
- self.sell_type = sell_type
- end
- if sell_sub_type then
- self.sell_sub_type = sell_sub_type
- elseif need_refresh then
- self.sell_sub_type = sell_sub_type
- end
- self:UpdateVerTabBtns(need_refresh)
- self:UpdateSelectVer(need_refresh)
- end
-
- local tag_all_info = {
- data_list = data,
- item_con = self.left_con,
- item_class = MarketVerTabItem,
- item_width = 206,
- get_item_height = function(i)
- return data[i].is_tab and 56 or 48
- end,
- reuse_item_num = 12,
- start_x = 2,
- start_y = -10,
- space_y = 2,
- scroll_view = self.left_scroll,
- create_frequency = 0.01,
- on_update_item = function(item, i, v)
- item:SetData(v, i, self.sell_type, self.sell_sub_type, MarketModel.VER_TAB_TYPE.ATTENTION_TYPE)
- item:SetCallBackFunc(call_back)
- end,
- }
- self.tab_creator:UpdateItems(tag_all_info)
- if self.is_first then
- self:UpdateSelectVer(true)
- self:UpdateGoodsList()
- self.is_first = false
- end
- if need_refresh then
- self:UpdateFliter()
- end
- end
-
- --设置垂直tab选择
- function MarketAttentionView:UpdateSelectVer( need_refresh )
- self.tab_creator:IterateItems(function(item, i, v)
- item:SetSelect(self.sell_type, self.sell_sub_type)
- end)
- self:UpdateGoodsList()
- if need_refresh then
- self:ScrollToSelectItem()
- end
- end
-
- function MarketAttentionView:ScrollToSelectItem( )
- if not self.sell_sub_type then--如果没有选中第二层的item就默认选第一个
- self.sell_sub_type = 0
- end
- for i,v in ipairs(self.tab_data) do
- if v.sell_type == self.sell_type and v.sell_sub_type == self.sell_sub_type then
- self.tab_creator:ScrollToItem(i-1)
- end
- end
- end
-
- function MarketAttentionView:UpdateGoodsList( )
- local goods_list = self.model:GetMarketGoodsCFG(self.sell_type or self.last_sell_type, self.sell_sub_type) or {}
- local data = {}
- local color_pass, series_pass, career_pass
- -- local lv_min, lv_max = self.model:GetMarketFliterLv(self.series_limit)
- if self.sell_sub_type == 0 then--如果是全部 就要遍历两层
- for i,v in pairsByKeys(goods_list) do
- for ii,vv in ipairs(v) do
- if self.color ~= 99 or self.series_limit ~= 0 or self.career_limit ~= 0 then--需要筛选品质 职业 套
- if self.color ~= 99 then
- if vv.color == self.color then
- color_pass = true
- else
- color_pass = false
- end
- else
- color_pass = true
- end
-
- if color_pass then--如果颜色判断通过 判断职业限制
- career_pass = self.model:CheckMarketGoodsCanWear(self.career_limit, vv.career)
- else
- career_pass = false
- end
-
- if career_pass then--如果颜色判断通过 再判断套装限制
- if self.series_limit ~= 0 then
- if self.series_limit == vv.series then
- series_pass = true
- else
- series_pass = false
- end
- else
- series_pass = true
- end
- if series_pass then
- table_insert(data, vv)
- end
- else
-
- end
- else
- table_insert(data, vv)
- end
- end
- end
- else
- for i,v in ipairs(goods_list) do
- if self.color ~= 99 or self.series_limit ~= 0 or self.career_limit ~= 0 then--需要筛选品质 职业 套
- if self.color ~= 99 then
- if v.color == self.color then
- color_pass = true
- else
- color_pass = false
- end
- else
- color_pass = true
- end
-
- if color_pass then--如果颜色判断通过 判断职业限制
- career_pass = self.model:CheckMarketGoodsCanWear(self.career_limit, v.career)
- else
- career_pass = false
- end
-
- if career_pass then--如果职业判断通过 再判断套装限制
- if self.series_limit ~= 0 then
- if self.series_limit == v.series then
- series_pass = true
- else
- series_pass = false
- end
- else
- series_pass = true
- end
- if series_pass then
- table_insert(data, v)
- end
- end
- else
- table_insert(data, v)
- end
- end
- end
-
- local function sortfunction( a,b )
- local a_attention = self.model:IsMarketAttentionGoods(a.type_id)
- local b_attention = self.model:IsMarketAttentionGoods(b.type_id)
- if a_attention == b_attention then
- return a.type_id < b.type_id
- else
- return a_attention
- end
- end
- table.sort( data, sortfunction )
-
- if not self.goods_list_com then
- self.goods_list_com = self:AddUIComponent(UI.ItemListCreator)
- end
- if self.need_reset then
- self.goods_list_com:Reset()
- self.need_reset = false
- end
- local info = {
- data_list = data,
- item_con = self.right_con,
- scroll_view = self.right_scroll,
- item_class = MarketAttentionItem,
- start_y = 0, start_x = 8,
- create_frequency = 0.02,
- create_num_per_time = 3,
- item_height = 100,
- space_y = 0,
- on_update_item = function(item, i, v)
- item:SetData(i, v)
- end,
- }
- self.goods_list_com:UpdateItems(info)
- end
-
- --更新筛选栏状态
- function MarketAttentionView:UpdateFliter( )
- local fliter_type = self.model:GetFliterType(self.sell_type,self.sell_sub_type)
- if fliter_type == MarketConst.FliterType.Armor then
- self.career_con_obj:SetActive(true)
- self.series_con_obj:SetActive(true)
- self.color_con_obj:SetActive(true)
- self.career_text_tmp.text = "性别"
-
- local list = {}
- local cfg_career = MarketConst.Sex
- local career = RoleManager.Instance.mainRoleInfo.career
- self.career_index = self.model:GetMarketDefultSelectIndexByType(fliter_type, career)
- table.insert(list,"不限性别")
- for i,v in ipairs(cfg_career) do
- table.insert(list, v.name)
- end
- local function update_career_func(index)
- self.career_index = index
- if index == 1 then
- self.career_limit = 0
- else
- self.career_limit = self.model:GetMarketFliterCareerBySex(cfg_career[index-1].id)
- end
- if not self.is_first then
- if self.cur_hor_tab_index == 1 then
- self.model:CleanMarketGoodsInfoByType(self.sell_type or self.last_sell_type, self.sell_sub_type)
- else
- self.model:CleanMarketGuildGoodsInfoByType(self.sell_type or self.last_sell_type, self.sell_sub_type)
- end
- self.need_reset = true
- self:UpdateGoodsList()
- end
- end
- local prefab_data = {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", offset_y = -#list*ComboxItem.Height-9, show_type = "down"}
- if not self.combox_career then
- self.combox_career = Combox.New(self.career_drop,list,update_career_func,122,38,nil,prefab_data)
- else
- self.combox_career:ResetData(list,self.career_index,update_career_func,122,38,nil,true, prefab_data)
- end
- elseif fliter_type == MarketConst.FliterType.Weapon then
- self.career_con_obj:SetActive(true)
- self.series_con_obj:SetActive(true)
- self.color_con_obj:SetActive(true)
- self.career_text_tmp.text = "职业"
-
- local list = {}
- local cfg_career = MarketConst.Career
- local career = RoleManager.Instance.mainRoleInfo.career
- self.career_index = self.model:GetMarketDefultSelectIndexByType(fliter_type, career)
- table.insert(list,"不限职业")
- for i,v in ipairs(cfg_career) do
- table.insert(list, v.name)
- end
- local function update_career_func(index)
- self.career_index = index
- if index == 1 then
- self.career_limit = 0
- else
- self.career_limit = cfg_career[index-1].id
- end
- if not self.is_first then
- if self.cur_hor_tab_index == 1 then
- self.model:CleanMarketGoodsInfoByType(self.sell_type or self.last_sell_type, self.sell_sub_type)
- else
- self.model:CleanMarketGuildGoodsInfoByType(self.sell_type or self.last_sell_type, self.sell_sub_type)
- end
- self.need_reset = true
- self:UpdateGoodsList()
- end
- end
- local prefab_data = {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", offset_y = -#list*ComboxItem.Height-9, show_type = "down"}
- if not self.combox_career then
- self.combox_career = Combox.New(self.career_drop,list,update_career_func,122,38,nil,prefab_data)
- else
- self.combox_career:ResetData(list,self.career_index,update_career_func,122,38,nil,true,prefab_data)
- end
- elseif fliter_type == MarketConst.FliterType.Other then
- self.career_con_obj:SetActive(false)
- self.series_con_obj:SetActive(false)
- self.color_con_obj:SetActive(true)
- elseif fliter_type == MarketConst.FliterType.Hot then
- self.career_con_obj:SetActive(false)
- self.series_con_obj:SetActive(true)
- self.color_con_obj:SetActive(true)
- end
- end
-
- function MarketAttentionView:SetData( data )
- self.data = data
- if self.is_loaded then
- self.need_refreshData = false
- self:UpdateView()
- else
- self.need_refreshData = true
- end
- end
-
- function MarketAttentionView:__delete( )
- if self.combox_career then
- self.combox_career:DeleteMe()
- self.combox_career = nil
- end
- if self.combox_series then
- self.combox_series:DeleteMe()
- self.combox_series = nil
- end
- if self.combox_color then
- self.combox_color:DeleteMe()
- self.combox_color = nil
- end
- end
|