UIIdolGiftItemCtr.lua 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. local UIIdolGiftItemCtr = {}
  2. function UIIdolGiftItemCtr:SetData(wnd, item, logicData, enterType, onClickOwner, onClickCB)
  3. local brief = ManagerContainer.DataMgr.IdolData:GetPlayerBriefInfoByUid(logicData.uid)
  4. if brief then
  5. local name = CommonUtil.GetVaildNickName(brief.nick_name)
  6. item.flag.playername.text.text = name
  7. local curRoleLv = brief.level
  8. local jobCfgId = brief.config_id
  9. local jobCfgData = ManagerContainer.CfgMgr:GetJobDataById(jobCfgId)
  10. local headIcon = CommonUtil.GetPlayerHeadIcon(brief)
  11. local _fakerData = {Level = curRoleLv, ProfessionIcon = jobCfgData.JobIcon, HeadIcon = headIcon, IsHero = true};
  12. local _headFrameId = brief.head_frame_id
  13. CommonUtil.SetPlayerHeadAndFrame(wnd, item.flag.headItem, _fakerData,false, _headFrameId,wnd,wnd.OnClickOtherHeadBtn,brief.uid);
  14. end
  15. if onClickOwner and onClickCB then
  16. item.btnSupport.button.enabled = true
  17. onClickOwner.uiBase:AddButtonUniqueEventListener(item.btnSupport.button, onClickOwner, onClickCB, logicData)
  18. else
  19. item.btnSupport.button.enabled = false
  20. end
  21. self:InitLoveGiftItems(wnd,item,logicData)
  22. end
  23. function UIIdolGiftItemCtr:InitLoveGiftItems(wnd,item,logicData)
  24. local uid = logicData.uid
  25. local rewardData = ManagerContainer.DataMgr.IdolData:GetFansRewardInfoByUid(uid)
  26. if not rewardData then
  27. rewardData = {hotVal = 0,rewardState={false,false,false,false,false}}
  28. end
  29. local ticket = rewardData.hotVal or 0
  30. local loveGiftItems = item.loveGiftItems
  31. if not loveGiftItems then
  32. loveGiftItems = {item.slider.item}
  33. item.loveGiftItems = loveGiftItems
  34. end
  35. local BoxData = ManagerContainer.CfgMgr:GetAidouluCfg()
  36. local len1 = #loveGiftItems
  37. local len2 = BoxData
  38. local maxHot = BoxData[#BoxData].ConditionHot
  39. item.slider.num.text.text = ticket
  40. item.slider.slider.maxValue = maxHot
  41. item.slider.slider.value = math.min(maxHot,ticket)
  42. if BoxData then
  43. local rectW = item.slider.slider.handleRect.parent.rect.width
  44. local defPos = item.slider.item.transform.anchoredPosition3D
  45. len2 = #BoxData
  46. for i = 1, len2 do
  47. local loveGiftItem = nil
  48. local trans = nil
  49. if i <= len1 then
  50. loveGiftItem = loveGiftItems[i]
  51. trans = loveGiftItem.transform
  52. else
  53. loveGiftItem = UnityEngine.GameObject.Instantiate(item.slider.item.gameObject)
  54. trans = loveGiftItem.transform
  55. trans:SetParent(item.slider.item.transform.parent)
  56. trans.localRotation = Quaternion.identity
  57. trans.localScale = Vector3.one
  58. if tolua.getpeer(loveGiftItem) == nil then
  59. tolua.setpeer(loveGiftItem, {})
  60. end
  61. local tmp = trans:Find('text/num').gameObject
  62. if tolua.getpeer(tmp) == nil then
  63. tolua.setpeer(tmp, {})
  64. end
  65. loveGiftItem.num = tmp
  66. tmp.text = tmp:GetComponent(Enum.TypeInfo.Text)
  67. local tmp = trans:Find('BtnBox').gameObject
  68. if tolua.getpeer(tmp) == nil then
  69. tolua.setpeer(tmp, {})
  70. end
  71. loveGiftItem.btnBox = tmp
  72. tmp.button = tmp:GetComponent(Enum.TypeInfo.Button)
  73. tmp.box1 = trans:Find('BtnBox/box1').gameObject
  74. tmp.box2 = trans:Find('BtnBox/box2').gameObject
  75. tmp.box3 = trans:Find('BtnBox/box3').gameObject
  76. tmp.box4 = trans:Find('BtnBox/box4').gameObject
  77. loveGiftItems[i] = loveGiftItem
  78. end
  79. loveGiftItem:SetActive(true)
  80. local loveVal = BoxData[i].ConditionHot
  81. local posX = rectW
  82. if maxHot > 0 then
  83. posX = posX * ((loveVal / maxHot) - 0.5)
  84. end
  85. trans:SetSiblingIndex(0)
  86. trans.anchoredPosition3D = Vector3(posX, defPos.y, defPos.z)
  87. loveGiftItem.num.text.text = tostring(loveVal)
  88. local rewardState = rewardData.rewardState
  89. loveGiftItem.btnBox.box1:SetActive(false)
  90. loveGiftItem.btnBox.box2:SetActive(false)
  91. loveGiftItem.btnBox.box3:SetActive(false)
  92. loveGiftItem.btnBox.box4:SetActive(false)
  93. if rewardData.hotVal >= loveVal then
  94. if logicData.box < i then
  95. loveGiftItem.btnBox.box2:SetActive(true)
  96. else
  97. if rewardState[i] then
  98. loveGiftItem.btnBox.box4:SetActive(true)
  99. else
  100. loveGiftItem.btnBox.box1:SetActive(true)
  101. end
  102. end
  103. else
  104. if logicData.box < i then
  105. loveGiftItem.btnBox.box2:SetActive(true)
  106. else
  107. local selfUid = ManagerContainer.DataMgr.UserData:GetUserId()
  108. if selfUid == uid then
  109. if rewardState[i] then
  110. loveGiftItem.btnBox.box4:SetActive(true)
  111. else
  112. loveGiftItem.btnBox.box1:SetActive(true)
  113. end
  114. else
  115. loveGiftItem.btnBox.box3:SetActive(true)
  116. end
  117. end
  118. end
  119. local data = {loveVal = loveVal,ticket = rewardData.hotVal,rewardState = rewardData.rewardState,boxId = i,boxNum = logicData.box,obj =loveGiftItem,uid = logicData.uid}
  120. wnd.uiBase:AddButtonUniqueEventListener(loveGiftItem.btnBox.button, wnd, wnd.OnClickBoxItem, data)
  121. end
  122. end
  123. for i = len2 + 1, len1 do
  124. if loveGiftItems[i] then
  125. loveGiftItems[i]:SetActive(false)
  126. end
  127. end
  128. end
  129. return UIIdolGiftItemCtr