UIForge1View.lua 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. local UIForge1View = require("UIForge/UIForge1View_Generate")
  2. local itemType, jobType
  3. local isFirst = true
  4. local equipDatas
  5. local pageToggleData = {}
  6. local frameTimer
  7. local vec = Vector2(-710,0)
  8. function UIForge1View:OnAwake(data)
  9. self.controller = require("UIForge/UIForge1Ctr"):new()
  10. self.controller:Init(self)
  11. self.controller:SetData(data)
  12. end
  13. function UIForge1View:AddEventListener()
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EQUIP_FORGE_SUCCESS, function(type)
  15. --if type == 1 then
  16. -- self:Refresh(true)
  17. --else
  18. -- self:UIClose()
  19. --end
  20. self:Refresh(true)
  21. end)
  22. end
  23. function UIForge1View:FillContent(data, uiBase)
  24. self.uiBase = uiBase
  25. local gameObject = self.uiBase:GetRoot()
  26. if gameObject ~= nil then
  27. self.gameObject = gameObject
  28. self.transform = gameObject.transform
  29. end
  30. self:InitGenerate(self.transform, data)
  31. self:Init()
  32. end
  33. function UIForge1View:Init()
  34. self:InitGridView()
  35. --self:InitToggles()
  36. --self:InitEquips()
  37. end
  38. function UIForge1View:InitGridView()
  39. local loopGridViewInitParam = SuperScrollView.LoopGridViewInitParam.CopyDefaultInitParam()
  40. loopGridViewInitParam.mSnapVecThreshold = 9999
  41. self.scrollView.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  42. return self:LoopGridUpdate(gridView, itemIndex, row, column)
  43. end, nil, nil, loopGridViewInitParam)
  44. local data = self.controller:GetData()
  45. local idx = data and data[1] or 1
  46. for k, v in pairs(Enum.EquipForgeType) do
  47. local item
  48. if self.toggleGroup.transform.childCount >= k then
  49. item = self.toggleGroup.transform:GetChild(k - 1)
  50. else
  51. local toggle = UnityEngine.GameObject.Instantiate(self.toggle)
  52. item = toggle.transform
  53. item:SetParent(self.toggleGroup.transform)
  54. item.localPosition = Vector3.zero
  55. end
  56. local txt = item:Find("Txt"):GetComponent(Enum.TypeInfo.UILocalizeScript)
  57. txt:SetContent(v[2])
  58. item.localScale = Vector3.one
  59. item.gameObject:SetActive(true)
  60. local toggle = item:GetComponent(Enum.TypeInfo.Toggle)
  61. if k == idx then
  62. toggle.isOn = true
  63. end
  64. self.uiBase:AddToggleEventListener(toggle, self, self.ChangeViewPage, k)
  65. end
  66. local groupRect =self.toggleGroup:GetComponent(Enum.TypeInfo.RectTransform)
  67. groupRect.anchoredPosition = data[1] < 6 and Vector2.zero or vec
  68. self:ChangeViewPage(nil, data[1])
  69. --CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, 1, self.ChangeViewPage)
  70. end
  71. function UIForge1View:InitToggles()
  72. local data = self.controller:GetData()
  73. if data ~= nil then
  74. self.toggleScrollView.loopGridView:MovePanelToItemByIndex(data[1] - 1)
  75. else
  76. self.toggleScrollView.loopGridView:MovePanelToItemByIndex(0)
  77. end
  78. --self.toggleScrollView.loopGridView:RefreshAllShownItem()
  79. end
  80. function UIForge1View:LoopToggleGridUpdate(gridView, itemIndex, row, column)
  81. local data = self.controller:GetData()
  82. local item = gridView:NewListViewItem(self.toggle.name)
  83. local txt = item.transform:Find("Txt"):GetComponent(Enum.TypeInfo.UILocalizeScript)
  84. txt:SetContent(Enum.EquipForgeType[itemIndex + 1][2])
  85. local toggle = item:GetComponent(Enum.TypeInfo.Toggle)
  86. if pageToggleData.toggleDefaultIndex ~= itemIndex + 1 then
  87. toggle.isOn = false
  88. end
  89. return item
  90. end
  91. function UIForge1View:ChangeType(toggle, data, result)
  92. CommonUtil.CloseUIClearAsyncSeqIds(self)
  93. if result then
  94. self.controller:SetData(data)
  95. if isFirst then
  96. isFirst = false
  97. self:InitEquips()
  98. else
  99. self.scrollView.loopGridView:RecycleAllItem()
  100. CommonUtil.ClearGridViewItem(self, Enum.PrefabNames.EquipComposeItem)
  101. self:Refresh()
  102. end
  103. end
  104. end
  105. function UIForge1View:ChangeViewPage(toggle, idx)
  106. local data = Enum.EquipForgeType[idx]
  107. self.controller:SetData(data)
  108. if isFirst then
  109. isFirst = false
  110. self:InitEquips()
  111. else
  112. self.scrollView.loopGridView:RecycleAllItem()
  113. CommonUtil.ClearGridViewItem(self, Enum.PrefabNames.EquipComposeItem)
  114. self:Refresh()
  115. end
  116. end
  117. function UIForge1View:InitEquips()
  118. local data = self.controller:GetData()
  119. itemType = data[3]
  120. if itemType == Enum.SlotEquipType.Weapon then
  121. jobType = data[1]
  122. else
  123. jobType = nil
  124. end
  125. local ownedCoin = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Coin)
  126. equipDatas = ManagerContainer.CfgMgr:GetAllEquipDatasByTypeAndJob1(itemType, jobType)
  127. local minIdx = 0
  128. for i = 1,#equipDatas do
  129. local equipCfgData1 = ManagerContainer.CfgMgr:GetEquipById(equipDatas[i].Id)
  130. local logicData = ManagerContainer.DataMgr.EquipData:GetEquipDataMapById(equipDatas[i].Id)
  131. local count = 0
  132. if logicData ~= nil then
  133. count = logicData.num
  134. end
  135. local canCompose = ownedCoin >= equipCfgData1.CostMoney and count >= 3
  136. if i < #equipDatas then
  137. if canCompose and minIdx == 0 then
  138. minIdx = i - 1
  139. end
  140. end
  141. end
  142. self.scrollView.loopGridView:SetListItemCount(#equipDatas, true)
  143. if minIdx > -1 then
  144. self.scrollView.loopGridView:MovePanelToItemByIndex(minIdx)
  145. end
  146. end
  147. function UIForge1View:Refresh(needRefresh)
  148. local data = self.controller:GetData()
  149. itemType = data[3]
  150. if itemType == Enum.SlotEquipType.Weapon then
  151. jobType = data[1]
  152. else
  153. jobType = nil
  154. end
  155. local ownedCoin = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Coin)
  156. equipDatas = ManagerContainer.CfgMgr:GetAllEquipDatasByTypeAndJob1(itemType, jobType)
  157. local minIdx = 0
  158. for i = 1,#equipDatas do
  159. local equipCfgData1 = ManagerContainer.CfgMgr:GetEquipById(equipDatas[i].Id)
  160. local logicData = ManagerContainer.DataMgr.EquipData:GetEquipDataMapById(equipDatas[i].Id)
  161. local count = 0
  162. if logicData ~= nil then
  163. count = logicData.num
  164. end
  165. local canCompose = ownedCoin >= equipCfgData1.CostMoney and count >= 3
  166. if i < #equipDatas then
  167. if canCompose and minIdx == 0 then
  168. minIdx = i - 1
  169. end
  170. end
  171. end
  172. self.scrollView.loopGridView:SetListItemCount(#equipDatas)
  173. self.scrollView.loopGridView:FinishSnapImmediately()
  174. if minIdx > -1 then
  175. self.scrollView.loopGridView:MovePanelToItemByIndex(minIdx)
  176. end
  177. if needRefresh then
  178. self.scrollView.loopGridView:RefreshAllShownItem()
  179. end
  180. end
  181. function UIForge1View:LoopGridUpdate(gridView, itemIndex, row, column)
  182. local item = gridView:NewListViewItem(Enum.PrefabNames.EquipComposeItem)
  183. item.gameObject.name = itemIndex
  184. local itemLua = CommonUtil.BindGridViewItem2Lua(self, Enum.PrefabNames.EquipComposeItem, item.gameObject)
  185. local logicData = ManagerContainer.DataMgr.EquipData:GetEquipDataMapById(equipDatas[itemIndex + 1].Id)
  186. local count = 0
  187. if logicData ~= nil then
  188. count = logicData.num
  189. end
  190. local data = {cfgId = equipDatas[itemIndex + 1].Id, num = count}
  191. CommonUtil.UpdateItemPrefab(self, itemLua, data, Enum.ItemIEnterType.EquipForge, self, self.OnEquipCompose)
  192. return item
  193. end
  194. function UIForge1View:OnEquipCompose(button, params)
  195. local logicData = params[0]
  196. self.controller:SendEquipForge(logicData.cfgId, logicData.curForgeCount)
  197. end
  198. function UIForge1View:RemoveEventListener()
  199. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  200. end
  201. function UIForge1View:AddUIEventListener()
  202. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  203. --CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, 1, self.ChangeViewPage)
  204. self.uiBase:AddButtonEventListener(self.btnClose.button, function()
  205. self:UIClose()
  206. end)
  207. self.uiBase:AddButtonEventListener(self.AnyBtn.button, function()
  208. self:UIHide()
  209. end)
  210. self.uiBase:AddButtonEventListener(self.btnOneKey.button, function()
  211. local list, totalCost, noMate, coinLack = ManagerContainer.DataMgr.EquipData:GetAllCanForgeEquipIds(itemType, jobType)
  212. if coinLack or coinLack == nil then
  213. CommonUtil.ItemNotEnoughHandle(Enum.ItemType.Coin)
  214. return
  215. end
  216. if noMate or noMate == nil then
  217. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(Enum.ActionNotiveType.MetaLack)
  218. return
  219. end
  220. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIForgePop, {list, CommonUtil.FormatNumber(totalCost), itemType, jobType})
  221. end)
  222. end
  223. function UIForge1View:OnHide()
  224. end
  225. function UIForge1View:OnShow(data)
  226. --self.controller:SetData(data)
  227. --self:Init()
  228. end
  229. function UIForge1View:OnClose()
  230. end
  231. function UIForge1View:OnDispose()
  232. self.scrollView.loopGridView:Dispose()
  233. end
  234. return UIForge1View