using System.Collections; using System.Collections.Generic; using UnityEngine; using Snxxz.UI; public class CreateRoleProcessor { CreateRoleTimeLine m_WarriorTimeLine = new CreateRoleTimeLine(); CreateRoleTimeLine m_MagicTimeLine = new CreateRoleTimeLine(); CreateRoleBehaviour m_WarriorBehaviour = new CreateRoleBehaviour(); CreateRoleBehaviour m_MagicBehaviour = new CreateRoleBehaviour(); Animator cameraAnimator; Camera createRoleCamera; public void LoadNecessaryResources() { if (cameraAnimator == null || createRoleCamera == null) { var cameraParams = CreateRoleScriptableObject.GetCameraParams(); var prefab = SceneLoader.LoadCreateRole(cameraParams.prefabName); var instance = GameObject.Instantiate(prefab); cameraAnimator = instance.GetComponent(); createRoleCamera = instance.GetComponentInChildren(true); createRoleCamera.enabled = false; } } public void SwitchToWarrior(bool immediately) { m_WarriorTimeLine.ClearNode(); var cameraParams = CreateRoleScriptableObject.GetCameraParams(); m_MagicBehaviour.SetActive(false); m_WarriorBehaviour.SetActive(false); m_WarriorTimeLine.AddNone(0f, () => { WindowCenter.Instance.Close(); createRoleCamera.enabled = true; cameraAnimator.Play(cameraParams.magicToWarrior, 0, immediately ? 1f : 0f); m_MagicBehaviour.ReleaseEffects(); m_WarriorBehaviour.ReleaseEffects(); }); m_WarriorTimeLine.AddNone(immediately ? 0f : cameraParams.magicToWarriorTime, () => { m_WarriorBehaviour.SetActive(true); m_WarriorBehaviour.Show(CreateRoleScriptableObject.GetJobParams(1)); }); } public void SwitchToMagic(bool immediately) { m_MagicTimeLine.ClearNode(); var cameraParams = CreateRoleScriptableObject.GetCameraParams(); m_MagicBehaviour.SetActive(false); m_WarriorBehaviour.SetActive(false); m_MagicTimeLine.AddNone(0f, () => { WindowCenter.Instance.Close(); createRoleCamera.enabled = true; cameraAnimator.Play(cameraParams.warriorToMagic, 0, immediately ? 1f : 0f); m_MagicBehaviour.ReleaseEffects(); m_WarriorBehaviour.ReleaseEffects(); }); m_MagicTimeLine.AddNone(immediately ? 0f : cameraParams.warriorToMagicTime, () => { m_MagicBehaviour.SetActive(true); m_MagicBehaviour.Show(CreateRoleScriptableObject.GetJobParams(2)); }); } public void Dispose() { m_WarriorBehaviour.Dispose(); m_MagicBehaviour.Dispose(); m_WarriorBehaviour = null; m_MagicBehaviour = null; m_WarriorTimeLine.Dispose(); m_MagicTimeLine.Dispose(); cameraAnimator = null; createRoleCamera = null; } }