using System.Collections; using System.Collections.Generic; using UnityEngine; using vnxbqy.UI; public class RuneTowerDungeonStage : DungeonStage { Animator m_TowerAnimator; Camera m_ShowCamera; Vector3 defaultShowCameraPosition; Quaternion defaultShowCameraRotation; float defaultFov; public override void Initialize() { base.Initialize(); var sceneRoot = GameObject.Find("Map113_Fyt"); if (sceneRoot != null) { m_TowerAnimator = sceneRoot.GetComponent("Effect/wall"); m_ShowCamera = sceneRoot.GetComponent("Effect/wall/Camera_Show"); m_ShowCamera.backgroundColor = CameraController.Instance.CameraObject.backgroundColor; m_ShowCamera.SetActive(false); defaultShowCameraPosition = m_ShowCamera.transform.position; defaultShowCameraRotation = m_ShowCamera.transform.rotation; defaultFov = m_ShowCamera.fieldOfView; } } public override void UnInitialize() { CameraController.Instance.CameraObject.enabled = true; CameraManager.uiCamera.enabled = true; StopAllCoroutines(); base.UnInitialize(); } protected override void OnStageLoadFinish() { base.OnStageLoadFinish(); WindowCenter.Instance.Open(); } public void PerformChallengeNextLevel() { StartCoroutine("Co_PerformChallengeNextLevel"); } IEnumerator Co_PerformChallengeNextLevel() { //WindowCenter.Instance.CloseOthers(); WindowCenter.Instance.Close(); WindowCenter.Instance.Close(); SoundPlayer.Instance.PlayBackGroundMusicOneShot(258); var model = ModelCenter.Instance.GetModel(); var config = RuneTowerFloorConfig.Get(model.currentFloor); if (config != null && config.FloorIndex > 1) { m_ShowCamera.SetActive(true); //CameraController.Instance.CameraObject.enabled = false; //CameraManager.uiCamera.enabled = false; m_ShowCamera.transform.position = CameraController.Instance.CameraObject.transform.position; m_ShowCamera.transform.rotation = CameraController.Instance.CameraObject.transform.rotation; m_ShowCamera.fieldOfView = CameraController.Instance.CameraObject.fieldOfView; yield return StartCoroutine(Co_CameraLerpTo(m_ShowCamera, defaultShowCameraPosition, defaultShowCameraRotation, defaultFov)); if (m_TowerAnimator != null) { m_TowerAnimator.Play("Fyt_fx_ani_move", 0, 0f); } yield return new WaitForSeconds(3.1f); yield return StartCoroutine(Co_CameraLerpTo(m_ShowCamera, CameraController.Instance.CameraObject.transform.position, CameraController.Instance.CameraObject.transform.rotation, CameraController.Instance.CameraObject.fieldOfView)); model.RequestSetDungeonAction(); m_ShowCamera.SetActive(false); //CameraController.Instance.CameraObject.enabled = true; //CameraManager.uiCamera.enabled = true; WindowCenter.Instance.Open(); if (PlayerDatas.Instance.hero != null) { PlayerDatas.Instance.hero.Behaviour.StartHandupAI(); } var mapConfig = MapConfig.Get(PlayerDatas.Instance.baseData.MapID); var mapResConfig = MapResourcesConfig.GetConfig(RuneTowerModel.RUNETOWER_MAPID, 0); SoundPlayer.Instance.PlayBackGroundMusic(mapResConfig.Music); WindowCenter.Instance.Open(); WindowCenter.Instance.Open(); } } IEnumerator Co_CameraLerpTo(Camera _camera, Vector3 _toPosition, Quaternion _toRotation, float _toFov) { var startPosition = _camera.transform.position; var startRotation = _camera.transform.rotation; var startFov = _camera.fieldOfView; var timer = 0f; var duration = 0.5f; while (timer < duration) { timer += Time.deltaTime; var t = Mathf.Clamp01(timer / duration); _camera.transform.position = Vector3.Lerp(startPosition, _toPosition, t); _camera.transform.rotation = Quaternion.Lerp(startRotation, _toRotation, t); _camera.fieldOfView = Mathf.Lerp(startFov, _toFov, t); yield return null; } _camera.transform.position = _toPosition; _camera.transform.rotation = _toRotation; } }