| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- local UIFashionSuitesTipsView = require("UIFashion/UIFashionSuitesTipsView_Generate")
- local userSex
- function UIFashionSuitesTipsView:OnAwake(data)
- self.controller = require("UIFashion/UIFashionSuitesTipsCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIFashionSuitesTipsView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- end
- function UIFashionSuitesTipsView:FillContent(data, uiBase)
- self.uiBase = uiBase
- local gameObject = self.uiBase:GetRoot()
- if gameObject ~= nil then
- self.gameObject = gameObject
- self.transform = gameObject.transform
- end
- self:InitGenerate(self.transform, data)
- self:Init()
- end
- function UIFashionSuitesTipsView:Init()
- self.fashionSuitList = {}
- userSex = ManagerContainer.DataMgr.UserData:GetSex()
- self:InitGrid()
- end
- function UIFashionSuitesTipsView:OnPageInEnd()
- self.super.OnPageInEnd(self)
- self:Refresh()
- end
- function UIFashionSuitesTipsView:Refresh(resetPos)
- local loopListView = self.suitesScrollView.loopListView
- local length = self.controller:GetShowDataLength()
- if resetPos then
- loopListView:SetListItemCount(length + 1, true)
- else
- --self.scrollviewContent.verticalLayoutGroup.enabled = false
- --loopListView:SetListItemCount(0)
- loopListView:SetListItemCount(length + 1)
- self.scrollviewContent.verticalLayoutGroup.enabled = true
- end
- end
- function UIFashionSuitesTipsView:InitGrid()
- self.suitesScrollView.loopListView:InitListView(0, function(gridView, itemIndex, row, column)
- return self:GetItemByRowColumn(gridView, itemIndex, row, column)
- end, nil)
- self.controller:RefreshSuites()
- end
- function UIFashionSuitesTipsView:GetItemByRowColumn(gridView, itemIndex, row, column)
- local item
- if itemIndex == 0 then
- item = gridView:NewListViewItem('Empty')
- else
- local suitId = self.controller:GetShowData(itemIndex)
- local suitCfgData = ManagerContainer.CfgMgr:GetFashionSuitDataById(suitId)
- local suitLv = self.controller:GetSuitLvById(suitId)
- local lv = suitLv > 0 and suitLv or 1
- local height = 360
- if suitCfgData then
- item = gridView:NewListViewItem('FashionSuitesItem')
- local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'FashionSuitesItem', item.gameObject)
- CommonUtil.CloseUIClearAsyncSeqIds(itemlua)
- local fashionIds = suitCfgData.FashionId
- if fashionIds then
- local length = #fashionIds
- local listView = itemlua.goodsList.loopListView
- if listView.ListViewInited then
- listView:Dispose()
- end
- listView:InitListView(0, function(gridView1, itemIndex1, row1, column1)
- local GetItemByRowColumn1 = function (gridView1, itemIndex1, row1, column1)
- local item1
- if itemIndex1 == 0 then
- item1 = gridView1:NewListViewItem('Empty')
- else
- local cfgId = fashionIds[itemIndex1]
- local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(cfgId)
- if not fashionCfgData then
- return item1
- end
- if userSex ~= fashionCfgData.FashionSex and fashionCfgData.FashionSex > 0 then
- return item1
- end
- item1 = gridView1:NewListViewItem('FashionWearItem')
- local itemlua1 = CommonUtil.GetBindGridViewItem2Lua(self, 'FashionWearItem', item1.gameObject)
- if not itemlua1 then
- itemlua1 = CommonUtil.BindGridViewItem2Lua(self, 'FashionWearItem', item1.gameObject)
- else
- CommonUtil.CloseUIClearAsyncSeqIds(itemlua1)
- end
- self:RefreshFashionItem(cfgId, itemlua1)
- end
- return item1
- end
- return GetItemByRowColumn1(gridView1, itemIndex1, row1, column1)
- end, nil)
- if not CommonUtil.EleInTable(listView, self.fashionSuitList) then
- self.fashionSuitList[#self.fashionSuitList + 1] = listView
- end
- listView:SetListItemCount(length + 1, true)
- listView:RefreshAllShownItem()
- itemlua.suitesLv.activity:SetActive(suitLv > 0)
- itemlua.nextCondition:SetActive(suitLv < #suitCfgData.LevelCondition)
- itemlua.nextAttr:SetActive(suitLv < #suitCfgData.LevelCondition)
- if suitLv <= #suitCfgData.LevelCondition then
- if suitLv < #suitCfgData.LevelCondition then
- local condition = suitCfgData.LevelCondition[suitLv + 1]
- local count = 0
- for _,v in pairs(fashionIds) do
- local fashionLogicData = ManagerContainer.DataMgr.FashionData:GetFashionById(v)
- if fashionLogicData then
- if fashionLogicData.lv >= condition then
- count = count + 1
- end
- end
- end
- itemlua.nextCondition.condition.text.text = I18N.SetLanguageValue("SuitNeedLevel", condition)
- itemlua.nextCondition.num.text.text = count.."/"..#fashionIds
- end
- --当前属性
- local curAttrs = suitCfgData.Attribute[lv]
- itemlua.currentAttr:SetActive(suitLv > 0 and curAttrs ~= nil)
- if suitLv == 0 or curAttrs == nil then
- height = height - 30
- end
- if curAttrs then
- local attrCount = 0
- for i = 1, 4 do
- local attrItem = itemlua.currentAttr["attr"..i]
- local attr = curAttrs[i]
- if attrItem then
- attrItem:SetActive(attr ~= nil)
- if attr then
- attrCount = attrCount + 1
- local str = string.split(attr, '-')
- local key = tonumber(str[1])
- local val = tonumber(str[2])
- attrItem.text.text.text = I18N.T("Attr_" .. key)
- val = key > 21 and CommonUtil.GetPreciseDecimal(val*0.0001, 3) or math.floor(val)
- attrItem.num.text.text = CommonUtil.HeroAttrFormatValue(key, val, true)
- end
- end
- end
- if attrCount > 2 then
- height = height + 30
- end
- end
- --下一级属性
- local nextAttrs = suitCfgData.Attribute[lv + 1]
- itemlua.nextAttr:SetActive(nextAttrs ~= nil)
- if nextAttrs == nil then
- height = height - 30
- end
- if suitLv == 0 then
- nextAttrs = suitCfgData.Attribute[lv]
- end
- if nextAttrs then
- local attrCount = 0
- for i = 1, 4 do
- local attrItem = itemlua.nextAttr["attr"..i]
- local attr = nextAttrs[i]
- if attrItem then
- attrItem:SetActive(attr ~= nil)
- if attr then
- attrCount = attrCount + 1
- local str = string.split(attr, '-')
- local key = tonumber(str[1])
- local val = tonumber(str[2])
- attrItem.text.text.text = I18N.T("Attr_" .. key)
- val = key > 21 and CommonUtil.GetPreciseDecimal(val*0.0001, 3) or math.floor(val)
- attrItem.num.text.text = CommonUtil.HeroAttrFormatValue(key, val, true)
- end
- end
- end
- if attrCount > 2 then
- height = height + 30
- end
- end
- end
- itemlua.rectTransform:SetSizeWithCurrentAnchors(UnityEngine.RectTransform.Axis.Vertical, height);
- end
- itemlua.suitesLv.suitesName.text.text = I18N.T(suitCfgData.SuitName)
- itemlua.suitesLv.numlv.text.text = lv
- end
- end
- return item
- end
- function UIFashionSuitesTipsView:RefreshFashionItem(fashionId, itemlua)
- local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionId)
- if not fashionCfgData then
- return
- end
- itemlua.transform.localScale = Vector3.New(0.8, 0.8, 0.8)
- itemlua.icon.image.sprite = nil
- itemlua.icon.image.enabled = false
- itemlua.icon:SetActive(false)
- itemlua.frame.image.sprite = nil
- itemlua.frame.image.enabled = false
- CommonUtil.LoadIcon(self, fashionCfgData.FashionIcon, function (sprite)
- itemlua.icon.image.sprite = sprite
- itemlua.icon.image.enabled = true
- itemlua.icon:SetActive(true)
- end, itemlua, "FashionWearItemIconAsyncIdx")
- CommonUtil.LoadIcon(self, Constant.Quality_Frame_Icons[fashionCfgData.FashionQuality], function (sprite)
- itemlua.frame.image.sprite = sprite
- itemlua.frame.image.enabled = true
- end, itemlua, "FashionWearItemFrameAsyncIdx")
- itemlua.bg:SetActive(true)
- itemlua.frame:SetActive(true)
- itemlua.selected:SetActive(false)
- itemlua.selected2:SetActive(false)
- itemlua.disable:SetActive(false)
- itemlua.redPoint:SetActive(false)
- itemlua.bg.button.onClick:RemoveAllListeners()
- itemlua.fashionName.text.text = I18N.T(fashionCfgData.FashionName)
- local fashionLogicData = self.controller:GetFashionLogicData(fashionCfgData.FashionId)
- itemlua.num.text.text = "Lv "..(fashionLogicData and fashionLogicData.lv or 1)
- CommonUtil.SetTotalChildrenGray(itemlua.gameObject, fashionLogicData == nil)
- end
- function UIFashionSuitesTipsView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UIFashionSuitesTipsView:AddUIEventListener()
- self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnClickClose)
- self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnClickClose)
- end
- function UIFashionSuitesTipsView:OnClickClose()
- self:UIClose()
- end
- function UIFashionSuitesTipsView:OnHide()
- end
- function UIFashionSuitesTipsView:OnShow(data)
- self.controller:SetData(data)
- end
- function UIFashionSuitesTipsView:OnClose()
- for _,v in pairs(self.fashionSuitList) do
- v:Dispose()
- end
- self.fashionSuitList = nil
- self.suitesScrollView.loopListView:Dispose()
- end
- function UIFashionSuitesTipsView:OnDispose()
- self.controller:OnDispose()
- end
- return UIFashionSuitesTipsView
|