| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- local UITransPerformView = require("UIRoleMain/UITransPerformView_Generate")
- local MultiTypeAssetLoadSystem = require("MultiTypeAssetLoadSystem")
- local displayPos = Vector3(0, 0, -1)
- local transBgPos = Vector3(1, -3.2, -20)
- local transPar1Name = "UI/Fx_HeroTrans_01"
- local transPar2Name = "UI/Fx_HeroTrans_02"
- local transPar3Name = "UI/Fx_Hero_ZhoaMu"
- local time1, time2, time3
- function UITransPerformView:OnAwake(data)
- self.controller = require("UIRoleMain/UITransPerformCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UITransPerformView:AddEventListener()
- end
- function UITransPerformView:FillContent(data, uiBase)
- self.uiBase = uiBase
- local gameObject = self.uiBase:GetRoot()
- if gameObject ~= nil then
- self.gameObject = gameObject
- self.transform = gameObject.transform
- end
- self:InitGenerate(self.transform, data)
- self:Init()
- end
- function UITransPerformView:Init()
- local data = self.controller:GetData()
-
- self.isPlayEnd = false
- self.type = data[1]
- self.previewSystem = data[2]
- self.isLeader = data[3]
- self.viewSystem = data[4]
- self.oldId = data[5]
- self.newId = data[6]
- self.model.rawImage.texture = self.previewSystem:GetRenderTexture()
- self.curedSucceedAnim:SetActive(false)
- self.succeedAnim:SetActive(false)
- self.skillBox:SetActive(false)
- local timesStr = GlobalConfig.Instance:GetConfigStrValue(151)
- local times = CommonUtil.DeserializeGlobalStrToTable(timesStr)
- time1,time2,time3 = tonumber(times[1]), tonumber(times[2]), tonumber(times[3])
- self.loadSystem = MultiTypeAssetLoadSystem:new()
- self.loadSystem:SetCompleteCB(self, self.PreloadedAssets)
- self:PreLoadTransParticles()
- --self.model.rectTransform.sizeDelta = Vector2(UnityEngine.Screen.height, UnityEngine.Screen.height)
- end
- function UITransPerformView:PreLoadTransParticles()
- self.loadSystem:RemoveLoadAllAsset()
- self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.EffectPath, transPar2Name)
- if self.type >= 2 then
- self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.EffectPath, transPar1Name)
- elseif self.type == 1 then
- self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.EffectPath, transPar3Name)
- end
- self.loadSystem:Begin()
- end
- function UITransPerformView:PreloadedAssets()
- self.transPar1Go = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath, transPar1Name)
- self.transPar2Go = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath, transPar2Name)
- self.transPar3Go = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath, transPar3Name)
- if self.transPar1Go then
- self.transPar1Go:SetActive(false)
- end
- self.transPar2Go:SetActive(false)
- if self.transPar3Go then
- self.transPar3Go:SetActive(false)
- end
- self.model:SetActive(true)
- self:StartPerform()
- end
- function UITransPerformView:StartPerform()
- if self.type == 1 then
- self:RecruitDisplayStart()
- elseif self.type >= 2 then
- self:TransferDisplayStart()
- end
- end
- function UITransPerformView:RecruitDisplayStart()
- local partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(self.newId)
- self.title.text.text = I18N.SetLanguageValue("ChangeJobSkillShow", I18N.T(partnerData.JobName))
- self.viewSystem:RefreshView(Enum.RoleInEnvType.RoleMainView, self.newId, nil, nil, self, self.LoadModelCB)
- end
- function UITransPerformView:TransferDisplayStart()
- self.transferState = 1
- local curCfgData
- if self.isLeader then
- curCfgData = ManagerContainer.CfgMgr:GetJobDataById(self.newId)
- else
- curCfgData = ManagerContainer.CfgMgr:GetPartnerDataById(self.newId)
- end
- self.title.text.text = I18N.SetLanguageValue("ChangeJobSkillShow", I18N.T(curCfgData.JobName))
- self:DisplayParticle(self.transPar1Go)
- if self.isLeader then
- local userData = ManagerContainer.DataMgr.UserData
- local roleId = CommonUtil.JobIdToRoleId(self.oldId, userData:GetSex())
- local viewData = CommonUtil.TableClone(userData:GetViewData())
- viewData.fashionData = nil
- self.viewSystem:RefreshView(Enum.RoleInEnvType.Transfer, roleId, viewData, nil, self, self.LoadModelCB)
- else
- self.viewSystem:RefreshView(Enum.RoleInEnvType.Transfer, self.oldId, nil, nil, self, self.LoadModelCB)
- end
- self.model.rawImage.texture = self.previewSystem:GetRenderTexture()
- end
- function UITransPerformView:LoadModelCB(model)
- self.curModel = model
- if self.previewSystem then
- self.previewSystem:UpdateGo(model)
- end
- --self.curModel.transform.parent = nil
- self.curModel.transform.position = displayPos
- self.curModel:SetActive(true)
- if self.type == 1 then
- self.viewSystem:RolePlayAni(self.curModel, "f_Injured")
- self.transform:DOScaleZ(1, time1):OnComplete(function()
- self:DisplayParticle(self.transPar3Go)
- self.viewSystem:RolePlayAni(self.curModel, "f_Save")
- end)
- self.transform:DOScaleZ(1, time2):OnComplete(function()
- self.curedSucceedAnim:SetActive(true)
- end)
- self.transform:DOScale(1, time3):OnComplete(function()
- self:RefreshJobSuccessSkills()
- end)
- else
- if self.transferState == 1 then
- --播放浮现动画
- self.viewSystem:RolePlayAni(self.curModel, "f_Transfer")
- self.transform:DOScale(1, time1):OnComplete(function()
- self.transferState = 2
- self:DisplayParticle(self.transPar2Go)
- self:Recycle()
- if self.isLeader then
- local userData = ManagerContainer.DataMgr.UserData
- local roleId = CommonUtil.JobIdToRoleId(self.newId, userData:GetSex())
- local viewData = CommonUtil.TableClone(userData:GetViewData())
- viewData.fashionData = nil
- self.viewSystem:RefreshView(Enum.RoleInEnvType.Transfer, roleId, viewData, nil, self, self.LoadModelCB)
- else
- self.viewSystem:RefreshView(Enum.RoleInEnvType.Transfer, self.newId, nil, nil, self, self.LoadModelCB)
- end
- end)
- self.transform:DOScaleZ(1, time2):OnComplete(function()
- self.succeedAnim:SetActive(true)
- end)
- self.transform:DOScale(1, time3):OnComplete(function()
- self:RefreshJobSuccessSkills()
- end)
- elseif self.transferState == 2 then
- --播放转职后展示动画
- self.viewSystem:RolePlayAni(self.curModel, "f_Transfer_show")
- end
- end
- end
- function UITransPerformView:Recycle()
- if self.previewSystem and self.curModel ~= nil then
- self.curModel:SetActive(false)
- self.previewSystem:RemoveGo(self.curModel)
- self.viewSystem:Recycle()
- self.curModel = nil
- end
- end
- function UITransPerformView:RefreshJobSuccessSkills()
- local skillList
- if self.type == 1 then
- local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleMain1)
- if ctr then
- skillList = ctr:GetSkillList()
- end
- elseif self.type == 2 then
- local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleChangeJob)
- if ctr then
- skillList = ctr:GetSkillList()
- end
- elseif self.type == 3 then
- local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleChangeJobTips)
- if ctr then
- skillList = ctr:GetSkillList()
- end
- end
- if skillList == nil then return end
- CommonUtil.LoopGridViewEleCreateNoItem(self, self.skillBox.scrollView.loopVerticalScrollRect, skillList, 0, self, self.RefreshSuccessSkill)
- self.skillBox:SetActive(true)
- self.isPlayEnd = true
- end
- function UITransPerformView:RefreshSuccessSkill(go, idx)
- local skillItemGo = go.transform:Find("SkillItem")
- local skillNameText = go.transform:Find("ItemTxt"):GetComponent(Enum.TypeInfo.TextMeshProUGUI)
- local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'SkillItem', skillItemGo)
- local skillData
- if self.type == 1 then
- local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleMain1)
- if ctr then
- skillData = ctr:GetSkillItemInfoByIndex(idx)
- end
- elseif self.type == 2 then
- local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleChangeJob)
- if ctr then
- skillData = ctr:GetSkillItemInfoByIndex(idx)
- end
- elseif self.type == 3 then
- local ctr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIRoleChangeJobTips)
- if ctr then
- skillData = ctr:GetSkillItemInfoByIndex(idx)
- end
- end
- if skillData then
- local skillId = skillData.SkillId
- local skillType = skillData.SkillType
- local skillLv = 1
- local skillCfgData = ManagerContainer.CfgMgr:GetSkillCfgByType(skillType, skillId, skillLv)
- if skillCfgData then
- if skillCfgData.Icon then
- CommonUtil.LoadIcon(self, skillCfgData.Icon, function (sprite)
- itemlua.icon.image.sprite = sprite
- end, itemlua, "SkillIconAsyncIdx")
- end
- itemlua.num.text.text = (I18N.SetLanguageValue('Lv') .. tostring(skillLv))
- skillNameText.text = I18N.SetLanguageValue(skillCfgData.Name)
- end
- end
- end
- function UITransPerformView:DisplayParticle(go)
- self.previewSystem:UpdateGo(go)
- go:SetActive(true)
- go.transform.parent = nil
- go.transform.position = displayPos
- end
- function UITransPerformView:RecyclePars()
- if self.transPar1Go then
- ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath, transPar1Name, self.transPar1Go)
- end
- ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath, transPar2Name, self.transPar2Go)
- if self.transPar3Go then
- ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath, transPar1Name, self.transPar3Go)
- end
- self.transPar1Go = nil
- self.transPar2Go = nil
- self.transPar3Go = nil
- end
- function UITransPerformView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UITransPerformView:AddUIEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.CloseSucceed)
- end
- function UITransPerformView:CloseSucceed()
- if not self.isPlayEnd then return end
- self:UIClose()
- end
- function UITransPerformView:OnHide()
- end
- function UITransPerformView:OnShow(data)
- self.controller:SetData(data)
- end
- function UITransPerformView:OnClose()
- --self:Recycle(self.newId)
- self.model:SetActive(false)
- if self.transPar1Go then
- self.transPar1Go:SetActive(false)
- end
- self.transPar2Go:SetActive(false)
- if self.transPar3Go then
- self.transPar3Go:SetActive(false)
- end
- DG.Tweening.DOTween.Kill(self.transform)
- self.skillBox.scrollView.loopVerticalScrollRect:ClearCells()
- if self.type == 1 then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UISTORY_CONDITION_TRIGGER, Enum.UIStoryCondType.PartnerGot, self.newId)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.PARTNER_ACTIVE_SUCCESS_OVER)
- elseif self.type >= 2 then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.JOB_CHANGE_SUCCESS_OVER, self.type == 3)
- end
- end
- function UITransPerformView:OnDispose()
- self.controller:OnDispose()
- self.model.rawImage.texture = nil
- self:RecyclePars()
- if self.loadSystem then
- self.loadSystem:Dispose()
- end
- self.loadSystem = nil
- DG.Tweening.DOTween.Kill(self.transform)
- self.previewSystem = nil
- self.curModel = nil
- self.viewSystem = nil
- self.isPlayEnd = nil
- end
- return UITransPerformView
|