UIChangeHeadFrameView.lua 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. local UIChangeHeadFrameView = require("UIRoleMessage/UIChangeHeadFrameView_Generate")
  2. local TaskJumpCtr = require("Common/TaskJumpCtr")
  3. local IconItemCtr = require("Common/IconItemCtr")
  4. function UIChangeHeadFrameView:OnAwake(data)
  5. self.controller = require("UIRoleMessage/UIChangeHeadFrameCtr"):new()
  6. self.controller:Init(self)
  7. self.controller:SetData(data)
  8. end
  9. function UIChangeHeadFrameView:AddEventListener()
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.HEAD_FRAME_CHANGE, self, self.RefreshHeadFrameList);
  11. end
  12. function UIChangeHeadFrameView:FillContent(data, uiBase)
  13. self.uiBase = uiBase
  14. local gameObject = self.uiBase:GetRoot()
  15. if gameObject ~= nil then
  16. self.gameObject = gameObject
  17. self.transform = gameObject.transform
  18. end
  19. self:InitGenerate(self.transform, data)
  20. self:Init()
  21. end
  22. function UIChangeHeadFrameView:Init()
  23. self.curSelectedFrameData = nil
  24. self.curSelectedItem = nil
  25. self:SetHead()
  26. end
  27. function UIChangeHeadFrameView:OnPageInEnd()
  28. self:RefreshHeadFrameList()
  29. self.super.OnPageInEnd(self)
  30. end
  31. function UIChangeHeadFrameView:RemoveEventListener()
  32. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  33. end
  34. function UIChangeHeadFrameView:AddUIEventListener()
  35. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnCloseBtnClick)
  36. self.uiBase:AddButtonEventListener(self.btnUsed.button, self, self.OnChangeBtnClick)
  37. self.uiBase:AddButtonEventListener(self.btnGet.button, self, self.OnGetBtnClick)
  38. self.uiBase:AddButtonEventListener(self.allAtrBtn.button, self, self.OnAllAttrBtnClick)
  39. end
  40. function UIChangeHeadFrameView:OnHide()
  41. end
  42. function UIChangeHeadFrameView:OnShow(data)
  43. self.controller:SetData(data)
  44. end
  45. function UIChangeHeadFrameView:OnClose()
  46. ManagerContainer.DataMgr.HeadFrameDataMgr:SaveRedPointData()
  47. end
  48. function UIChangeHeadFrameView:OnDispose()
  49. self.headFrameList.loopVerticalScrollRect:ClearCells()
  50. self.curSelectedFrameData = nil
  51. self.curSelectedItem = nil
  52. self.controller:OnDispose()
  53. end
  54. function UIChangeHeadFrameView:SetHead()
  55. local curRoleLv = ManagerContainer.DataMgr.UserData:GetRoleLv()
  56. local jobIcon = ManagerContainer.DataMgr.UserData:GetJobIcon()
  57. local headIcon = ManagerContainer.DataMgr.UserData:GetUserHeadIcon()
  58. local _fakerData = {Level = curRoleLv, ProfessionIcon = jobIcon, HeadIcon = headIcon, IsHero = true};
  59. local _headFrameId = ManagerContainer.DataMgr.UserData:GetHeadFrameId();
  60. CommonUtil.SetPlayerHeadAndFrame(self, self.headItem, _fakerData,false, _headFrameId, self, self.OnClickHead);
  61. end
  62. function UIChangeHeadFrameView:RefreshHeadFrameList()
  63. local _headFrameId = ManagerContainer.DataMgr.UserData:GetHeadFrameId();
  64. self:PreviewHeadFrame(_headFrameId)
  65. -- self.headFrameList.loopVerticalScrollRect:ClearCells()
  66. local frameList = ManagerContainer.DataMgr.HeadFrameDataMgr:GetAllHeadFrames()
  67. CommonUtil.LoopGridViewEleCreateNew(self,self.headFrameList.loopVerticalScrollRect,nil,frameList,0,self,self.SetHeadFrameItem);
  68. end
  69. function UIChangeHeadFrameView:SetHeadFrameItem(itemLua, idx, frameData)
  70. CommonUtil.LoadIcon(self, frameData.icon, function (sprite)
  71. itemLua.frameImg.image.sprite = sprite
  72. end,self,"HeadFrameAsync"..idx)
  73. itemLua.used:SetActive(frameData:IsUsing())
  74. itemLua.locked:SetActive((frameData:IsGot() or frameData:IsLoss()))
  75. itemLua.redPoint:SetActive(frameData.redPointState);
  76. itemLua.limited:SetActive(frameData:GetLeftTime() > 0)
  77. itemLua.selected:SetActive(self.curSelectedFrameData == frameData)
  78. if self.curSelectedFrameData == frameData then
  79. self.curSelectedItem = itemLua
  80. end
  81. self.uiBase:AddButtonUniqueEventListener(itemLua.frameImg.button, self, self.OnItemClick, frameData, itemLua)
  82. end
  83. function UIChangeHeadFrameView:OnItemClick(btn, params)
  84. local frameData = params[0]
  85. local itemLua = params[1]
  86. if self.curSelectedItem ~= nil then
  87. self.curSelectedItem.selected:SetActive(false)
  88. end
  89. itemLua.selected:SetActive(true)
  90. itemLua.redPoint:SetActive(false)
  91. self.curSelectedItem = itemLua
  92. frameData:SetRedPointStatus(false)
  93. self:PreviewHeadFrame(frameData.frameId)
  94. end
  95. function UIChangeHeadFrameView:PreviewHeadFrame(headFrameId)
  96. local frameData = ManagerContainer.DataMgr.HeadFrameDataMgr:GetHeadFrameById(headFrameId)
  97. if frameData ~= nil then
  98. self:SetFrameDataInfo(frameData)
  99. CommonUtil.LoadIcon(self, frameData.icon, function (sprite)
  100. self.headItem.frame.image.sprite = sprite
  101. end)
  102. if frameData:IsUsing() or frameData:IsActivated() then
  103. self.btnUsed:SetActive(true)
  104. self.btnGet:SetActive(false)
  105. self.usingTip:SetActive(false)
  106. self.limitedNode:SetActive(true)
  107. elseif frameData:IsGot() then
  108. self.btnUsed:SetActive(false)
  109. self.btnGet:SetActive(true)
  110. self.usingTip:SetActive(false)
  111. self.limitedNode:SetActive(false)
  112. else
  113. self.limitedNode:SetActive(false)
  114. self.btnUsed:SetActive(false)
  115. self.btnGet:SetActive(true)
  116. self.usingTip:SetActive(false)
  117. end
  118. self.frameNode:SetActive(true)
  119. else
  120. self.frameNode:SetActive(false)
  121. self.btnUsed:SetActive(false)
  122. self.btnGet:SetActive(false)
  123. self.usingTip:SetActive(false)
  124. end
  125. self.curSelectedFrameData = frameData
  126. end
  127. function UIChangeHeadFrameView:OnClickHead()
  128. -- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(I18N.T("ChatError1")) --这是你自己
  129. end
  130. function UIChangeHeadFrameView:SetFrameDataInfo(frameData)
  131. -- LogError("click frameId:" .. frameData.frameId)
  132. self:HideAllAttrGo()
  133. self.headFrameName.text.text = frameData.name
  134. self.headFrameDesc.text.text = frameData.desc
  135. self.leftTimeTxt.text.text = self:CalcTimeStr(frameData:GetLeftTime())
  136. local attrs = frameData:GetAttrs()
  137. if attrs ~= nil then
  138. for i =1, #attrs do
  139. local attr = attrs[i]
  140. local attrLua = self:GetAttrItemGo(i)
  141. if attrLua ~= nil and attr ~= nil then
  142. attrLua.nameText.text.text = I18N.T("Attr_"..attr[1])
  143. attrLua.numberText.text.text = CommonUtil.HeroAttrFormatValueNoSign(attr[1], attr[2])
  144. attrLua:SetActive(true)
  145. end
  146. end
  147. self.attrNone:SetActive(#attrs == 0)
  148. else
  149. self.attrNone:SetActive(true)
  150. end
  151. end
  152. function UIChangeHeadFrameView:HideAllAttrGo()
  153. for idx = 1, 3 do
  154. local go = self:GetAttrItemGo(idx)
  155. if go ~= nil then
  156. go:SetActive(false)
  157. end
  158. end
  159. end
  160. function UIChangeHeadFrameView:GetAttrItemGo(idx)
  161. if idx == 1 then
  162. return self.attrBox.attrItem1
  163. elseif idx == 2 then
  164. return self.attrBox.attrItem2
  165. elseif idx == 3 then
  166. return self.attrBox.attrItem3
  167. end
  168. return nil
  169. end
  170. function UIChangeHeadFrameView:CalcTimeStr(_timeSecond)
  171. local _timeStr = I18N.T("Forever"); --永久
  172. if _timeSecond >= 0 then
  173. _timeStr = tostring(_timeSecond);
  174. local _timeNumber = tonumber(_timeStr)
  175. if _timeSecond >= 60 and _timeSecond < Constant.OneDaySeconds then
  176. _timeStr = DateTimeUtil.convertSeconds2TimeStr1(_timeNumber, true, false, false);
  177. elseif _timeSecond >= Constant.OneDaySeconds then
  178. _timeStr = DateTimeUtil.convertSeconds2TimeStr1(_timeNumber, false, false, false);
  179. else
  180. _timeStr = "1" .. I18N.T("MINS");
  181. end
  182. end
  183. return _timeStr;
  184. end
  185. function UIChangeHeadFrameView:OnChangeBtnClick()
  186. if self.curSelectedFrameData == nil then
  187. return
  188. end
  189. if self.curSelectedFrameData:IsUsing() then
  190. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("已使用")
  191. return
  192. end
  193. ManagerContainer.DataMgr.HeadFrameDataMgr:SendChangeHeadFrameReq(self.curSelectedFrameData.frameId)
  194. end
  195. function UIChangeHeadFrameView:OnGetBtnClick()
  196. if self.curSelectedFrameData == nil then
  197. return
  198. end
  199. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(self.curSelectedFrameData.tips)
  200. end
  201. function UIChangeHeadFrameView:OnAllAttrBtnClick()
  202. local allFrames = ManagerContainer.DataMgr.HeadFrameDataMgr:GetAllHeadFrames()
  203. local attrList = {}
  204. for i = 7, 16 do
  205. if i ~= 8 then
  206. attrList[i] = 0
  207. end
  208. end
  209. if allFrames ~= nil then
  210. for i=1, #allFrames do
  211. local frame = allFrames[i]
  212. if frame:IsOwned() then
  213. local attrs = frame:GetAttrs()
  214. if attrs ~= nil then
  215. for j = 1, #attrs do
  216. if attrList[attrs[j][1]] == nil then
  217. attrList[attrs[j][1]] = attrs[j][2]
  218. else
  219. attrList[attrs[j][1]] = attrList[attrs[j][1]] + attrs[j][2]
  220. end
  221. end
  222. end
  223. end
  224. end
  225. end
  226. local baseAttrs = {}
  227. for key, value in pairs(attrList) do
  228. table.insert(baseAttrs, {key, value})
  229. end
  230. table.sort(baseAttrs, function(a, b)
  231. return a[1] < b[1]
  232. end)
  233. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIFashionTotal,{title="HeadFrameTotalProperty", attrs=baseAttrs})
  234. end
  235. function UIChangeHeadFrameView:OnCloseBtnClick()
  236. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIChangeHeadFrame);
  237. end
  238. return UIChangeHeadFrameView