using System.Collections; using System.Collections.Generic; using UnityEngine; using Snxxz.UI; public class CreateRoleProcessor : MonoBehaviour { [SerializeField] CreateRoleBehaviour m_Warrior; [SerializeField] CreateRoleBehaviour m_Magic; [SerializeField] CameraParams m_CameraParams; Animator cameraAnimator; Camera createRoleCamera; public void LoadNecessaryResources() { if (cameraAnimator == null || createRoleCamera == null) { var prefab = SceneLoader.LoadCreateRole(m_CameraParams.prefabName); var instance = GameObject.Instantiate(prefab); cameraAnimator = instance.GetComponent(); createRoleCamera = instance.GetComponentInChildren(true); } } public void SwitchToWarrior(bool immediately) { WindowCenter.Instance.Close(); cameraAnimator.Play(m_CameraParams.magicToWarrior, 0, immediately ? 1f : 0f); m_Magic.ReleaseEffects(); m_Warrior.ReleaseEffects(); StopCoroutine("Co_SwitchToWarrior"); StartCoroutine("Co_SwitchToWarrior", immediately ? 0f : m_CameraParams.magicToWarriorTime); } public void SwitchToMagic(bool immediately) { WindowCenter.Instance.Close(); cameraAnimator.Play(m_CameraParams.warriorToMagic, 0, immediately?1f:0f); m_Magic.ReleaseEffects(); m_Warrior.ReleaseEffects(); StopCoroutine("Co_SwitchToMagic"); StartCoroutine("Co_SwitchToMagic", immediately ? 0f : m_CameraParams.warriorToMagicTime); } IEnumerator Co_SwitchToWarrior(float waitTime) { yield return new WaitForSeconds(waitTime); m_Magic.gameObject.SetActive(false); m_Warrior.gameObject.SetActive(true); m_Warrior.DoRoutineShow(); } IEnumerator Co_SwitchToMagic(float waitTime) { yield return new WaitForSeconds(waitTime); m_Warrior.gameObject.SetActive(false); m_Magic.gameObject.SetActive(true); m_Magic.DoRoutineShow(); } public void Dispose() { m_Warrior.Dispose(); m_Magic.Dispose(); } [System.Serializable] public struct CameraParams { public string prefabName; public string warriorToMagic; public float warriorToMagicTime; public string magicToWarrior; public float magicToWarriorTime; } }