123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- ---@class KLTradeHomePanel:UIKmlLuaPanelBase
- ---@field view KLTradeHomePanelView
- local KLTradeHomePanel = class(UIKmlLuaPanelBase)
- local this =KLTradeHomePanel
- local CatalogueName = {
- {"全部",0},
- {"公示区",100},
- --{"货币",1},
- {"装备",2},
- {"技能书",3},
- {"材料",4},
- {"预购",200}
- }
- local CatalogueSubName = {
- ["全部"]={},
- ["公示区"]={},
- --["货币"]={{"奇迹币",1},{"钻石",2}},
- ["装备"]={{"武器",1},{"头盔",2},{"铠甲",3},{"护腿",4},{"护手",5},{"鞋子",6},{"翅膀",7},{"大天使装备",8}},
- ["技能书"]={},
- ["材料"]={{"宝石",1},{"门票材料",2},{"翅膀材料",3},{"首饰材料",4},{"技能材料",5},{"荧光材料",6},{"大天使材料",7},{"叠加幸运石",8},{"活动材料",9}},
- ["预购"]={}
- }
- local FilterLevelName = { "阶数","一阶","二阶","三阶","四阶","五阶","六阶","七阶","八阶","九阶","十阶","十一阶","十二阶" }
- local SortTypeName = { "排序","时间↑","时间↓","价格↑","价格↓" }
- local CareerTypeName = { "职业","剑士","法师","弓箭手" }
- local QualityTypeName = {"品质","白装","卓越","首饰","卓越套装"}
- ---@class TradeCatalogueItem
- ---@field isRoot boolean 是否是根节点
- ---@field isCategory boolean 是否是分类节点
- ---@field name string 名称
- ---@field isCategoryExpand boolean 是否展开分类
- ---@field children TradeCatalogueItem[] 子节点
- ---@field parent TradeCatalogueItem 父节点
- ---@field rootType string
- ---@field subType string
- ---创建时调用一次
- function this:Init()
- GUI:OSAScrollView_Initialized(self.view.scrollview_catalogue,nil,self.CatalogueItemUpdateFun,self)
- ---@type TradeCatalogueItem[]
- self.catalogueDataList = {}
- for _, rootNameData in pairs(CatalogueName) do
- if (self.args == 3 and (_ == 3 or _ == 4 or _ == 5)) or self.args ~= 3 then
- local subNameData = CatalogueSubName[rootNameData[1]]
- ---@type TradeCatalogueItem
- local catalogueItem = {}
- catalogueItem.isRoot = true
- catalogueItem.name = rootNameData[1]
- if #subNameData ~= 0 then
- catalogueItem.isCategory = true
- catalogueItem.children = {}
- for _, data in ipairs(subNameData) do
- ---@type TradeCatalogueItem
- local child = {}
- child.name = data[1]
- child.isCategory = false
- child.isRoot = false
- child.parent = catalogueItem
- child.rootType = rootNameData[2]
- child.subType = data[2]
- table.insert(catalogueItem.children, child)
- end
- else
- catalogueItem.isCategory = false
- catalogueItem.rootType = rootNameData[2]
- catalogueItem.subType = 0
- end
- table.insert(self.catalogueDataList, catalogueItem)
- end
- end
- self.selectedItemData = self.catalogueDataList[1]
- self.selectedFilterLevel = 0
- self.selectedSortType = 0
- self.selectedCareerType = 0
- self.selectedFilterQuality = 0
- end
- function this:GetCurGoodsPanel()
- if not self.curGoodsPanel then
- if self.args == 1 then
- ---@type KLTradeCommonGoodsPanel
- self.curGoodsPanel = GUI:UIPanel_Open("dev/outui/Trade/Panel/KLTradeCommonGoods/KLTradeCommonGoodsPanel")
- elseif self.args == 2 then
- ---@type KLTradeUnionGoodsPanel
- self.curGoodsPanel = GUI:UIPanel_Open("dev/outui/Trade/Panel/KLTradeUnionGoods/KLTradeUnionGoodsPanel")
- elseif self.args == 3 then
- ---@type KLTradeCrossServerGoodsPanel
- self.curGoodsPanel = GUI:UIPanel_Open("dev/outui/Trade/Panel/KLTradeCrossServerGoods/KLTradeCrossServerGoodsPanel")
- end
- end
- return self.curGoodsPanel
- end
- ---@param item UIKmlLuaControl
- function this:CatalogueItemUpdateFun(item,index)
- local catalogueData = self.catalogueDataList[index+1]
- local txtName = GUI:GetChildById(item,"txt_name")
- local content = GUI:GetChildById(item,"btn_content")
- GUI:Text_setString(txtName,catalogueData.name)
- if catalogueData.isCategory then
- GUI:AddOnClickEvent(content,self,self.CatalogueGroupOnClick,catalogueData)
- else
- GUI:AddOnClickEvent(content,self,self.CatalogueItemOnToggle,catalogueData)
- end
- if catalogueData.isRoot then
- GUI:Image_loadTexture(content,self:IsSelectedCatalogueData(catalogueData) and "button_interface_window23" or "button_interface_window20","Atlas/Common.spriteatlas")
- --GUI:Toggle_setSrc(item,"Atlas/Common.spriteatlas","button_interface_window20","button_interface_window23")
- GUI:setContentSize(content,160,48)
- else
- GUI:Image_loadTexture(content,self:IsSelectedCatalogueData(catalogueData) and "ty_btn_click_sideeffect" or "ty_btn_click_side_n","Atlas/Common.spriteatlas")
- --GUI:Toggle_setSrc(item,"Atlas/Common.spriteatlas","bg1","ty_btn_light")
- GUI:setContentSize(content,160,40)
- end
- end
- function this:IsSelectedCatalogueData(catalogueData)
- return self.selectedCatalogueData == catalogueData or self.selectedItemData == catalogueData
- end
- ---@param data TradeCatalogueItem
- function this:CatalogueGroupOnClick(_, data)
- data.isCategoryExpand = not data.isCategoryExpand
- self:RefreshCatalogueDataList()
- self.selectedCatalogueData = data
- self.selectedItemData = self.selectedCatalogueData.children[1]
- self:RequestRefreshGoodsList()
- GUI:OSAScrollView_RefreshList(self.view.scrollview_catalogue,#self.catalogueDataList)
- end
- ---@param data TradeCatalogueItem
- function this:CatalogueItemOnToggle(_,data)
- if data.isRoot then
- self.selectedCatalogueData = nil
- else
- self.selectedCatalogueData = data.parent
- end
- self.selectedItemData = data
- GUI:OSAScrollView_RefreshList(self.view.scrollview_catalogue,#self.catalogueDataList)
-
- self:RequestRefreshGoodsList()
- end
- function this:RefreshCatalogueDataList()
- local newCatalogueDataList = {}
- for _, v in pairs(self.catalogueDataList) do
- if v.isRoot then
- table.insert(newCatalogueDataList, v)
- if v.isCategory and v.isCategoryExpand then
- if v.children then
- for _, child in pairs(v.children) do
- table.insert(newCatalogueDataList, child)
- end
- end
- end
- end
- end
- self.catalogueDataList = newCatalogueDataList
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.btn_filter_level,self,self.BtnFilterLevelOnClick)
- GUI:AddOnClickEvent(self.view.btn_sort,self,self.BtnSortOnClick)
- GUI:AddOnClickEvent(self.view.btn_filter_career,self,self.BtnFilterCareerOnClick)
- GUI:AddOnClickEvent(self.view.btn_filter_quality,self,self.BtnFilterQualityOnClick)
- GUI:AddOnClickEvent(self.view.btn_dropdown_mask,self,self.BtnDropdownMaskOnClick)
- for i = 0, 12 do
- GUI:AddOnClickEvent(self.view["btn_filter_level_" .. i],self,self.BtnFilterLevelItemOnClick,i)
- end
- self.lastSelectedLevelItem = self.view["btn_filter_level_0"]
- for i = 0, 4 do
- GUI:AddOnClickEvent(self.view["btn_sort_" .. i],self,self.BtnSortItemOnClick,i)
- end
- self.lastSelectedSortItem = self.view["btn_sort_0"]
- for i = 0, 3 do
- GUI:AddOnClickEvent(self.view["btn_filter_career_" .. i],self,self.BtnFilterCareerItemOnClick,i)
- end
- self.lastSelectedCareerItem = self.view["btn_filter_career_0"]
- for i = 0, 4 do
- GUI:AddOnClickEvent(self.view["btn_filter_quality_".. i],self,self.BtnFilterQualityItemOnClick,i)
- end
- self.lastSelectedQualityItem = self.view["btn_filter_quality_0"]
-
- SL:RegisterLUAEvent(LUA_EVENT_TRADE_BUY_REQUEST,self.RequestRefreshGoodsList,self)
-
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_TRADE_MY_PRE_GOODS,self.RequestRefreshGoodsList,self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_TRADE_BUY_GOODS,self.RequestRefreshGoodsList,self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_TRADE_PRE_ORDER,self.RES_TRADE_PRE_ORDER,self)
- end
- function this:RES_TRADE_PRE_ORDER(_,message)
- if message then
- SL:onLUAEvent(LUA_EVENT_TRADE_BUY_REQUEST)
- end
- end
- function this:BtnFilterQualityItemOnClick(item,index)
- local qualityName = QualityTypeName[index+1]
- self.selectedFilterQuality = index
- GUI:Button_setTitleText(self.view.btn_filter_quality,qualityName)
- GUI:setVisible(self.view.dropdown_list_quality,false)
- GUI:setVisible(self.view.btn_dropdown_mask,false)
- self:RequestRefreshGoodsList()
- if self.lastSelectedQualityItem then
- GUI:setColor(self.lastSelectedQualityItem,"#00000000")
- end
- self.lastSelectedQualityItem = item
- GUI:setColor(item,"#FFFFFFFF")
- end
- function this:BtnFilterCareerItemOnClick(item,index)
- local careerName = CareerTypeName[index+1]
- self.selectedCareerType = index
- GUI:Button_setTitleText(self.view.btn_filter_career,careerName)
- GUI:setVisible(self.view.dropdown_list_career,false)
- GUI:setVisible(self.view.btn_dropdown_mask,false)
-
- self:RequestRefreshGoodsList()
- if self.lastSelectedCareerItem then
- GUI:setColor(self.lastSelectedCareerItem,"#00000000")
- end
- self.lastSelectedCareerItem = item
- GUI:setColor(item,"#FFFFFFFF")
- end
- function this:BtnSortItemOnClick(item,index)
- local sortName = SortTypeName[index+1]
- self.selectedSortType = index
- GUI:Button_setTitleText(self.view.btn_sort,sortName)
- GUI:setVisible(self.view.dropdown_list_order,false)
- GUI:setVisible(self.view.btn_dropdown_mask,false)
- self:RequestRefreshGoodsList()
- if self.lastSelectedSortItem then
- GUI:setColor(self.lastSelectedSortItem,"#00000000")
- end
- self.lastSelectedSortItem = item
- GUI:setColor(item,"#FFFFFFFF")
- end
- function this:BtnFilterLevelItemOnClick(item,index)
- local levelName = FilterLevelName[index+1]
- self.selectedFilterLevel = index
- GUI:Button_setTitleText(self.view.btn_filter_level,levelName)
- GUI:setVisible(self.view.dropdown_list_level,false)
- GUI:setVisible(self.view.btn_dropdown_mask,false)
- self:RequestRefreshGoodsList()
- if self.lastSelectedLevelItem then
- GUI:setColor(self.lastSelectedLevelItem,"#00000000")
- end
- self.lastSelectedLevelItem = item
- GUI:setColor(item,"#FFFFFFFF")
- end
- function this:BtnFilterLevelOnClick()
- self:CloseAllDropdownList(self.view.dropdown_list_level)
- local visible = GUI:getVisible(self.view.dropdown_list_level)
- GUI:setVisible(self.view.dropdown_list_level,not visible)
- GUI:setVisible(self.view.btn_dropdown_mask,not visible)
- end
- function this:BtnSortOnClick()
- self:CloseAllDropdownList(self.view.dropdown_list_order)
- local visible = GUI:getVisible(self.view.dropdown_list_order)
- GUI:setVisible(self.view.dropdown_list_order,not visible)
- GUI:setVisible(self.view.btn_dropdown_mask,not visible)
- end
- function this:BtnFilterQualityOnClick()
- self:CloseAllDropdownList(self.view.dropdown_list_quality)
- local visible = GUI:getVisible(self.view.dropdown_list_quality)
- GUI:setVisible(self.view.dropdown_list_quality,not visible)
- GUI:setVisible(self.view.btn_dropdown_mask,not visible)
- end
- function this:BtnFilterCareerOnClick()
- self:CloseAllDropdownList(self.view.dropdown_list_career)
- local visible = GUI:getVisible(self.view.dropdown_list_career)
- GUI:setVisible(self.view.dropdown_list_career,not visible)
- GUI:setVisible(self.view.btn_dropdown_mask,not visible)
- end
- function this:BtnDropdownMaskOnClick()
- self:CloseAllDropdownList()
- GUI:setVisible(self.view.btn_dropdown_mask,false)
- end
- function this:CloseAllDropdownList(except)
- if except ~= self.view.dropdown_list_career then
- GUI:setVisible(self.view.dropdown_list_career,false)
- end
- if except ~= self.view.dropdown_list_order then
- GUI:setVisible(self.view.dropdown_list_order,false)
- end
- if except ~= self.view.dropdown_list_quality then
- GUI:setVisible(self.view.dropdown_list_quality,false)
- end
- if except ~= self.view.dropdown_list_level then
- GUI:setVisible(self.view.dropdown_list_level,false)
- end
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- GUI:OSAScrollView_RefreshList(self.view.scrollview_catalogue,#self.catalogueDataList)
- if self.args == 1 then
- GUI:UIPanel_Close("dev/outui/Trade/Panel/KLTradeUnionGoods/KLTradeUnionGoodsPanel")
- elseif self.args == 2 then
- GUI:UIPanel_Close("dev/outui/Trade/Panel/KLTradeCommonGoods/KLTradeCommonGoodsPanel")
- elseif self.args == 3 then
- GUI:UIPanel_Close("dev/outui/Trade/Panel/KLTradeCommonGoods/KLTradeCommonGoodsPanel")
- end
- self:RequestRefreshGoodsList()
- end
- function this:Close()
- GUI:UIPanel_Close("dev/outui/Trade/Panel/KLTradeCommonGoods/KLTradeCommonGoodsPanel")
- GUI:UIPanel_Close("dev/outui/Trade/Panel/KLTradeUnionGoods/KLTradeUnionGoodsPanel")
- GUI:UIPanel_Close("dev/outui/Trade/Panel/KLTradeCrossServerGoods/KLTradeCrossServerGoodsPanel")
- end
- function this:RequestRefreshGoodsList()
- self:GetCurGoodsPanel():RequestRefreshGoodsList(self.selectedItemData.rootType,self.selectedItemData.subType,self.selectedSortType,self.selectedCareerType,self.selectedFilterLevel,self.selectedFilterQuality)
- --SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_TRADE_GOODS,{self.selectedItemData.rootType,self.selectedItemData.subType,self.selectedSortType,self.selectedCareerType,self.selectedFilterLevel,self.selectedFilterQuality})
- end
- return this
|