| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340 |
- local UICreateRoleView = require("UICreateRole/UICreateRoleView_Generate")
- local RoleViewSystem = require("RoleViewSystem")
- local PreviewSystem = require("PreviewSystem")
- local MirrorPreviewSystem = require("MirrorPreviewSystem")
- local SelectType = {
- HairAndColor = 1,
- EyeColor = 2,
- Headwear = 3,
- }
- local curSelectType = SelectType.HairAndColor
- local roleViewSystem = nil
- local previewSystem = nil
- local mirrorPreviewSystem = nil
- local cancelToggleTigger = false
- function UICreateRoleView:OnAwake(data)
- self.controller = require("UICreateRole/UICreateRoleCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UICreateRoleView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ENTER_BATTLE, function()
- -- ManagerContainer.LuaGameMgr:EnterBattle()
- -- 创建名字流程(临时使用,未来需要根据需求变更)
- -- self.controller:CreateNickName()
- end)
- -- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.NICK_NAME_CREATED, function()
- -- ManagerContainer.LuaGameMgr:EnterBattle()
- -- end)
- end
- function UICreateRoleView: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 UICreateRoleView:Init()
- --暂时设置
- local ls = self.controller:GetCanSelectHairColors()
- self.color1.background.image.color = ls[1]
- self.color2.background.image.color = ls[2]
- self.color3.background.image.color = ls[3]
- self.color4.background.image.color = ls[4]
- self.color5.background.image.color = ls[5]
- self.color6.background.image.color = ls[6]
- self.color7.background.image.color = ls[7]
- if not roleViewSystem then
- roleViewSystem = RoleViewSystem:new()
- end
- if not previewSystem then
- previewSystem = PreviewSystem:new("Preview")
- previewSystem:SetView(Vector3(-0.116, 1.649, 2.5), Quaternion.Euler(12.174, -182.628, 0.085))
- end
- if not mirrorPreviewSystem then
- mirrorPreviewSystem = MirrorPreviewSystem:new("MirrorPreview", previewSystem:GetCamera())
- end
- self.model:SetActive(true)
- self.model.rawImage.texture = previewSystem:GetRenderTexture()
- self.mirrorModel:SetActive(true)
- self.mirrorModel.rawImage.texture = mirrorPreviewSystem:GetRenderTexture()
- self:_RefreshShowModel()
- -- 加载阴影
- local shadowAssetName = Constants.EffectPath .. "/Common/FX_Yinying"
- self.seqId = ManagerContainer.ResMgr:LuaLoadAssets(Enum.ResourceType.GameObject, nil, {shadowAssetName}, nil, function()
- if ManagerContainer.ResMgr:SeqIdEquals(self.seqId, 0) then
- self.seqId = nil
- end
- self.shadowGo = ManagerContainer.ResMgr:GetGoFromPool(nil, shadowAssetName)
- if previewSystem then
- previewSystem:AddGo(self.shadowGo)
- end
- if mirrorPreviewSystem then
- mirrorPreviewSystem:AddGo(self.shadowGo)
- end
- end)
- end
- function UICreateRoleView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UICreateRoleView:AddUIEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- self.uiBase:AddToggleEventListener(self.boy.toggle, self, self.ChangeSex, Enum.SexType.Man)
- self.uiBase:AddToggleEventListener(self.girl.toggle, self, self.ChangeSex, Enum.SexType.Woman)
- self.uiBase:AddToggleEventListener(self.hairAndColor.toggle, self, self.ChangeSelectType, SelectType.HairAndColor)
- self.uiBase:AddToggleEventListener(self.eyeColor.toggle, self, self.ChangeSelectType, SelectType.EyeColor)
- self.uiBase:AddToggleEventListener(self.headwear.toggle, self, self.ChangeSelectType, SelectType.Headwear)
- self.uiBase:AddToggleEventListener(self.hair1.toggle, self, self.ChangeHair, 1)
- self.uiBase:AddToggleEventListener(self.hair2.toggle, self, self.ChangeHair, 2)
- self.uiBase:AddToggleEventListener(self.hair3.toggle, self, self.ChangeHair, 3)
- self.uiBase:AddToggleEventListener(self.hair4.toggle, self, self.ChangeHair, 4)
- self.uiBase:AddToggleEventListener(self.color1.toggle, self, self.ChangeHairColor, 1)
- self.uiBase:AddToggleEventListener(self.color2.toggle, self, self.ChangeHairColor, 2)
- self.uiBase:AddToggleEventListener(self.color3.toggle, self, self.ChangeHairColor, 3)
- self.uiBase:AddToggleEventListener(self.color4.toggle, self, self.ChangeHairColor, 4)
- self.uiBase:AddToggleEventListener(self.color5.toggle, self, self.ChangeHairColor, 5)
- self.uiBase:AddToggleEventListener(self.color6.toggle, self, self.ChangeHairColor, 6)
- self.uiBase:AddToggleEventListener(self.color7.toggle, self, self.ChangeHairColor, 7)
- self.uiBase:AddToggleEventListener(self.eyesColor1.toggle, self, self.ChangeEye, 1)
- self.uiBase:AddToggleEventListener(self.eyesColor2.toggle, self, self.ChangeEye, 2)
- self.uiBase:AddToggleEventListener(self.eyesColor3.toggle, self, self.ChangeEye, 3)
- self.uiBase:AddToggleEventListener(self.eyesColor4.toggle, self, self.ChangeEye, 4)
- self.uiBase:AddToggleEventListener(self.headwear1.toggle, self, self.ChangeHeadwear, 1)
- self.uiBase:AddToggleEventListener(self.headwear2.toggle, self, self.ChangeHeadwear, 2)
- self.uiBase:AddToggleEventListener(self.headwear3.toggle, self, self.ChangeHeadwear, 3)
- self.uiBase:AddButtonEventListener(self.btnLetsGo.button, self, self.OnClickStartGame)
- self.uiBase:AddButtonEventListener(self.btnBack.button, self, self.OnClickBack)
- self.model.uIEventTriggerListener.onDrag = function()
- local deltaX = self.model.uIEventTriggerListener.currentEventData.delta.x
- if roleViewSystem then
- local go = roleViewSystem:GetGameObject()
- if go then
- go.transform:Rotate(Vector3.New(0, deltaX > 0 and -7 or 7, 0))
- end
- end
- end
- end
- function UICreateRoleView:OnHide()
- end
- function UICreateRoleView:OnShow(data)
- self.controller:SetData(data)
- self:Init()
- end
- function UICreateRoleView:OnClose()
- end
- function UICreateRoleView:OnDispose()
- self.model.uIEventTriggerListener.onDrag = nil
- if self.seqId then
- ManagerContainer.ResMgr:UnloadAssetBySeqId(self.seqId)
- end
- self.seqId = nil
- if self.shadowGo then
- local shadowAssetName = Constants.EffectPath .. "/Common/FX_Yinying"
- ManagerContainer.ResMgr:RecycleGO(nil, shadowAssetName, self.shadowGo)
- end
- self.shadowGo = nil
- if mirrorPreviewSystem then
- mirrorPreviewSystem:Dispose()
- end
- mirrorPreviewSystem = nil
- if previewSystem then
- previewSystem:Dispose()
- end
- previewSystem = nil
- if roleViewSystem then
- roleViewSystem:Dispose()
- end
- roleViewSystem = nil
- end
- function UICreateRoleView:ChangeSex(toggle, sexType, result)
- if not result then return end
- if not self.controller:SetSexType(sexType) then
- return
- end
- if previewSystem and roleViewSystem then
- previewSystem:RemoveGo(roleViewSystem:GetGameObject())
- end
- if mirrorPreviewSystem and roleViewSystem then
- mirrorPreviewSystem:RemoveGo(roleViewSystem:GetGameObject())
- end
- self:_RefreshShowModel()
- end
- function UICreateRoleView:_RefreshShowModel()
- local roleCfgId = self.controller:GetRoleCfgId()
- local isMan = (self.controller:GetSexType() == Enum.SexType.Man)
- local isWoman = (not isMan)
- self.bgBoy:SetActive(isMan)
- self.bgGirl:SetActive(isWoman)
- self.mirrorBoy:SetActive(isMan)
- self.mirrorGirl:SetActive(isWoman)
- cancelToggleTigger = true
- self.boy.toggle.isOn = isMan
- self.girl.toggle.isOn = isWoman
- self.hairAndColor.toggle.isOn = true
- cancelToggleTigger = false
- self:ChangeSelectType(nil, SelectType.HairAndColor, true)
- if roleCfgId then
- roleViewSystem:RefreshView(Enum.RoleInEnvType.CreateRole, roleCfgId, self.controller:GetViewData(), nil, self, self.RefreshShowComplete)
- else
- roleViewSystem:Recycle()
- end
- end
- function UICreateRoleView:ChangeSelectType(toggle, selectType, result)
- if not result then return end
- if cancelToggleTigger then return end
- if selectType == SelectType.HairAndColor then
- self.hairRoot:SetActive(true)
- self.eyesRoot:SetActive(false)
- self.headwearRoot:SetActive(false)
- cancelToggleTigger = true
- self.toggleGroupHair.toggleGroup:SetAllTogglesOff()
- self.toggleGroupColor.toggleGroup:SetAllTogglesOff()
- self['hair' .. self.controller:GetSelectHairIndex()].toggle.isOn = true
- self['color' .. self.controller:GetSelectHairColorIndex()].toggle.isOn = true
- self:RefreshUIHair()
- self:RefreshUIHairColor()
- cancelToggleTigger = false
- elseif selectType == SelectType.EyeColor then
- self.hairRoot:SetActive(false)
- self.eyesRoot:SetActive(true)
- self.headwearRoot:SetActive(false)
- cancelToggleTigger = true
- self.toggleGroupEyesColor.toggleGroup:SetAllTogglesOff()
- self['eyesColor' .. self.controller:GetSelectEyeIndex()].toggle.isOn = true
- cancelToggleTigger = false
- -- elseif selectType == SelectType.Headwear then
- else
- self.hairRoot:SetActive(false)
- self.eyesRoot:SetActive(false)
- self.headwearRoot:SetActive(true)
- cancelToggleTigger = true
- self.toggleGroupHeadwear.toggleGroup:SetAllTogglesOff()
- self['headwear' .. self.controller:GetSelectHeadwearsIndex()].toggle.isOn = true
- cancelToggleTigger = false
- end
- end
- function UICreateRoleView:ChangeHair(toggle, index, result)
- if not result then return end
- if cancelToggleTigger then return end
- if self.controller:SetSelectHairIndex(index) then
- roleViewSystem:RefreshView(Enum.RoleInEnvType.CreateRole, self.controller:GetRoleCfgId(), self.controller:GetViewData(), nil, self, self.RefreshShowComplete)
- end
- end
- function UICreateRoleView:ChangeHairColor(toggle, index, result)
- if not result then return end
- if cancelToggleTigger then return end
- if self.controller:SetSelectHairColorIndex(index) then
- self:RefreshUIHairColor()
- roleViewSystem:RefreshView(Enum.RoleInEnvType.CreateRole, self.controller:GetRoleCfgId(), self.controller:GetViewData(), nil, self, self.RefreshShowComplete)
- end
- end
- function UICreateRoleView:ChangeEye(toggle, index, result)
- if not result then return end
- if cancelToggleTigger then return end
- if self.controller:SetSelectEyeIndex(index) then
- roleViewSystem:RefreshView(Enum.RoleInEnvType.CreateRole, self.controller:GetRoleCfgId(), self.controller:GetViewData(), nil, self, self.RefreshShowComplete)
- end
- end
- function UICreateRoleView:ChangeHeadwear(toggle, index, result)
- if not result then return end
- if cancelToggleTigger then return end
- if self.controller:SetSelectHeadwearsIndex(index) then
- roleViewSystem:RefreshView(Enum.RoleInEnvType.CreateRole, self.controller:GetRoleCfgId(), self.controller:GetViewData(), nil, self, self.RefreshShowComplete)
- end
- end
- function UICreateRoleView:OnClickStartGame()
- self.controller:OnCreateClick()
- end
- function UICreateRoleView:OnClickBack()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UILogin)
- end
- function UICreateRoleView:RefreshShowComplete(go, isNewGo)
- if previewSystem then
- previewSystem:UpdateGo(go)
- end
- if mirrorPreviewSystem then
- mirrorPreviewSystem:UpdateGo(go)
- end
- end
- function UICreateRoleView:RefreshUIHair()
- local isMan = (self.controller:GetSexType() == Enum.SexType.Man)
- local isWoman = (not isMan)
- self.hair1.headBoy:SetActive(isMan)
- self.hair1.headGirl:SetActive(isWoman)
- self.hair2.headBoy:SetActive(isMan)
- self.hair2.headGirl:SetActive(isWoman)
- self.hair3.headBoy:SetActive(isMan)
- self.hair3.headGirl:SetActive(isWoman)
- self.hair4.headBoy:SetActive(isMan)
- self.hair4.headGirl:SetActive(isWoman)
- end
- function UICreateRoleView:RefreshUIHairColor()
- local keyName = self:GetHairKeyName()
- local color = self.controller:GetSelectHairColor()
- self.hair1[keyName].color.image.color = color
- self.hair2[keyName].color.image.color = color
- self.hair3[keyName].color.image.color = color
- self.hair4[keyName].color.image.color = color
- end
- function UICreateRoleView:GetHairKeyName()
- local isMan = (self.controller:GetSexType() == Enum.SexType.Man)
- local keyName = isMan and 'headBoy' or 'headGirl'
- return keyName
- end
- return UICreateRoleView
|