| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- local UIFashionPaperTipsView = require("UIFashion/UIFashionPaperTipsView_Generate")
- function UIFashionPaperTipsView:OnAwake(data)
- self.controller = require("UIFashion/UIFashionPaperTipsCtr")
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIFashionPaperTipsView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COIN_CHANGED, self, self.RefreshMoney)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DIAMOND_CHANGED, self, self.RefreshMoney)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ITEM_CHANGE, self, self.RefreshItem)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FASHION_LIST_CHANGE, self, self.RefreshOwnSign)
- end
- function UIFashionPaperTipsView: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 UIFashionPaperTipsView:Init()
- local cfgId = self.controller:GetCfgId()
- local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
- -- 道具图标
- ManagerContainer.GoPoolMgr:SpawnItemGo(itemCfgData.ResType, function(itemlua)
- CommonUtil.BatchCreateItems(self, itemlua, self.contentItem.transform, self.controller:GetData())
- end)
- -- 道具名称
- self.textName.text.text = itemCfgData.Name
- -- 道具类型
- self.textType.uILocalizeScript:SetContent("ItemTypeDes_" .. itemCfgData.ResType)
- -- 道具描述
- self.desTxt.text.text = itemCfgData.Describe
- local fashionPaperCfgData = ManagerContainer.CfgMgr:GetFashionPaperById(cfgId)
- local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionPaperCfgData.FashionId)
- local fashionQuality = fashionCfgData.FashionQuality
- -- 一条属性的时候
- if type(fashionQuality[1]) == 'number' then
- fashionQuality = {fashionQuality}
- end
- for i = 1, #fashionQuality do
- ManagerContainer.GoPoolMgr:SpawnGo(Enum.PrefabNames.EquipBaseAttrItem, function(itemlua)
- CommonUtil.BatchCreateItems(self, itemlua, self.equipBox.attrs.grid.transform, fashionQuality[i], Enum.ItemIEnterType.ItemTips)
- end)
- end
- -- 显示材料
- self:RefreshMakeMaterials()
- self:RefreshOwnSign()
- end
- function UIFashionPaperTipsView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UIFashionPaperTipsView:AddUIEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, function()
- ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
- end)
- self.uiBase:AddUIEventHandlerClickListener(self.uIEventHandler, function (go)
- if go and go.transform:IsChildOf(self.transform) then
- return
- end
- ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
- end)
- self.uiBase:AddButtonEventListener(self.composeBtn.button, self, self.OnClickComposeBtn)
- self.uiBase:AddButtonEventListener(self.decomposeBtn.button, self, self.OnClickDecomposeBtn)
- end
- function UIFashionPaperTipsView:OnHide()
- self.hideFrameCount = Time.frameCount
- end
- function UIFashionPaperTipsView:OnShow(data)
- self.controller:SetData(data)
- self:Init()
- if self.hideFrameCount and self.hideFrameCount < Time.frameCount then
- self.window.animator:Rebind()
- end
- end
- function UIFashionPaperTipsView:OnClose()
- end
- function UIFashionPaperTipsView:OnDispose()
- for i = #self.materialItems, 1, -1 do
- local materialItem = self.materialItems[i]
- self.materialItems[i] = nil
- if materialItem ~= self.materialItem then
- if tolua.getpeer(materialItem.text) ~= nil then
- tolua.setpeer(materialItem.text, nil)
- end
- if tolua.getpeer(materialItem.number) ~= nil then
- tolua.setpeer(materialItem.number, nil)
- end
- if tolua.getpeer(materialItem) ~= nil then
- tolua.setpeer(materialItem, nil)
- end
- end
- end
- self.materialItems = nil
- end
- function UIFashionPaperTipsView:OnClickComposeBtn()
- self:UIClose()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIFashionCompose, {cfgId = self.controller:GetCfgId()})
- end
- function UIFashionPaperTipsView:OnClickDecomposeBtn()
- local cfgId = self.controller:GetCfgId()
- local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
- local itemName1 = I18N.SetLanguageValue(itemCfgData.Name)
- local itemNum1 = self.controller:GetOwnedItemNum(cfgId)
- local fashionPaperCfgData = ManagerContainer.CfgMgr:GetFashionPaperById(cfgId)
- local resolveItem = fashionPaperCfgData.ResolveItem
- local content = ""
- for i = 1, #resolveItem do
- local cfgId = resolveItem[i][1]
- local num = resolveItem[i][2]
- local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
- local quality = itemCfgData.Quality
- local name = I18N.SetLanguageValue(itemCfgData.Name)
- content = content ..string.format(Constant.ColorTextArray[quality],name.."X"..(itemNum1 * num))
- if i < #resolveItem then
- content = content .. string.format("<color=#000000>%s</color>", ",")
- end
- end
- local data = {"DecomposeFashionSure", {itemName1, itemNum1, content}, nil, self, self.SureDecomposeFashion}
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
- end
- function UIFashionPaperTipsView:SureDecomposeFashion()
- self.controller:SendDecomposeMsg()
- self:UIClose()
- end
- function UIFashionPaperTipsView:RefreshMoney()
- self:RefreshMakeMaterials()
- end
- function UIFashionPaperTipsView:RefreshItem()
- self:RefreshMakeMaterials()
- end
- function UIFashionPaperTipsView:RefreshMakeMaterials()
- local fashionPaperCfgData = ManagerContainer.CfgMgr:GetFashionPaperById(self.controller:GetCfgId())
- local makeMaterial = fashionPaperCfgData.MakeMaterial
- if type(makeMaterial[1]) == 'number' then
- makeMaterial = {makeMaterial}
- end
- if not self.materialItems then self.materialItems = {self.materialItem} end
- local txtNum = #self.materialItems
- local num = #makeMaterial
- local material = nil
- local curOwnedNum = nil
- for i = 1, num do
- material = makeMaterial[i]
- local materialItemCfgData = ManagerContainer.CfgMgr:GetItemById(material[1])
- if materialItemCfgData.ResType == Enum.ItemType.Coin
- or materialItemCfgData.ResType == Enum.ItemType.Diamond then
- else
- local materialItem = self.materialItems[i]
- if not materialItem then
- materialItem = UnityEngine.GameObject.Instantiate(self.materialItem)
- if tolua.getpeer(materialItem) == nil then
- tolua.setpeer(materialItem, {})
- end
- local materialItemTrans = materialItem.transform
- materialItemTrans:SetParent(self.materialItem.transform.parent)
- materialItemTrans.localPosition = Vector3.zero
- materialItemTrans.localRotation = Quaternion.identity
- materialItemTrans.localScale = Vector3.one
- materialItem.text = materialItemTrans:Find("Text").gameObject
- if tolua.getpeer(materialItem.text) == nil then
- tolua.setpeer(materialItem.text, {})
- end
- materialItem.text.text = materialItem.text:GetComponent(Enum.TypeInfo.Text)
- materialItem.number = materialItemTrans:Find("Number").gameObject
- if tolua.getpeer(materialItem.number) == nil then
- tolua.setpeer(materialItem.number, {})
- end
- materialItem.number.text = materialItem.number:GetComponent(Enum.TypeInfo.Text)
- self.materialItems[i] = materialItem
- end
- materialItem:SetActive(true)
- materialItem.text.text.text = I18N.SetLanguageValue(materialItemCfgData.Name)
- curOwnedNum = ManagerContainer.DataMgr.BagData:GetItemCountByCfgId(material[1])
- if curOwnedNum >= material[2] then
- materialItem.number.text.text = curOwnedNum .. '/' .. material[2]
- else
- materialItem.number.text.text = string.format(Constant.RedColorText, curOwnedNum .. '/' .. material[2])
- end
- end
- end
- for i = num + 1, txtNum do
- self.materialItems[i]:SetActive(false)
- end
- end
- function UIFashionPaperTipsView:RefreshOwnSign()
- local owned = self.controller:GetIsOwned()
- local enterType = self.controller:GetEnterType()
- if enterType == Enum.ItemIEnterType.Bag then
- self.btnBox:SetActive(true)
- self.composeBtn:SetActive(not owned)
- self.decomposeBtn:SetActive(owned)
- else
- self.btnBox:SetActive(false)
- end
- self.composedTxt:SetActive(owned)
- end
- return UIFashionPaperTipsView
|