IconPetItemCtr.lua 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. local IconPetItemCtr = {}
  2. function IconPetItemCtr:SetData(wnd, itemlua, logicData, enterType, onClickOwner, onClickCB, params)
  3. local cfgId = logicData.cfgId
  4. local num = logicData.level
  5. local id = logicData.id
  6. local skilllv = logicData.skilllv
  7. local itemCfgData, cfgData, iconType, quality
  8. itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  9. if itemCfgData == nil then
  10. LogError(cfgId.. " isnt exist in ItemCfg")
  11. return
  12. end
  13. iconType = itemCfgData.ResType
  14. cfgData = itemCfgData
  15. if iconType == Enum.ItemType.Pet then
  16. cfgData = ManagerContainer.CfgMgr:GetPetDataById(cfgId)
  17. if cfgData == nil then
  18. LogError(cfgId.. " isnt exist in PetCfg")
  19. return
  20. end
  21. if itemCfgData.Quality == 0 then
  22. itemCfgData.Quality = cfgData.Fame
  23. end
  24. if itemCfgData.Icon == "" then
  25. itemCfgData.Icon = cfgData.Icon
  26. end
  27. end
  28. quality = itemCfgData.Quality
  29. local qualityFxName = nil
  30. local frameIcon = Constant.Quality_PetFrame_Icons[quality]
  31. if quality >= Enum.QualityType.Purple then
  32. qualityFxName = Constant.Quality_FX[quality - Enum.QualityType.Blue]
  33. end
  34. --frameIcon = Constant.Quality_HeadFrame_Icons[quality]
  35. if itemlua.uiParticle ~= nil and itemlua.uiParticle.EffectName ~= qualityFxName then
  36. wnd:RemoveEffect(itemlua,itemlua.uiParticle.EffectName,itemlua.uiParticle.fxGo)
  37. ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath,itemlua.uiParticle.EffectName,itemlua.uiParticle.fxGo)
  38. itemlua.uiParticle = nil
  39. end
  40. if quality >= 5 then
  41. if qualityFxName == nil then
  42. itemlua.qualityFX:SetActive(false)
  43. else
  44. itemlua.qualityFX:SetActive(true)
  45. if itemlua.uiParticle == nil then
  46. local fxGo = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath,qualityFxName)
  47. if fxGo~= nil then
  48. fxGo.transform:SetParent(itemlua.qualityFX.transform)
  49. fxGo.transform.localPosition = Vector3.zero
  50. fxGo.transform.localRotation = Quaternion.identity
  51. fxGo.transform.localScale = Vector3.one
  52. --if tolua.getpeer(fxGo) == nil then
  53. -- tolua.setpeer(fxGo, {})
  54. --end
  55. itemlua.uiParticle = {}
  56. itemlua.uiParticle.fxGo = fxGo
  57. itemlua.uiParticle.EffectName = qualityFxName
  58. local sizeX = itemlua.rectTransform.rect.width
  59. --判断是否父节点为grid
  60. if itemlua.transform.parent then
  61. local parent = itemlua.transform.parent
  62. local parentScale = parent.localScale.x
  63. local selfScale = itemlua.transform.localScale.x
  64. local grid = parent:GetComponent(Enum.TypeInfo.GridLayoutGroup)
  65. local width = sizeX
  66. if grid then
  67. width = grid.cellSize.x
  68. end
  69. sizeX = width * parentScale * selfScale
  70. end
  71. local scaleX = sizeX/160
  72. --local sizeY = itemlua.layoutElement.preferredHeight
  73. --local scaleY = sizeY/160
  74. local uiParticle = fxGo:GetComponent(Enum.TypeInfo.UIParticle)
  75. if uiParticle then
  76. uiParticle.scale = scaleX
  77. end
  78. wnd:AddNewEffect(itemlua,qualityFxName,fxGo)
  79. itemlua.qualityFX:SetActive(true)
  80. end
  81. end
  82. end
  83. end
  84. local _iconPath = itemCfgData.Icon
  85. if logicData.isLeader then _iconPath = logicData.leaderIcon end
  86. itemlua.icon.image.sprite = nil
  87. CommonUtil.LoadIcon(wnd, _iconPath, function (sprite)
  88. itemlua.icon.image.sprite = sprite
  89. end, itemlua, 'IconIcon')
  90. CommonUtil.LoadIcon(wnd, frameIcon, function (sprite)
  91. itemlua.frame.image.sprite = sprite
  92. end, itemlua, 'IconFrame')
  93. itemlua.frame.image.material = quality >= 3 and ManagerContainer.ResMgr:GetFrameQualityMat() or nil
  94. itemlua.num.text.text = "Lv."..tostring(num)
  95. itemlua.nature:SetActive(true)
  96. local natureIcon = Constant.Natural_Icons..cfgData.NatureType
  97. CommonUtil.LoadIcon(wnd, natureIcon, function (sprite)
  98. itemlua.nature.image.sprite = sprite
  99. end, itemlua, 'IconJob')
  100. local petStarIcon, textContent = CommonUtil.GetPetSkillStarIconAndColor(logicData.skillList,skilllv)
  101. itemlua.star:SetActive(petStarIcon ~= nil)
  102. CommonUtil.LoadIcon(wnd, petStarIcon, function (sprite)
  103. itemlua.star.image.sprite = sprite
  104. end, itemlua, 'IconStar')
  105. itemlua.star.advenceLv.text.text = textContent
  106. itemlua.advence:SetActive(logicData.advanceLevel ~= nil and logicData.advanceLevel > 0)
  107. if logicData.advanceLevel then
  108. if logicData.advanceLevel > 0 then
  109. CommonUtil.LoadIcon(wnd, Constant.Pet_Quality_Bg_Icons[quality], function (sprite)
  110. itemlua.advence.image.sprite = sprite
  111. end, itemlua, 'IconAdvence')
  112. end
  113. itemlua.advenceLv.text.text = string.format(Constant.Pet_Quality_Text_Colors[quality],"+"..logicData.advanceLevel)
  114. end
  115. itemlua.num:SetActive(enterType ~= Enum.ItemIEnterType.PetRelation and enterType ~= Enum.ItemIEnterType.PetSupport)
  116. itemlua.locked:SetActive((enterType == Enum.ItemIEnterType.PetMats and logicData.isBattle)
  117. or (enterType == Enum.ItemIEnterType.PetRelation and logicData.canUse == false)
  118. or (enterType == Enum.ItemIEnterType.PetSupport and logicData.isUsed == true))
  119. itemlua.selected:SetActive(logicData.selected and logicData.selected > 0)
  120. itemlua.nameBg:SetActive(enterType == Enum.ItemIEnterType.PetRelation)
  121. itemlua.petName.text.text = CommonUtil.GetShortVaildNickName(logicData.nickname)
  122. if onClickOwner and onClickCB then
  123. itemlua.bg.button.interactable = true
  124. onClickOwner.uiBase:AddButtonUniqueEventListener(itemlua.bg.button, onClickOwner, onClickCB, logicData, itemlua, params)
  125. else
  126. itemlua.bg.button.interactable = false
  127. end
  128. itemlua.battle:SetActive(logicData.isBattle == true)
  129. itemlua.relation:SetActive(logicData.isRelevant == true)
  130. itemlua.support:SetActive(logicData.isSupport == true)
  131. itemlua.contract:SetActive(enterType == Enum.ItemIEnterType.PetQiyueMat and logicData.qiyueHeroId > 0)
  132. local parent = itemlua.transform
  133. local redPoint = parent:Find("redPoint")
  134. if enterType == Enum.ItemIEnterType.PetRoot and logicData.isBattle then
  135. local result = ManagerContainer.RedPointMgr.PetRPCtr:GetPetCultivatingState(logicData.id)
  136. if not result then
  137. result = ManagerContainer.RedPointMgr.PetRPCtr:GetPetSlotInsertRPState(id)
  138. end
  139. if not result then
  140. result = ManagerContainer.RedPointMgr.PetRPCtr:GetPetSlotLvUpRPState(id)
  141. end
  142. if not result then
  143. result = ManagerContainer.RedPointMgr.PetRPCtr:GetPetSlotAdvanceRPState(id)
  144. end
  145. if redPoint then
  146. redPoint.gameObject:SetActive(result)
  147. else
  148. if result then
  149. self:CreateRP(parent, redPoint, "redPoint", "Common/UIRedPointRP")
  150. end
  151. end
  152. else
  153. if redPoint then
  154. redPoint.gameObject:SetActive(false)
  155. end
  156. end
  157. end
  158. function IconPetItemCtr:CreateRP(parent, redPoint, name, path)
  159. local go = ManagerContainer.ResMgr:GetGoFromPool(Constants.UIPath, path)
  160. if go then
  161. redPoint = go.transform
  162. redPoint:SetParent(parent)
  163. redPoint.localRotation = Quaternion.identity
  164. redPoint.localScale = Vector3.one
  165. local rectTransform = redPoint:GetComponent(Enum.TypeInfo.RectTransform)
  166. rectTransform.anchoredPosition3D = Vector3(78, 78, 0)
  167. go.name = name
  168. end
  169. end
  170. return IconPetItemCtr