using vnxbqy.UI;
|
using System.Collections;
|
using UnityEngine;
|
|
public class SkyTowerDungeonStage : DungeonStage
|
{
|
Animator m_TowerAnimator;
|
Camera m_ShowCamera;
|
|
Vector3 defaultShowCameraPosition;
|
Quaternion defaultShowCameraRotation;
|
float defaultFov;
|
|
SkyTowerModel model { get { return ModelCenter.Instance.GetModel<SkyTowerModel>(); } }
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
|
public override void Initialize()
|
{
|
base.Initialize();
|
|
var sceneRoot = GameObject.Find("Map113_Zxt");
|
if (sceneRoot != null)
|
{
|
m_TowerAnimator = sceneRoot.GetComponent<Animator>("Effect/wall");
|
m_ShowCamera = sceneRoot.GetComponent<Camera>("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()
|
{
|
var config = SkyTowerConfig.Get(model.currentFloor);
|
if (model.IsChallengable() && PlayerDatas.Instance.baseData.FightPoint >= (ulong)NPCExConfig.Get(config.bossId).SuppressFightPower)
|
{
|
//PopupWindowsProcessor.Instance.Add("TowerWin", 0);
|
}
|
|
CameraController.Instance.CameraObject.enabled = true;
|
CameraManager.uiCamera.enabled = true;
|
StopAllCoroutines();
|
base.UnInitialize();
|
}
|
|
protected override void OnStageLoadFinish()
|
{
|
base.OnStageLoadFinish();
|
WindowCenter.Instance.Open<SkyTowerHintWin>();
|
model.RequestRefreshMonster();
|
}
|
|
public void PerformChallengeNextLevel()
|
{
|
StartCoroutine("Co_PerformChallengeNextLevel");
|
}
|
|
IEnumerator Co_PerformChallengeNextLevel()
|
{
|
//WindowCenter.Instance.CloseOthers<DungeonFightWin>();
|
WindowCenter.Instance.CloseImmediately("SkyTowerHintWin");
|
WindowCenter.Instance.Close<SkyTowerVictoryWin>();
|
SoundPlayer.Instance.PlayBackGroundMusicOneShot(258);
|
var config = SkyTowerConfig.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));
|
|
model.RequestRefreshMonster();
|
if (m_TowerAnimator != null)
|
{
|
m_TowerAnimator.Play("Fyt_fx_ani_move", 0, 0f);
|
}
|
|
yield return new WaitForSeconds(2.1f);
|
|
yield return StartCoroutine(Co_CameraLerpTo(m_ShowCamera,
|
CameraController.Instance.CameraObject.transform.position,
|
CameraController.Instance.CameraObject.transform.rotation,
|
CameraController.Instance.CameraObject.fieldOfView));
|
|
m_ShowCamera.SetActive(false);
|
//CameraController.Instance.CameraObject.enabled = true;
|
//CameraManager.uiCamera.enabled = true;
|
|
WindowCenter.Instance.Open<DungeonEndCoolDownWin>();
|
if (PlayerDatas.Instance.hero != null)
|
{
|
PlayerDatas.Instance.hero.Behaviour.StartHandupAI();
|
}
|
|
var mapConfig = MapConfig.Get(PlayerDatas.Instance.baseData.MapID);
|
var mapResConfig = MapResourcesConfig.GetConfig(SkyTowerModel.DATA_MAPID, 0);
|
|
SoundPlayer.Instance.PlayBackGroundMusic(mapResConfig.Music);
|
WindowCenter.Instance.Open<MapNameHintWin>();
|
WindowCenter.Instance.Open<SkyTowerHintWin>();
|
}
|
|
}
|
|
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;
|
}
|
}
|