UICollectTipsView.lua 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. local UICollectTipsView = require("UICollect/UICollectTipsView_Generate")
  2. local BitUtil = require("BitUtil")
  3. local IconItemCtr = require("Common/IconItemCtr")
  4. function UICollectTipsView:OnAwake(data)
  5. self.controller = require("UICollect/UICollectTipsCtr"):new()
  6. self.controller:Init(self)
  7. self.controller:SetData(data)
  8. end
  9. function UICollectTipsView:AddEventListener()
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.CARD_HANDBOOK_REWARD_REFRESH, function()
  12. self:RefreshCardReward()
  13. end)
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PET_HANDBOOK_REWARD_REFRESH, function()
  15. self:RefreshPetReward()
  16. end)
  17. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.CARD_HANDBOOK_RANK_REFRESH, function(playerInfo, time)
  18. self:RefreshFirstRank(playerInfo, time)
  19. end)
  20. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.KEEPSAKE_LEVEL_UP_SUCCESS_NTF, function()
  21. local keepSakeId = self.controller:GetCfgId()
  22. local lv = ManagerContainer.DataMgr.KeepSakeBookData:GetKeepSakeBookDataById(keepSakeId)
  23. ManagerContainer.LuaUIMgr:ErrorNoticeDisplayWithParam("ObjectActivated", lv)
  24. self:Init()
  25. end)
  26. end
  27. function UICollectTipsView:FillContent(data, uiBase)
  28. self.uiBase = uiBase
  29. local gameObject = self.uiBase:GetRoot()
  30. if gameObject ~= nil then
  31. self.gameObject = gameObject
  32. self.transform = gameObject.transform
  33. end
  34. self:InitGenerate(self.transform, data)
  35. self:Init()
  36. end
  37. function UICollectTipsView:Init()
  38. CommonUtil.RecycleFromBatchItemsByPrefabName(self, self.collectionAttrItem.prefabName)
  39. self.btnUse.toggle.isOn = false
  40. self.type = self.controller:GetType()
  41. self.cfgId = self.controller:GetCfgId()
  42. self.bottom.head:SetActive(false)
  43. self.bottom.label:SetActive(false)
  44. self.bottom.info:SetActive(false)
  45. self.type1:SetActive(self.type == Enum.CollectType.Pet)
  46. self.skillBox:SetActive(self.type == Enum.CollectType.Pet)
  47. self.type2:SetActive(self.type == Enum.CollectType.Card)
  48. self.type4:SetActive(self.type == Enum.CollectType.Card)
  49. self.type3:SetActive(self.type == Enum.CollectType.KeepSake)
  50. self.type51:SetActive(false)
  51. self.type52:SetActive(false)
  52. self.type53:SetActive(false)
  53. self.cardIconBigItem:SetActive(self.type == Enum.CollectType.Card)
  54. self.petIcon:SetActive(self.type == Enum.CollectType.Pet)
  55. self.collectionIconItem:SetActive(self.type == Enum.CollectType.KeepSake)
  56. self.baseAttr:SetActive(self.type ~= Enum.CollectType.KeepSake)
  57. self.dscSkill:SetActive(self.type == Enum.CollectType.Pet)
  58. self.rewards:SetActive(self.type ~= Enum.CollectType.KeepSake)
  59. self.collectionAttr:SetActive(self.type == Enum.CollectType.KeepSake)
  60. self.collectionUpdate:SetActive(self.type == Enum.CollectType.KeepSake)
  61. self.dscContent.transform.localPosition = Vector3.zero
  62. CommonUtil.DisposeBatchGridChildsItem(self, self.baseAttr.grid.transform, self.attrItem.prefabName)
  63. self.baseAttr.text.uILocalizeScript:SetContent("BasicNature")
  64. if self.type == Enum.CollectType.Card then
  65. self:RefreshCardInfo()
  66. elseif self.type == Enum.CollectType.Pet then
  67. self:RefreshPetInfo()
  68. elseif self.type == Enum.CollectType.KeepSake then
  69. self:RefreshKeepSakeInfo()
  70. end
  71. end
  72. function UICollectTipsView:RefreshCardInfo()
  73. local cardId = self.controller:GetCfgId()
  74. ManagerContainer.DataMgr.CollectionBookData:QueryCardRank(cardId)
  75. local cfgData = ManagerContainer.CfgMgr:GetCardIdentificationDatasById(cardId)
  76. if not cfgData then
  77. return
  78. end
  79. self.textName.text.text = I18N.T(cfgData.CardName)
  80. CommonUtil.LoadIcon(self, cfgData.CardImg, function (sprite)
  81. self.iconCard.image.sprite = sprite
  82. end)
  83. local frameIcon = Constant.Quality_Frame_Icons[cfgData.FrameQuality]
  84. CommonUtil.LoadIcon(self, frameIcon, function (sprite)
  85. self.frame.image.sprite = sprite
  86. end)
  87. CommonUtil.LoadIcon(self, Constant.Quality_CardType_Icons[cfgData.CardQuality], function (sprite)
  88. self.cardLabel.image.sprite = sprite
  89. end)
  90. self.type2.text2.text.text = I18N.T(Enum.EquipTypeName[cfgData.CardLocation])
  91. for i = 1, self.type4.jobBox.transform.childCount do
  92. self.type4.jobBox.transform:GetChild(i - 1).gameObject:SetActive(false)
  93. end
  94. if cfgData.Profession then
  95. for i = 1,#cfgData.Profession do
  96. local icon
  97. if self.type4.jobBox.transform.childCount >= i then
  98. icon = self.type4.jobBox.transform:GetChild(i - 1)
  99. else
  100. icon = UnityEngine.GameObject.Instantiate(self.type4.icon).transform
  101. if icon then
  102. icon:SetParent(self.type4.jobBox.transform)
  103. icon.localPosition = Vector3.zero
  104. icon.localRotation = Quaternion.identity
  105. icon.localScale = Vector3.one
  106. end
  107. end
  108. if icon then
  109. icon.gameObject:SetActive(true)
  110. CommonUtil.LoadIcon(self, Constant.Hero_Job_Icons[cfgData.Profession[i]], function (sprite)
  111. local image = icon:GetComponent(Enum.TypeInfo.Image)
  112. image.sprite = sprite
  113. end, self, 'IconJob'..i)
  114. end
  115. end
  116. end
  117. local index = 0
  118. for _,v in pairs(CommonUtil.DeserializeCfgItemList(cfgData.Attribute1)) do
  119. index = index + 1
  120. CommonUtil.BatchCreateItemsLoopWithMould(self, self.attrItem, self.baseAttr.grid.transform, v, index, Enum.ItemIEnterType.Attr)
  121. end
  122. self.desTxt.text.text = I18N.T(cfgData.CardDescribe)
  123. self:RefreshCardReward()
  124. end
  125. function UICollectTipsView:RefreshPetInfo()
  126. local petId = self.controller:GetCfgId()
  127. ManagerContainer.DataMgr.PetDataMgr:QueryFirstRank(petId)
  128. local cfgData = ManagerContainer.CfgMgr:GetPetDataById(petId)
  129. if not cfgData then
  130. return
  131. end
  132. self.textName.text.text = I18N.T(cfgData.Name)
  133. CommonUtil.LoadIcon(self, Constant.Natural_Icons..cfgData.NatureType, function (sprite)
  134. self.type1.icon.image.sprite = sprite
  135. end)
  136. CommonUtil.LoadIcon(self, cfgData.Petimg, function (sprite)
  137. self.petIcon.npc1.image.sprite = sprite
  138. end)
  139. if cfgData.IconOffset then
  140. self.petIcon.npc1.rectTransform.anchoredPosition = Vector2(cfgData.IconOffset[1], cfgData.IconOffset[2])
  141. end
  142. for i = 1, 3 do
  143. local skillId = cfgData["Skill"..i]
  144. local item = self.skillView["skillItem"..i]
  145. item:SetActive(skillId > 0)
  146. if skillId > 0 then
  147. local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'SkillItem', item.gameObject)
  148. CommonUtil.SetCommonSkillItem(self, itemlua, skillId, 1, self.OnSkillClick, skillId, i)
  149. end
  150. end
  151. self:OnSkillClick1(cfgData.Skill1, 1)
  152. local attrs = {}
  153. attrs[1] = {Enum.HeroAttrType.Life, cfgData.Hp}
  154. attrs[2] = {Enum.HeroAttrType.Sp, cfgData.Sp}
  155. attrs[3] = {Enum.HeroAttrType.Attack, cfgData.Atk}
  156. attrs[4] = {Enum.HeroAttrType.MagicAttack, cfgData.Matk}
  157. local index = 0
  158. for _,v in pairs(attrs) do
  159. index = index + 1
  160. CommonUtil.BatchCreateItemsLoopWithMould(self, self.attrItem, self.baseAttr.grid.transform, v, index, Enum.ItemIEnterType.Attr)
  161. end
  162. self.desTxt.text.text = I18N.T(cfgData.Desc)
  163. self:RefreshPetReward()
  164. end
  165. function UICollectTipsView:RefreshKeepSakeInfo()
  166. local keepSakeId = self.controller:GetCfgId()
  167. ManagerContainer.DataMgr.KeepSakeBookData:QueryKeepSakeRank(keepSakeId)
  168. self.controller:ResetKeepSakeMaterialCount()
  169. local lv = ManagerContainer.DataMgr.KeepSakeBookData:GetKeepSakeBookDataById(keepSakeId)
  170. local cfgData = ManagerContainer.CfgMgr:GetKeepSakeCfgDataById(keepSakeId)
  171. if not cfgData then
  172. return
  173. end
  174. CommonUtil.SetTotalChildrenGray(self.collectionIconItem, lv == nil and not ManagerContainer.DataMgr.KeepSakeBookData:CanKeepSakeLvUp(keepSakeId))
  175. self.textName.text.text = I18N.T(cfgData.Name)
  176. local jobs = cfgData.Job
  177. for i = 1, #jobs do
  178. local type = self["type5"..i]
  179. if type then
  180. type:SetActive(true)
  181. local jobId = jobs[i]
  182. local name = ""
  183. local jobIcon = ""
  184. if jobId == 0 then
  185. jobId = ManagerContainer.DataMgr.UserData:GetJobCfgId()
  186. local jobData = ManagerContainer.CfgMgr:GetJobDataById(jobId)
  187. jobIcon = jobData.JobIcon
  188. name = ManagerContainer.DataMgr.UserData:GetUserNickname()
  189. else
  190. local partnerData = ManagerContainer.CfgMgr:GetPartnerDataByJobId(jobId)
  191. if partnerData then
  192. name = I18N.T(partnerData.Name)
  193. jobIcon = partnerData.JobIcon
  194. end
  195. end
  196. CommonUtil.LoadIcon(self, jobIcon, function (sprite)
  197. type.icon.image.sprite = sprite
  198. end, tolua.getpeer(type), "jobIcon")
  199. type.text2.text.text = name
  200. end
  201. end
  202. CommonUtil.LoadIcon(self, cfgData.CollectionImg, function (sprite)
  203. self.iconCollection.image.sprite = sprite
  204. end)
  205. local frameIcon = Constant.Quality_CardBg_Icons[cfgData.CollectionLevel]
  206. CommonUtil.LoadIcon(self, frameIcon, function (sprite)
  207. self.frameCollection.image.sprite = sprite
  208. end)
  209. CommonUtil.LoadIcon(self, Constant.Quality_CardType_Icons[cfgData.CollectionLevel - 1], function (sprite)
  210. self.labelCollection.image.sprite = sprite
  211. end)
  212. CommonUtil.LoadIcon(self, Constant.Quality_Equip_LV_Icons[lv or 1], function (sprite)
  213. self.levelCollection.image.sprite = sprite
  214. end)
  215. local curLv = lv or 0
  216. local nextLv = curLv + 1
  217. self.collectionAttr:SetActive(curLv < cfgData.MaterialMaxLevel)
  218. self.collectionUpdate:SetActive(curLv < cfgData.MaterialMaxLevel)
  219. if curLv < cfgData.MaterialMaxLevel then
  220. self.collectionAttr.currentBox.text.uILocalizeScript:SetContentAndValues("CollectionAttribute", {curLv.."/"..cfgData.MaterialMaxLevel})
  221. self.collectionAttr.nextBox.text.uILocalizeScript:SetContentAndValues("CollectionAttributeNext", {nextLv > cfgData.MaterialMaxLevel and "" or (nextLv.."/"..cfgData.MaterialMaxLevel)})
  222. if curLv == 0 then
  223. ManagerContainer.GoPoolMgr:SpawnGoNewLuaTotalPath("Assets/Content/Prefabs/UI/UICollect", self.collectionAttrItem, function (itemlua)
  224. itemlua.transform:SetParent(self.collectionAttr.currentBox.grid.transform, false)
  225. itemlua.transform.localScale = Vector3.one
  226. itemlua.nameText.text.text = I18N.T("ObjectNotActivate")
  227. itemlua.numberText.text.text = ""
  228. CommonUtil.AddBatchItemsByItemlua(self, itemlua)
  229. end)
  230. else
  231. local attrs = cfgData["AddAttrLevel"..curLv]
  232. for i = 1,#attrs do
  233. ManagerContainer.GoPoolMgr:SpawnGoNewLuaTotalPath("Assets/Content/Prefabs/UI/UICollect", self.collectionAttrItem, function (itemlua)
  234. itemlua.transform:SetParent(self.collectionAttr.currentBox.grid.transform, false)
  235. itemlua.transform.localScale = Vector3.one
  236. local attrId = attrs[i][1]
  237. local val1 = attrs[i][2]
  238. itemlua.nameText.text.text = I18N.T("Attr_" .. attrId)
  239. local attrValue = attrId > 21 and CommonUtil.GetPreciseDecimal(val1*0.0001, 3) or math.floor(val1)
  240. itemlua.numberText.text.text = CommonUtil.HeroAttrFormatValue(attrId, attrValue, true)
  241. CommonUtil.AddBatchItemsByItemlua(self, itemlua)
  242. end)
  243. end
  244. end
  245. if curLv < cfgData.MaterialMaxLevel then
  246. local attrs = cfgData["AddAttrLevel"..nextLv]
  247. for i = 1,#attrs do
  248. ManagerContainer.GoPoolMgr:SpawnGoNewLuaTotalPath("Assets/Content/Prefabs/UI/UICollect", self.collectionAttrItem, function (itemlua)
  249. itemlua.transform:SetParent(self.collectionAttr.nextBox.grid.transform, false)
  250. itemlua.transform.localScale = Vector3.one
  251. local attrId = attrs[i][1]
  252. local val1 = attrs[i][2]
  253. itemlua.nameText.text.text = I18N.T("Attr_" .. attrId)
  254. CommonUtil.SetTextColor(itemlua.nameText.text, Constant.GreenColorText)
  255. local attrValue = attrId > 21 and CommonUtil.GetPreciseDecimal(val1*0.0001, 3) or math.floor(val1)
  256. itemlua.numberText.text.text = CommonUtil.HeroAttrFormatValue(attrId, attrValue, true)
  257. CommonUtil.SetTextColor(itemlua.numberText.text, Constant.GreenColorText)
  258. CommonUtil.AddBatchItemsByItemlua(self, itemlua)
  259. end)
  260. end
  261. end
  262. self:RefreshKeepSakeMaterials()
  263. self.baseAttr:SetActive(false)
  264. else
  265. self.baseAttr:SetActive(true)
  266. self.baseAttr.text.text.text = self.baseAttr.text.text.text .. I18N.T("ObjectFullLevel")
  267. local attrs = cfgData["AddAttrLevel"..curLv]
  268. local index = 0
  269. for _,v in pairs(attrs) do
  270. index = index + 1
  271. CommonUtil.BatchCreateItemsLoopWithMould(self, self.attrItem, self.baseAttr.grid.transform, v, index, Enum.ItemIEnterType.Attr)
  272. end
  273. end
  274. self.desTxt.text.text = I18N.T(cfgData.Describe)
  275. end
  276. function UICollectTipsView:RefreshKeepSakeMaterials()
  277. local keepSakeId = self.controller:GetCfgId()
  278. local lv = ManagerContainer.DataMgr.KeepSakeBookData:GetKeepSakeBookDataById(keepSakeId)
  279. local cfgData = ManagerContainer.CfgMgr:GetKeepSakeCfgDataById(keepSakeId)
  280. if not cfgData then
  281. return
  282. end
  283. local curLv = lv or 0
  284. local nextLv = curLv + 1
  285. local materials = cfgData["MaterialLevel"..nextLv]
  286. if materials then
  287. for i = 1, 3 do
  288. local material = materials[i]
  289. self["item"..i]:SetActive(material ~= nil)
  290. if material then
  291. local data = {cfgId = material[1], num = 0}
  292. IconItemCtr:SetData(self, self["item"..i].iconSmallItem, data, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
  293. local ownCount = self.controller:GetDisplayMats(material[1])
  294. ownCount = ownCount < material[2] and string.format(Constant.RedColorText, ownCount) or ownCount
  295. self["item"..i].numcost.text.text = ownCount.."/"..material[2]
  296. end
  297. end
  298. end
  299. self.exchangeCard.text.text.text = self.controller:GetOwnedKeepSakeExchange()
  300. end
  301. function UICollectTipsView:OnSkillClick(button, params)
  302. local skillId = params[0]
  303. local idx = params[1]
  304. self:OnSkillClick1(skillId, idx)
  305. end
  306. function UICollectTipsView:OnSkillClick1(skillId, idx)
  307. for i = 1, 3 do
  308. self["arrow"..i]:SetActive(false)
  309. end
  310. self["arrow"..idx]:SetActive(true)
  311. local skillCfgData = ManagerContainer.CfgMgr:GetSkillCfgById(skillId)
  312. if skillCfgData then
  313. local skillLevelCfgId = CommonUtil.GetSkillCfgIdByIdAndLv(skillId, 1)
  314. local skillLevelCfgData = ManagerContainer.CfgMgr:GetSkillLevelCfgById(skillLevelCfgId)
  315. self.dscSkill.skillName.text.text = I18N.T(skillCfgData.Name)
  316. self.dscSkill.lv.text.text = "Lv.1"
  317. if skillLevelCfgData.DescParam then
  318. if type(skillLevelCfgData.DescParam) == 'table' then
  319. self.dscSkill.desTxt.text.text = string.formatbykey(skillLevelCfgData.Desc, unpack(skillLevelCfgData.DescParam))
  320. else
  321. self.dscSkill.desTxt.text.text = string.formatbykey(skillLevelCfgData.Desc, skillLevelCfgData.DescParam)
  322. end
  323. else
  324. self.dscSkill.desTxt.text.text = string.formatbykey(skillLevelCfgData.Desc)
  325. end
  326. end
  327. end
  328. function UICollectTipsView:RemoveEventListener()
  329. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  330. end
  331. function UICollectTipsView:AddUIEventListener()
  332. self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnCloseClick)
  333. self.uiBase:AddButtonEventListener(self.btnArrowL.button, self, self.OnLeftClick)
  334. self.uiBase:AddButtonEventListener(self.btnArrowR.button, self, self.OnRightClick)
  335. self.uiBase:AddToggleEventListener(self.btnUse.toggle, self, self.OnAutoClick, 1)
  336. self.uiBase:AddButtonEventListener(self.btnActivity.button, self, self.OnActivityClick)
  337. end
  338. function UICollectTipsView:OnCloseClick()
  339. self:UIClose()
  340. end
  341. function UICollectTipsView:OnLeftClick()
  342. self.controller:GetOffsetCfgId(-1)
  343. end
  344. function UICollectTipsView:OnRightClick()
  345. self.controller:GetOffsetCfgId(1)
  346. end
  347. function UICollectTipsView:OnAutoClick(toggle, val, result)
  348. if result then
  349. self.controller:AutoAddKeepSakeMaterialCount()
  350. else
  351. self.controller:ResetKeepSakeMaterialCount()
  352. end
  353. self:RefreshKeepSakeMaterials()
  354. end
  355. function UICollectTipsView:OnActivityClick()
  356. self.controller:SendKeepSakeActivity()
  357. end
  358. function UICollectTipsView:RefreshCardReward()
  359. local cardId = self.controller:GetCfgId()
  360. local cfgData = ManagerContainer.CfgMgr:GetCardIdentificationDatasById(cardId)
  361. local logicData = ManagerContainer.DataMgr.CollectionBookData:GetCollectionBookDataById(cardId)
  362. if not cfgData then
  363. return
  364. end
  365. for i = 1, self.rewards.bar.transform.childCount do
  366. self.rewards.bar.transform:GetChild(i - 1).gameObject:SetActive(false)
  367. end
  368. for i = 1, cfgData.MaxLv do
  369. local barItem
  370. if self.rewards.bar.transform.childCount >= i then
  371. barItem = self.rewards.bar.transform:GetChild(i - 1)
  372. else
  373. barItem = UnityEngine.GameObject.Instantiate(self.rewards.barItem).transform
  374. barItem.transform:SetParent(self.rewards.bar.transform)
  375. barItem.transform.localPosition = Vector3.zero
  376. barItem.transform.localScale = Vector3.one
  377. end
  378. barItem.gameObject:SetActive(true)
  379. local bar = barItem:Find("bar")
  380. local box = barItem:Find("Box")
  381. --local iconSmallItem = box:Find("Item/IconSmallItem")
  382. --local iconItemlua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", iconSmallItem.gameObject)
  383. --local data = {cfgId = reward[1], num = reward[2]}
  384. --IconItemCtr:SetData(self, iconItemlua, data, Enum.ItemIEnterType.Bag)
  385. --iconItemlua.bg.image.raycastTarget = false
  386. local reward = cfgData["CardReward"..i][1]
  387. local numText = box:Find("Item/Num"):GetComponent(Enum.TypeInfo.TextMeshProUGUI)
  388. numText.text = reward[2]
  389. local animator = box:GetComponent(Enum.TypeInfo.Animator)
  390. if logicData and i <= logicData.cardLevel then
  391. local rewarded = BitUtil.RshiftNumBandOne(logicData.rewardRec, i - 1) == 1
  392. animator:Play(rewarded and "BoxReceived" or "BoxAvailable")
  393. bar.gameObject:SetActive(true)
  394. else
  395. animator:Play("BoxNormal")
  396. bar.gameObject:SetActive(false)
  397. end
  398. local button = box:GetComponent(Enum.TypeInfo.Button)
  399. self.uiBase:AddButtonUniqueEventListener(button, self, self.OnCardBoxClick, i)
  400. barItem:Find("IconLv").gameObject:SetActive(true)
  401. barItem:Find("PetLv").gameObject:SetActive(false)
  402. local lvIcon = barItem:Find("IconLv"):GetComponent(Enum.TypeInfo.Image)
  403. CommonUtil.LoadIcon(self, Constant.Quality_Equip_LV_Icons[i], function (sprite)
  404. lvIcon.sprite = sprite
  405. end, self, 'LvIcon'..i)
  406. end
  407. end
  408. function UICollectTipsView:RefreshPetReward()
  409. local petId = self.controller:GetCfgId()
  410. local cfgData = ManagerContainer.CfgMgr:GetPetDataById(petId)
  411. local state, curAdvLv, owned = ManagerContainer.DataMgr.PetDataMgr:GetPetCollectRewardState(petId)
  412. for i = 1, self.rewards.bar.transform.childCount do
  413. self.rewards.bar.transform:GetChild(i - 1).gameObject:SetActive(false)
  414. end
  415. if cfgData.PetReward then
  416. for i = 1, #cfgData.PetReward do
  417. local adv = cfgData.PetReward[i][1]
  418. local barItem
  419. if self.rewards.bar.transform.childCount >= i then
  420. barItem = self.rewards.bar.transform:GetChild(i - 1)
  421. else
  422. barItem = UnityEngine.GameObject.Instantiate(self.rewards.barItem).transform
  423. barItem.transform:SetParent(self.rewards.bar.transform)
  424. barItem.transform.localPosition = Vector3.zero
  425. barItem.transform.localScale = Vector3.one
  426. end
  427. barItem.gameObject:SetActive(true)
  428. local bar = barItem:Find("bar")
  429. local box = barItem:Find("Box")
  430. --local iconSmallItem = box:Find("Item/IconSmallItem")
  431. --local iconItemlua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", iconSmallItem.gameObject)
  432. --local data = {cfgId = cfgData.PetReward[i][2], num = cfgData.PetReward[i][3]}
  433. --IconItemCtr:SetData(self, iconItemlua, data, Enum.ItemIEnterType.Bag)
  434. --iconItemlua.bg.image.raycastTarget = false
  435. local numText = box:Find("Item/Num"):GetComponent(Enum.TypeInfo.TextMeshProUGUI)
  436. numText.text = cfgData.PetReward[i][3]
  437. local animator = box:GetComponent(Enum.TypeInfo.Animator)
  438. if curAdvLv >= adv and owned then
  439. local rewarded = BitUtil.RshiftNumBandOne(state, adv) == 1
  440. animator:Play(rewarded and "BoxReceived" or "BoxAvailable")
  441. bar.gameObject:SetActive(true)
  442. else
  443. animator:Play("BoxNormal")
  444. bar.gameObject:SetActive(false)
  445. end
  446. local button = box:GetComponent(Enum.TypeInfo.Button)
  447. self.uiBase:AddButtonUniqueEventListener(button, self, self.OnPetBoxClick, adv)
  448. barItem:Find("IconLv").gameObject:SetActive(false)
  449. barItem:Find("PetLv").gameObject:SetActive(true)
  450. local text = barItem:Find("PetLv"):GetComponent(Enum.TypeInfo.TextMeshProUGUI)
  451. text.text = adv == 0 and I18N.T("GetPets") or "+"..adv
  452. end
  453. end
  454. end
  455. function UICollectTipsView:OnCardBoxClick(button, params)
  456. local id = self.controller:GetCfgId()
  457. local lv = params[0]
  458. local logicData = ManagerContainer.DataMgr.CollectionBookData:GetCollectionBookDataById(id)
  459. if logicData and lv <= logicData.cardLevel then
  460. local rewarded = BitUtil.RshiftNumBandOne(logicData.rewardRec, lv - 1) == 1
  461. if rewarded then
  462. return
  463. end
  464. else
  465. return
  466. end
  467. ManagerContainer.DataMgr.CollectionBookData:SendCardHandBookReward(id, lv)
  468. end
  469. function UICollectTipsView:OnPetBoxClick(button, params)
  470. local id = self.controller:GetCfgId()
  471. local state, curAdvLv, owned = ManagerContainer.DataMgr.PetDataMgr:GetPetCollectRewardState(id)
  472. local advMaxLv, petId = ManagerContainer.DataMgr.PetDataMgr:GetSomePetMaxAdvLvByCfgId(id)
  473. local adv = params[0]
  474. if curAdvLv >= adv and owned then
  475. local rewarded = BitUtil.RshiftNumBandOne(state, adv) == 1
  476. if rewarded then
  477. return
  478. end
  479. else
  480. return
  481. end
  482. ManagerContainer.DataMgr.PetDataMgr:SendPetReward(id, adv, petId)
  483. end
  484. function UICollectTipsView:RefreshFirstRank(playerInfo, time)
  485. self.bottom.head:SetActive(true)
  486. self.bottom.label:SetActive(true)
  487. self.bottom.info:SetActive(true)
  488. local playerHead = CommonUtil.GetPlayerHeadIcon(playerInfo);
  489. local jobData = ManagerContainer.CfgMgr:GetJobDataById(playerInfo.config_id)
  490. local fakerData = {ProfessionIcon = jobData.JobIcon, HeadIcon = playerHead, Level = playerInfo.level, IsHero = true};
  491. CommonUtil.SetPlayerHeadAndFrame(self, self.bottom.headItem, fakerData,false, playerInfo.head_frame_id, self, self.OnPlayerClick, playerInfo.uid);
  492. self.bottom.nickname.text.text = CommonUtil.GetVaildNickName(playerInfo.nick_name)
  493. if time then
  494. local dateTime = ManagerContainer.LuaTimerMgr:ParseTimeStamp2Format(time, '%Y/%m/%d')
  495. self.bottom.time.text.text = dateTime
  496. end
  497. end
  498. function UICollectTipsView:OnPlayerClick(button, params)
  499. local uid = params[0]
  500. ManagerContainer.LuaUIMgr:OpenRoleMessagePanel(uid);
  501. end
  502. function UICollectTipsView:OnItemClick(button, params)
  503. local data = params[0]
  504. ManagerContainer.LuaUIMgr:OpenTips(data)
  505. end
  506. function UICollectTipsView:OnHide()
  507. end
  508. function UICollectTipsView:OnShow(data)
  509. self.controller:SetData(data)
  510. end
  511. function UICollectTipsView:OnClose()
  512. CommonUtil.RecycleFromBatchItemsByPrefabName(self, self.collectionAttrItem.prefabName)
  513. end
  514. function UICollectTipsView:OnDispose()
  515. self.controller:OnDispose()
  516. end
  517. return UICollectTipsView