//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, April 27, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { // 升级unity2019碰到的问题 // 法宝界面 TreasureSelectWin和TreasureBaseWin开启需立即加载预制体 // 不然返回主界面任务RectMask2D有问题,会全部遮罩不显示,具体原因不确定暂且这么解决 public class TreasureSelectWin : Window { [SerializeField] TreasureModelDrag m_TreasureDrag; [SerializeField] FunctionButtonGroup m_ButtonGroup; [SerializeField] FunctionButton m_HumanBtn; [SerializeField] FunctionButton m_FairyBtn; [SerializeField] FunctionButton m_KingBtn; [SerializeField] Button m_BackBtn; [SerializeField] RectTransform m_ContainerNewGuide; TreasureModel m_Model; TreasureModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } bool m_CorrectClose = false; bool rightSelect = true; #region Built-in protected override void BindController() { } protected override void AddListeners() { m_HumanBtn.onClick.AddListener(() => { if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Human || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser) { return; } rightSelect = true; UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.Human); UpdateButtonState(); }); //m_DemonBtn.onClick.AddListener(() => //{ // if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Demon // || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser) // { // return; // } // rightSelect = true; // UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.Demon); // UpdateButtonState(); //}); m_FairyBtn.onClick.AddListener(() => { if (PlayerDatas.Instance.baseData.LV < GeneralDefine.UIWinLimitLV) { SysNotifyMgr.Instance.ShowTip("RuneSpecialHoleLevelError", GeneralDefine.UIWinLimitLV); return; } if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Fairy || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser) { return; } UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.Fairy); }); m_KingBtn.onClick.AddListener(() => { if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.King || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser) { return; } UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.King); }); m_BackBtn.onClick.AddListener(() => { if (UI3DTreasureSelectStage.Instance.UnlockShowing) { return; } CloseImmediately(); UI3DTreasureSelectStage.Instance.Close(); }); m_HumanBtn.repeatClickFunc += () => { ReclickSelect(TreasureCategory.Human); }; //m_DemonBtn.repeatClickFunc += () => //{ // ReclickSelect(TreasureCategory.Demon); //}; m_FairyBtn.repeatClickFunc += () => { ReclickSelect(TreasureCategory.Fairy); }; m_KingBtn.repeatClickFunc += () => { ReclickSelect(TreasureCategory.King); }; } protected override void OnPreOpen() { UI3DTreasureSelectStage.Instance.UnlockShowing = false; if (!UI3DTreasureSelectStage.Instance.IsOpen) { UI3DTreasureSelectStage.Instance.Open(false, model.currentCategory); } UI3DTreasureSelectStage.Instance.OnCameraStartEvent += OnCameraStartEvent; UI3DTreasureSelectStage.Instance.OnCameraBackComplete += OnCameraBackComplete; UI3DTreasureSelectStage.Instance.OnUnlockComplete += OnUnlockComplete; UI3DTreasureSelectStage.Instance.startAnimation += StartAnimation; m_TreasureDrag.OnValueChange += OnValueChange; m_TreasureDrag.OnDragComplete += OnDragComplete; m_TreasureDrag.OnDragBegine += OnDragBegine; m_BackBtn.SetActive(true); m_ContainerNewGuide.SetActive(false); UpdateButtonSelect(); UpdateButtonState(); m_CorrectClose = false; rightSelect = true; } protected override void OnActived() { base.OnActived(); //m_ButtonGroup.TriggerByOrder(functionOrder); } protected override void OnAfterOpen() { } protected override void OnPreClose() { UI3DTreasureSelectStage.Instance.OnCameraStartEvent -= OnCameraStartEvent; UI3DTreasureSelectStage.Instance.OnCameraBackComplete -= OnCameraBackComplete; UI3DTreasureSelectStage.Instance.OnUnlockComplete -= OnUnlockComplete; UI3DTreasureSelectStage.Instance.startAnimation -= StartAnimation; m_TreasureDrag.OnValueChange -= OnValueChange; m_TreasureDrag.OnDragComplete -= OnDragComplete; m_TreasureDrag.OnDragBegine -= OnDragBegine; if (!m_CorrectClose && UI3DTreasureSelectStage.Instance.IsOpen) { UI3DTreasureSelectStage.Instance.Close(); } } protected override void OnAfterClose() { if (!WindowJumpMgr.Instance.IsJumpState && !m_CorrectClose) { WindowCenter.Instance.Open(); } } #endregion #region Scroll private void OnCameraBackComplete() { UpdateButtonState(); } private void OnValueChange(float _delta) { UI3DTreasureSelectStage.Instance.Drag(_delta); } private void OnDragComplete() { UI3DTreasureSelectStage.Instance.DragEnd(); } private void OnDragBegine() { UI3DTreasureSelectStage.Instance.BegineDrag(); } #endregion private void OnCameraStartEvent() { WindowJumpMgr.Instance.ClearJumpData(); m_CorrectClose = true; CameraManager.uiCamera.enabled = false; WindowCenter.Instance.Open(); CloseImmediately(); } private void UpdateButtonSelect() { if (m_HumanBtn.state != TitleBtnState.Locked) { m_HumanBtn.state = model.currentCategory == TreasureCategory.Human ? TitleBtnState.Click : TitleBtnState.Normal; } //if (m_DemonBtn.state != TitleBtnState.Locked) //{ // m_DemonBtn.state = model.currentCategory == TreasureCategory.Demon ? TitleBtnState.Click : TitleBtnState.Normal; //} if (m_FairyBtn.state != TitleBtnState.Locked) { m_FairyBtn.state = model.currentCategory == TreasureCategory.Fairy ? TitleBtnState.Click : TitleBtnState.Normal; } if (m_KingBtn.state != TitleBtnState.Locked) { m_KingBtn.state = model.currentCategory == TreasureCategory.King ? TitleBtnState.Click : TitleBtnState.Normal; } } private void UpdateButtonState() { var _closer = UI3DTreasureSelectStage.Instance.IsCloser || UI3DTreasureSelectStage.Instance.UnlockShowing; if (UI3DTreasureSelectStage.Instance.UnlockShowing) { m_BackBtn.SetActive(false); } else { m_BackBtn.SetActive(true); } m_ButtonGroup.transform.localScale = Vector3.one; m_HumanBtn.SetActive(!_closer); //m_DemonBtn.SetActive(!_closer); m_FairyBtn.SetActive(!_closer); m_KingBtn.SetActive(!_closer); } private void StartAnimation() { UpdateButtonState(); } private void OnHighestComplete() { UpdateButtonState(); } private void OnUnlockComplete() { UpdateButtonState(); } private void ReclickSelect(TreasureCategory category) { if (UI3DTreasureSelectStage.Instance.jumping || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser) { return; } var list = model.GetTreasureCategory(category); var gotoId = 0; switch (category) { case TreasureCategory.Demon: for (int i = 0; i < list.Count; i++) { TreasureDungeon treasureDungeon; if (model.TryGetTreasureDungeon(list[i], out treasureDungeon)) { if (treasureDungeon.challengeRedpoint.state == RedPointState.Simple) { if (list[i] > UI3DTreasureSelectStage.Instance.selectTreasure) { if (rightSelect || gotoId == 0) { gotoId = list[i]; break; } } else if (list[i] < UI3DTreasureSelectStage.Instance.selectTreasure) { gotoId = list[i]; } } } } break; } if (gotoId != 0) { rightSelect = gotoId > UI3DTreasureSelectStage.Instance.selectTreasure; UI3DTreasureSelectStage.Instance.Goto(list.IndexOf(gotoId)); } } } }