RuneShopRewardsItemCtr.lua 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. local RuneShopRewardsItemCtr = {}
  2. --战令悬赏每级
  3. function RuneShopRewardsItemCtr:SetData(wnd, itemlua, logicData1, enterType, onClickOwner, onClickCB, params)
  4. if logicData1 == nil then return end
  5. self:SetIconDatatt(wnd, itemlua.rewardsLeft.iconItem, logicData1, enterType, onClickOwner, self.ShowItemTips, params,false)
  6. self:SetIconDatatt(wnd, itemlua.rewardsRight.iconItem, logicData1, enterType, onClickOwner, self.ShowCashItemTips, params,true)
  7. end
  8. local function GetPath(path, isSmall)
  9. return isSmall and path.."_s" or path
  10. end
  11. function RuneShopRewardsItemCtr:ShowItemTips(button, params)
  12. local data = clone(params[0])
  13. --LogError("进入了图标tips"..Inspect(data))
  14. --data.displayBtn = true
  15. local _extData = {_id = data.cfgData.ID, cfgId = data.cfgId}
  16. local tipsdara = {}
  17. tipsdara.cfgId = data.cfgData.Reward[1][1]
  18. tipsdara.num = data.cfgData.Reward[1][2]
  19. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(data.cfgId)
  20. if itemCfgData and itemCfgData.SkipInterface > 0 then
  21. if data.state == nil then data.state = 0 end
  22. data.state = Bit.bor(data.state, Bit.lshift(1, Enum.TipsEnterType.BtnGoto)) --data.state + CommonUtil.Get2Powers(Enum.TipsEnterType.BtnGoto)
  23. end
  24. if data.isReward == 2 then
  25. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EXPLORE_REWARD_REQ,{level = data.cfgData.Lv, reward_type = 1})
  26. --LogError("领取普通奖励"..data.cfgData.Lv)
  27. else
  28. ManagerContainer.LuaUIMgr:OpenTips(tipsdara, _extData)
  29. end
  30. end
  31. function RuneShopRewardsItemCtr:ShowCashItemTips(button, params)
  32. local data = clone(params[0])
  33. --LogError("进入了图标tips"..Inspect(data))
  34. --data.displayBtn = true
  35. local _extData = {_id = data.cfgData.ID, cfgId = data.cfgId}
  36. local tipsdara = {}
  37. tipsdara.cfgId = data.cfgData.CashReward[1][1]
  38. tipsdara.num = data.cfgData.CashReward[1][2]
  39. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(data.cfgId)
  40. if itemCfgData and itemCfgData.SkipInterface > 0 then
  41. if data.state == nil then data.state = 0 end
  42. data.state = Bit.bor(data.state, Bit.lshift(1, Enum.TipsEnterType.BtnGoto)) --data.state + CommonUtil.Get2Powers(Enum.TipsEnterType.BtnGoto)
  43. end
  44. if data.isCashReward == 2 then
  45. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EXPLORE_REWARD_REQ,{level= data.cfgData.Lv,reward_type= 2})
  46. --LogError("领取了高级奖励"..data.cfgData.Lv)
  47. elseif data.isCashReward == 1 then
  48. ManagerContainer.LuaUIMgr:OpenTips(tipsdara, _extData)
  49. else
  50. if ManagerContainer.DataMgr.RuneShopDataMgr:GetRewardsData():GetRewardsIsCash() == 0 then
  51. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRewardsBuyTips, {runeShopType, nil, 0})
  52. else
  53. ManagerContainer.LuaUIMgr:OpenTips(tipsdara, _extData)
  54. end
  55. end
  56. end
  57. function RuneShopRewardsItemCtr:SetIconDatatt(wnd, itemlua, logicData, enterType, onClickOwner, onClickCB, params , isAnvanced)
  58. --LogError("bbb"..Inspect(logicData))
  59. local cfgdatat
  60. local redpointState = false
  61. local baseData = ManagerContainer.DataMgr.RuneShopDataMgr:GetShopData(Enum.RuneShopType.Rewards,nil,false)
  62. if isAnvanced then
  63. cfgdatat = logicData.cfgData.CashReward
  64. -- if logicData.isCashReward == 0 and baseData:GetRewardsIsCash() == 1 then
  65. -- local curlv = baseData:GetShowRewardCurLv()
  66. -- if logicData.cfgData.lv < curlv or logicData.cfgData.lv == curlv then
  67. -- redpointState = true
  68. -- end
  69. -- end
  70. if logicData.isCashReward == 2 then
  71. redpointState = true
  72. end
  73. --logicData.cfgData.isCash = 1
  74. else
  75. cfgdatat = logicData.cfgData.Reward
  76. -- if logicData.isReward == 0 and baseData:GetRewardsIsCash() == 1 then
  77. -- local curlv = baseData:GetShowRewardCurLv()
  78. -- if logicData.cfgData.lv < curlv or logicData.cfgData.lv == curlv then
  79. -- redpointState = true
  80. -- end
  81. -- end
  82. if logicData.isReward == 2 then
  83. redpointState = true
  84. end
  85. --logicData.cfgData.isCash = 0
  86. end
  87. if redpointState then
  88. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.RuneShopRewards, true)
  89. end
  90. local cfgId = cfgdatat[1][1]
  91. local num = cfgdatat[1][2] or 0
  92. local vip = cfgdatat.vip or 0
  93. local strengthLevel = logicData.strengthLevel or 0
  94. local advLv = logicData.advanceLevel or 0
  95. local gridViewItem = itemlua.gameObject:GetComponent(Enum.TypeInfo.UIGridViewMark)
  96. local isSmall = gridViewItem.OriName == "IconSmallItem"
  97. itemlua.icon.image.sprite = nil
  98. itemlua.conertips.gameObject:SetActive(logicData.cornerType and logicData.cornerType > 0);
  99. if logicData.cornerType == Enum.FromType.Extrra then
  100. itemlua.text.text.text = I18N.T("SignInTips2"); --额外
  101. --TODO:将来判定是否要改变角标图片
  102. end
  103. local itemCfgData, cfgData, iconType, quality
  104. if enterType == Enum.ItemIEnterType.Partner then
  105. itemCfgData = ManagerContainer.CfgMgr:GetPartnerMapItemDataById(cfgId)
  106. if itemCfgData == nil then
  107. LogError(cfgId.. " partner isnt exist in ItemCfg")
  108. return
  109. end
  110. iconType = Enum.ItemType.Parter
  111. cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(cfgId)
  112. if cfgData == nil then
  113. LogError(cfgId.. " isnt exist in PartnerCfg")
  114. return
  115. end
  116. else
  117. itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  118. if itemCfgData == nil then
  119. LogError(cfgId.. " isnt exist in ItemCfg")
  120. return
  121. end
  122. iconType = itemCfgData.ResType
  123. cfgData = itemCfgData
  124. if iconType == Enum.ItemType.Equip then
  125. cfgData = ManagerContainer.CfgMgr:GetEquipById(cfgId)
  126. if cfgData == nil then
  127. LogError(cfgId.. " isnt exist in EquipCfg")
  128. return
  129. end
  130. elseif iconType == Enum.ItemType.Card then
  131. cfgData = ManagerContainer.CfgMgr:GetCardDataById(cfgId)
  132. if cfgData == nil then
  133. LogError(cfgId.. " isnt exist in CardCfg")
  134. return
  135. end
  136. elseif iconType == Enum.ItemType.FashionPaper then
  137. cfgData = ManagerContainer.CfgMgr:GetFashionPaperById(cfgId)
  138. if cfgData == nil then
  139. LogError(cfgId.. " isnt exist in FashionPaperCfg")
  140. return
  141. end
  142. elseif iconType == Enum.ItemType.Parter then
  143. if cfgData == nil then
  144. LogError(cfgId.. " isnt exist in PartnerCfg")
  145. return
  146. end
  147. elseif iconType == Enum.ItemType.Pet then
  148. cfgData = ManagerContainer.CfgMgr:GetPetDataById(cfgId)
  149. if cfgData == nil then
  150. LogError(cfgId.. " isnt exist in PetCfg")
  151. return
  152. end
  153. if itemCfgData.Quality == 0 then
  154. itemCfgData.Quality = cfgData.Fame
  155. end
  156. if itemCfgData.Icon == "" then
  157. itemCfgData.Icon = cfgData.Icon
  158. end
  159. end
  160. end
  161. quality = itemCfgData.Quality
  162. local qualityFxName = nil
  163. local frameIcon = Constant.Quality_Frame_Icons[quality]
  164. if quality >= Enum.QualityType.Purple then
  165. qualityFxName = Constant.Quality_FX[quality - Enum.QualityType.Blue]
  166. end
  167. if iconType == Enum.ItemType.Compose and itemCfgData.DebrisShow == 2 then
  168. iconType = Enum.ItemType.Pet
  169. end
  170. if iconType == Enum.ItemType.Equip or iconType == Enum.ItemType.Card then
  171. frameIcon = Constant.Quality_CardBg_Icons[quality]
  172. elseif iconType == Enum.ItemType.Pet then
  173. frameIcon = Constant.Quality_HeadFrame_Icons[quality]
  174. elseif iconType == Enum.ItemType.Parter then
  175. frameIcon = strengthLevel == 0 and Constant.Quality_White_Head_Frame_Icon or Constant.Quality_HeadFrame_Icons[math.min(strengthLevel, #Constant.Quality_HeadFrame_Icons)]
  176. elseif iconType == Enum.ItemType.FashionPaper then
  177. frameIcon = Constant.Quality_Frame_Icons[quality]
  178. end
  179. if itemlua.uiParticle ~= nil and itemlua.uiParticle.EffectName ~= qualityFxName then
  180. wnd:RemoveEffect(itemlua,itemlua.uiParticle.EffectName,itemlua.uiParticle.fxGo)
  181. ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath,itemlua.uiParticle.EffectName,itemlua.uiParticle.fxGo)
  182. itemlua.uiParticle = nil
  183. end
  184. if quality >= 5 then
  185. if qualityFxName == nil then
  186. itemlua.qualityFX:SetActive(false)
  187. else
  188. if itemlua.uiParticle == nil then
  189. local fxGo = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath,qualityFxName)
  190. if fxGo~= nil then
  191. fxGo.transform:SetParent(itemlua.qualityFX.transform)
  192. fxGo.transform.localPosition = Vector3.zero
  193. fxGo.transform.localRotation = Quaternion.identity
  194. fxGo.transform.localScale = Vector3.one
  195. --if tolua.getpeer(fxGo) == nil then
  196. -- tolua.setpeer(fxGo, {})
  197. --end
  198. itemlua.uiParticle = {}
  199. itemlua.uiParticle.fxGo = fxGo
  200. itemlua.uiParticle.EffectName = qualityFxName
  201. local sizeX = itemlua.rectTransform.rect.width
  202. --判断是否父节点为grid
  203. if itemlua.transform.parent then
  204. local parent = itemlua.transform.parent
  205. local parentScale = parent.localScale.x
  206. local grid = parent:GetComponent(Enum.TypeInfo.GridLayoutGroup)
  207. local width = sizeX
  208. if grid then
  209. width = grid.cellSize.x
  210. end
  211. sizeX = width * parentScale
  212. end
  213. local scaleX = sizeX/160
  214. --local sizeY = itemlua.layoutElement.preferredHeight
  215. --local scaleY = sizeY/160
  216. local uiParticle = fxGo:GetComponent(Enum.TypeInfo.UIParticle)
  217. if uiParticle then
  218. uiParticle.scale = scaleX
  219. end
  220. wnd:AddNewEffect(itemlua,qualityFxName,fxGo)
  221. itemlua.qualityFX:SetActive(true)
  222. end
  223. end
  224. end
  225. end
  226. local _iconPath = itemCfgData.Icon
  227. if logicData.isLeader then _iconPath = logicData.leaderIcon end
  228. CommonUtil.SetTotalChildrenGray(itemlua.icon, false)
  229. CommonUtil.LoadIcon(wnd, _iconPath, function (sprite)
  230. itemlua.icon.image.sprite = sprite
  231. end, itemlua, 'IconIcon')
  232. CommonUtil.LoadIcon(wnd, GetPath(frameIcon, isSmall), function (sprite)
  233. itemlua.frame.image.sprite = sprite
  234. end, itemlua, 'IconFrame')
  235. itemlua.frame.image.material = quality >= 3 and ManagerContainer.ResMgr:GetFrameQualityMat() or nil
  236. local needLevel = iconType == Enum.ItemType.Equip or iconType == Enum.ItemType.Card
  237. itemlua.level:SetActive(needLevel)
  238. if needLevel then
  239. local level = 1
  240. if iconType == Enum.ItemType.Equip then
  241. local divide = Constant.Quality_Equip_Divide[cfgData.EquipLevel]
  242. level = divide[2]
  243. elseif iconType == Enum.ItemType.Card then
  244. level = cfgData.CardLevel
  245. end
  246. CommonUtil.LoadIcon(wnd, Constant.Quality_Equip_LV_Icons[level], function (sprite)
  247. itemlua.level.image.sprite = sprite
  248. end, itemlua, 'IconLevel')
  249. end
  250. itemlua.cardLabel:SetActive(iconType == Enum.ItemType.Card)
  251. if iconType == Enum.ItemType.Card then
  252. CommonUtil.LoadIcon(wnd, Constant.Quality_CardType_Icons[cfgData.CardType], function (sprite)
  253. itemlua.cardLabel.image.sprite = sprite
  254. end, itemlua, 'IconType')
  255. end
  256. local needJob = iconType == Enum.ItemType.Parter or iconType == Enum.ItemType.Pet
  257. itemlua.job:SetActive(needJob)
  258. if needJob then
  259. local jobIcon = cfgData.JobIcon
  260. if iconType == Enum.ItemType.Pet then
  261. jobIcon = Constant.Natural_Icons..itemCfgData.NatureType
  262. end
  263. CommonUtil.LoadIcon(wnd, jobIcon, function (sprite)
  264. itemlua.job.image.sprite = sprite
  265. end, itemlua, 'IconJob')
  266. end
  267. local sexLabelVisible = false
  268. if iconType == Enum.ItemType.FashionPaper then
  269. local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(cfgData.FashionId)
  270. if fashionCfgData and fashionCfgData.FashionSex and fashionCfgData.FashionSex > 0 then
  271. sexLabelVisible = true
  272. CommonUtil.LoadIcon(wnd, Constant.Paper_Sex_Icons[fashionCfgData.FashionSex], function (sprite)
  273. itemlua.sexLabel.image.sprite = sprite
  274. end, itemlua, 'IconSex')
  275. end
  276. end
  277. itemlua.sexLabel:SetActive(sexLabelVisible)
  278. if iconType ~= Enum.ItemType.Parter then
  279. if num >= 10000 then
  280. if iconType < 100 then
  281. itemlua.num.text.text = CommonUtil.FormatNumber(num)
  282. else
  283. itemlua.num.text.text = CommonUtil.GetPreciseDecimalFloor(num/10000, 1) ..CommonUtil.Get_Wan_string()-- "萬"--w
  284. end
  285. else
  286. itemlua.num.text.text = tostring(num)
  287. end
  288. else
  289. itemlua.num.text.text = "Lv."..tostring(num)
  290. end
  291. itemlua.redPoint:SetActive(redpointState)
  292. --if enterType == Enum.ItemIEnterType.Bag and num > 1 then
  293. -- itemlua.num:SetActive(true)
  294. --else
  295. -- itemlua.num:SetActive(false)
  296. --end
  297. itemlua.num:SetActive(num > 1)
  298. itemlua.refineLv:SetActive(enterType == Enum.ItemIEnterType.EquipTips and num > 0)
  299. itemlua.refineLv.text.text = "+"..num
  300. itemlua.limited:SetActive(itemCfgData and itemCfgData.ItemTime > 0)
  301. --itemlua.advence:SetActive(iconType == Enum.ItemType.Pet and advLv > 0)
  302. --itemlua.advenceLv.text.text = "+"..advLv
  303. --vip
  304. itemlua.vip:SetActive(vip > 0)
  305. if vip > 0 then
  306. local vipCfgData = ManagerContainer.CfgMgr:GetVipCfgById(vip)
  307. if vipCfgData then
  308. CommonUtil.LoadIcon(wnd, vipCfgData.VipMarkIcon, function (sprite)
  309. itemlua.label.image.sprite = sprite
  310. end, itemlua, 'IconVip')
  311. end
  312. end
  313. self:DebrisShow(wnd, itemCfgData, itemlua)
  314. itemlua.repeatSign:SetActive(false)
  315. if itemCfgData.ActivationItem > 0 then
  316. local isRepeated = ManagerContainer.DataMgr.KeepSakeBookData:IsKeepSakeMaxLv(itemCfgData.ActivationItem)
  317. itemlua.repeatSign:SetActive(isRepeated)
  318. end
  319. if onClickOwner and onClickCB then
  320. itemlua.bg.button.enabled = true
  321. onClickOwner.uiBase:AddButtonUniqueEventListener(itemlua.bg.button, onClickOwner, onClickCB, logicData, itemlua, params)
  322. else
  323. itemlua.bg.button.enabled = false
  324. end
  325. return itemCfgData
  326. end
  327. function RuneShopRewardsItemCtr:DebrisShow(wnd, itemCfgData, itemlua)
  328. itemlua.piece:SetActive(itemCfgData.DebrisShow == 2 or itemCfgData.DebrisShow == 4)
  329. if itemCfgData.DebrisShow == 3 or itemCfgData.DebrisShow == 4 then
  330. if not itemlua.cardLabel.activeSelf then
  331. itemlua.cardLabel:SetActive(true)
  332. end
  333. CommonUtil.LoadIcon(wnd, Constant.Quality_Card_Icons[itemCfgData.Quality], function (sprite)
  334. itemlua.cardLabel.image.sprite = sprite
  335. end, itemlua, 'IconType')
  336. elseif itemCfgData.DebrisShow == 1 or itemCfgData.DebrisShow == 2 then
  337. itemlua.cardLabel:SetActive(false)
  338. end
  339. if itemCfgData.DebrisShow == 1 then
  340. --通用宠物碎片
  341. CommonUtil.SetTotalChildrenGray(itemlua.icon, false)
  342. elseif itemCfgData.DebrisShow == 2 then
  343. --通用定向宠物碎片
  344. CommonUtil.SetTotalChildrenGray(itemlua.icon, true)
  345. local iconPath = Constant.Pet_Debries_Icons[itemCfgData.Quality]
  346. CommonUtil.LoadIcon(wnd, iconPath, function (sprite)
  347. itemlua.piece.image.sprite = sprite
  348. end, itemlua, 'piece')
  349. elseif itemCfgData.DebrisShow == 3 then
  350. --通用卡片碎片
  351. CommonUtil.SetTotalChildrenGray(itemlua.icon, false)
  352. elseif itemCfgData.DebrisShow == 4 then
  353. --通用定向卡片碎片
  354. CommonUtil.SetTotalChildrenGray(itemlua.icon, true)
  355. local iconPath = Constant.Card_Debries_Icons[itemCfgData.Quality]
  356. CommonUtil.LoadIcon(wnd, iconPath, function (sprite)
  357. itemlua.piece.image.sprite = sprite
  358. end, itemlua, 'piece')
  359. end
  360. end
  361. return RuneShopRewardsItemCtr