UITransPerformView.lua 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. local UITransPerformView = require("UIRoleMain/UITransPerformView_Generate")
  2. local MultiTypeAssetLoadSystem = require("MultiTypeAssetLoadSystem")
  3. local displayPos = Vector3(0, 0, -1)
  4. local transBgPos = Vector3(1, -3.2, -20)
  5. local transPar1Name = "UI/Fx_HeroTrans_01"
  6. local transPar2Name = "UI/Fx_HeroTrans_02"
  7. local transPar3Name = "UI/Fx_Hero_ZhoaMu"
  8. local time1, time2, time3
  9. function UITransPerformView:OnAwake(data)
  10. self.controller = require("UIRoleMain/UITransPerformCtr"):new()
  11. self.controller:Init(self)
  12. self.controller:SetData(data)
  13. end
  14. function UITransPerformView:AddEventListener()
  15. end
  16. function UITransPerformView:FillContent(data, uiBase)
  17. self.uiBase = uiBase
  18. local gameObject = self.uiBase:GetRoot()
  19. if gameObject ~= nil then
  20. self.gameObject = gameObject
  21. self.transform = gameObject.transform
  22. end
  23. self:InitGenerate(self.transform, data)
  24. self:Init()
  25. end
  26. function UITransPerformView:Init()
  27. local data = self.controller:GetData()
  28. self.isPlayEnd = false
  29. self.type = data[1]
  30. self.previewSystem = data[2]
  31. self.isLeader = data[3]
  32. self.viewSystem = data[4]
  33. self.oldId = data[5]
  34. self.newId = data[6]
  35. self.model.rawImage.texture = self.previewSystem:GetRenderTexture()
  36. self.curedSucceedAnim:SetActive(false)
  37. self.succeedAnim:SetActive(false)
  38. self.skillBox:SetActive(false)
  39. local timesStr = GlobalConfig.Instance:GetConfigStrValue(151)
  40. local times = CommonUtil.DeserializeGlobalStrToTable(timesStr)
  41. time1,time2,time3 = tonumber(times[1]), tonumber(times[2]), tonumber(times[3])
  42. self.loadSystem = MultiTypeAssetLoadSystem:new()
  43. self.loadSystem:SetCompleteCB(self, self.PreloadedAssets)
  44. self:PreLoadTransParticles()
  45. --self.model.rectTransform.sizeDelta = Vector2(UnityEngine.Screen.height, UnityEngine.Screen.height)
  46. end
  47. function UITransPerformView:PreLoadTransParticles()
  48. self.loadSystem:RemoveLoadAllAsset()
  49. self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.EffectPath, transPar2Name)
  50. if self.type >= 2 then
  51. self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.EffectPath, transPar1Name)
  52. elseif self.type == 1 then
  53. self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.EffectPath, transPar3Name)
  54. end
  55. self.loadSystem:Begin()
  56. end
  57. function UITransPerformView:PreloadedAssets()
  58. self.transPar1Go = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath, transPar1Name)
  59. self.transPar2Go = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath, transPar2Name)
  60. self.transPar3Go = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath, transPar3Name)
  61. if self.transPar1Go then
  62. self.transPar1Go:SetActive(false)
  63. end
  64. self.transPar2Go:SetActive(false)
  65. if self.transPar3Go then
  66. self.transPar3Go:SetActive(false)
  67. end
  68. self.model:SetActive(true)
  69. self:StartPerform()
  70. end
  71. function UITransPerformView:StartPerform()
  72. if self.type == 1 then
  73. self:RecruitDisplayStart()
  74. elseif self.type >= 2 then
  75. self:TransferDisplayStart()
  76. end
  77. end
  78. function UITransPerformView:RecruitDisplayStart()
  79. local partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(self.newId)
  80. self.title.text.text = I18N.SetLanguageValue("ChangeJobSkillShow", I18N.T(partnerData.JobName))
  81. self.viewSystem:RefreshView(Enum.RoleInEnvType.RoleMainView, self.newId, nil, nil, self, self.LoadModelCB)
  82. end
  83. function UITransPerformView:TransferDisplayStart()
  84. self.transferState = 1
  85. local curCfgData
  86. if self.isLeader then
  87. curCfgData = ManagerContainer.CfgMgr:GetJobDataById(self.newId)
  88. else
  89. curCfgData = ManagerContainer.CfgMgr:GetPartnerDataById(self.newId)
  90. end
  91. self.title.text.text = I18N.SetLanguageValue("ChangeJobSkillShow", I18N.T(curCfgData.JobName))
  92. self:DisplayParticle(self.transPar1Go)
  93. if self.isLeader then
  94. local userData = ManagerContainer.DataMgr.UserData
  95. local roleId = CommonUtil.JobIdToRoleId(self.oldId, userData:GetSex())
  96. local viewData = CommonUtil.TableClone(userData:GetViewData())
  97. viewData.fashionData = nil
  98. self.viewSystem:RefreshView(Enum.RoleInEnvType.Transfer, roleId, viewData, nil, self, self.LoadModelCB)
  99. else
  100. self.viewSystem:RefreshView(Enum.RoleInEnvType.Transfer, self.oldId, nil, nil, self, self.LoadModelCB)
  101. end
  102. self.model.rawImage.texture = self.previewSystem:GetRenderTexture()
  103. end
  104. function UITransPerformView:LoadModelCB(model)
  105. self.curModel = model
  106. if self.previewSystem then
  107. self.previewSystem:UpdateGo(model)
  108. end
  109. --self.curModel.transform.parent = nil
  110. self.curModel.transform.position = displayPos
  111. self.curModel:SetActive(true)
  112. if self.type == 1 then
  113. self.viewSystem:RolePlayAni(self.curModel, "f_Injured")
  114. self.transform:DOScaleZ(1, time1):OnComplete(function()
  115. self:DisplayParticle(self.transPar3Go)
  116. self.viewSystem:RolePlayAni(self.curModel, "f_Save")
  117. end)
  118. self.transform:DOScaleZ(1, time2):OnComplete(function()
  119. self.curedSucceedAnim:SetActive(true)
  120. end)
  121. self.transform:DOScale(1, time3):OnComplete(function()
  122. self:RefreshJobSuccessSkills()
  123. end)
  124. else
  125. if self.transferState == 1 then
  126. --播放浮现动画
  127. self.viewSystem:RolePlayAni(self.curModel, "f_Transfer")
  128. self.transform:DOScale(1, time1):OnComplete(function()
  129. self.transferState = 2
  130. self:DisplayParticle(self.transPar2Go)
  131. self:Recycle()
  132. if self.isLeader then
  133. local userData = ManagerContainer.DataMgr.UserData
  134. local roleId = CommonUtil.JobIdToRoleId(self.newId, userData:GetSex())
  135. local viewData = CommonUtil.TableClone(userData:GetViewData())
  136. viewData.fashionData = nil
  137. self.viewSystem:RefreshView(Enum.RoleInEnvType.Transfer, roleId, viewData, nil, self, self.LoadModelCB)
  138. else
  139. self.viewSystem:RefreshView(Enum.RoleInEnvType.Transfer, self.newId, nil, nil, self, self.LoadModelCB)
  140. end
  141. end)
  142. self.transform:DOScaleZ(1, time2):OnComplete(function()
  143. self.succeedAnim:SetActive(true)
  144. end)
  145. self.transform:DOScale(1, time3):OnComplete(function()
  146. self:RefreshJobSuccessSkills()
  147. end)
  148. elseif self.transferState == 2 then
  149. --播放转职后展示动画
  150. self.viewSystem:RolePlayAni(self.curModel, "f_Transfer_show")
  151. end
  152. end
  153. end
  154. function UITransPerformView:Recycle()
  155. if self.previewSystem and self.curModel ~= nil then
  156. self.curModel:SetActive(false)
  157. self.previewSystem:RemoveGo(self.curModel)
  158. self.viewSystem:Recycle()
  159. self.curModel = nil
  160. end
  161. end
  162. function UITransPerformView:RefreshJobSuccessSkills()
  163. local skillList
  164. if self.type == 1 then
  165. local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleMain1)
  166. if ctr then
  167. skillList = ctr:GetSkillList()
  168. end
  169. elseif self.type == 2 then
  170. local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleChangeJob)
  171. if ctr then
  172. skillList = ctr:GetSkillList()
  173. end
  174. elseif self.type == 3 then
  175. local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleChangeJobTips)
  176. if ctr then
  177. skillList = ctr:GetSkillList()
  178. end
  179. end
  180. if skillList == nil then return end
  181. CommonUtil.LoopGridViewEleCreateNoItem(self, self.skillBox.scrollView.loopVerticalScrollRect, skillList, 0, self, self.RefreshSuccessSkill)
  182. self.skillBox:SetActive(true)
  183. self.isPlayEnd = true
  184. end
  185. function UITransPerformView:RefreshSuccessSkill(go, idx)
  186. local skillItemGo = go.transform:Find("SkillItem")
  187. local skillNameText = go.transform:Find("ItemTxt"):GetComponent(Enum.TypeInfo.TextMeshProUGUI)
  188. local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'SkillItem', skillItemGo)
  189. local skillData
  190. if self.type == 1 then
  191. local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleMain1)
  192. if ctr then
  193. skillData = ctr:GetSkillItemInfoByIndex(idx)
  194. end
  195. elseif self.type == 2 then
  196. local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleChangeJob)
  197. if ctr then
  198. skillData = ctr:GetSkillItemInfoByIndex(idx)
  199. end
  200. elseif self.type == 3 then
  201. local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleChangeJobTips)
  202. if ctr then
  203. skillData = ctr:GetSkillItemInfoByIndex(idx)
  204. end
  205. end
  206. if skillData then
  207. local skillId = skillData.SkillId
  208. local skillType = skillData.SkillType
  209. local skillLv = 1
  210. local skillCfgData = ManagerContainer.CfgMgr:GetSkillCfgByType(skillType, skillId, skillLv)
  211. if skillCfgData then
  212. if skillCfgData.Icon then
  213. CommonUtil.LoadIcon(self, skillCfgData.Icon, function (sprite)
  214. itemlua.icon.image.sprite = sprite
  215. end, itemlua, "SkillIconAsyncIdx")
  216. end
  217. itemlua.num.text.text = (I18N.SetLanguageValue('Lv') .. tostring(skillLv))
  218. skillNameText.text = I18N.SetLanguageValue(skillCfgData.Name)
  219. end
  220. end
  221. end
  222. function UITransPerformView:DisplayParticle(go)
  223. self.previewSystem:UpdateGo(go)
  224. go:SetActive(true)
  225. go.transform.parent = nil
  226. go.transform.position = displayPos
  227. end
  228. function UITransPerformView:RecyclePars()
  229. if self.transPar1Go then
  230. ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath, transPar1Name, self.transPar1Go)
  231. end
  232. ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath, transPar2Name, self.transPar2Go)
  233. if self.transPar3Go then
  234. ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath, transPar1Name, self.transPar3Go)
  235. end
  236. self.transPar1Go = nil
  237. self.transPar2Go = nil
  238. self.transPar3Go = nil
  239. end
  240. function UITransPerformView:RemoveEventListener()
  241. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  242. end
  243. function UITransPerformView:AddUIEventListener()
  244. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  245. self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.CloseSucceed)
  246. end
  247. function UITransPerformView:CloseSucceed()
  248. if not self.isPlayEnd then return end
  249. self:UIClose()
  250. end
  251. function UITransPerformView:OnHide()
  252. end
  253. function UITransPerformView:OnShow(data)
  254. self.controller:SetData(data)
  255. end
  256. function UITransPerformView:OnClose()
  257. --self:Recycle(self.newId)
  258. self.model:SetActive(false)
  259. if self.transPar1Go then
  260. self.transPar1Go:SetActive(false)
  261. end
  262. self.transPar2Go:SetActive(false)
  263. if self.transPar3Go then
  264. self.transPar3Go:SetActive(false)
  265. end
  266. DG.Tweening.DOTween.Kill(self.transform)
  267. self.skillBox.scrollView.loopVerticalScrollRect:ClearCells()
  268. if self.type == 1 then
  269. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UISTORY_CONDITION_TRIGGER, Enum.UIStoryCondType.PartnerGot, self.newId)
  270. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.PARTNER_ACTIVE_SUCCESS_OVER)
  271. elseif self.type >= 2 then
  272. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.JOB_CHANGE_SUCCESS_OVER, self.type == 3)
  273. end
  274. end
  275. function UITransPerformView:OnDispose()
  276. self.controller:OnDispose()
  277. self.model.rawImage.texture = nil
  278. self:RecyclePars()
  279. if self.loadSystem then
  280. self.loadSystem:Dispose()
  281. end
  282. self.loadSystem = nil
  283. DG.Tweening.DOTween.Kill(self.transform)
  284. self.previewSystem = nil
  285. self.curModel = nil
  286. self.viewSystem = nil
  287. self.isPlayEnd = nil
  288. end
  289. return UITransPerformView