//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, April 27, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class TreasureSelectWin : Window { [SerializeField] TreasureModelDrag m_TreasureDrag; [SerializeField] FunctionButtonGroup m_ButtonGroup; [SerializeField] FunctionButton m_HumanBtn; [SerializeField] FunctionButton m_DemonBtn; [SerializeField] FunctionButton m_FairyBtn; [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; #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; } UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.Human); UpdateButtonState(); }); m_DemonBtn.onClick.AddListener(() => { if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Demon || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser) { return; } UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.Demon); UpdateButtonState(); }); m_FairyBtn.onClick.AddListener(() => { if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Fairy || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser) { return; } UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.Fairy); }); m_BackBtn.onClick.AddListener(() => { if (UI3DTreasureSelectStage.Instance.UnlockShowing) { return; } CloseImmediately(); UI3DTreasureSelectStage.Instance.Close(); WindowCenter.Instance.Open(); }); } 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; m_TreasureDrag.OnValueChange += OnValueChange; m_TreasureDrag.OnDragComplete += OnDragComplete; m_TreasureDrag.OnDragBegine += OnDragBegine; m_BackBtn.gameObject.SetActive(true); m_ContainerNewGuide.gameObject.SetActive(false); UpdateButtonSelect(); UpdateButtonState(); m_CorrectClose = false; } 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; 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() { } #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; } } private void UpdateButtonState() { var _closer = UI3DTreasureSelectStage.Instance.IsCloser || UI3DTreasureSelectStage.Instance.UnlockShowing; if (UI3DTreasureSelectStage.Instance.UnlockShowing) { m_BackBtn.gameObject.SetActive(false); } else { m_BackBtn.gameObject.SetActive(true); } m_ButtonGroup.transform.localScale = Vector3.one; m_HumanBtn.gameObject.SetActive(!_closer); m_DemonBtn.gameObject.SetActive(!_closer); m_FairyBtn.gameObject.SetActive(!_closer); } private void OnUnlockComplete() { UpdateButtonState(); if (UI3DTreasureSelectStage.Instance.selectTreasure == 101) { m_ContainerNewGuide.gameObject.SetActive(true); TimeMgr.Instance.Register(m_ContainerNewGuide, (Component _comp) => { m_ContainerNewGuide.gameObject.SetActive(false); }, 1.5f); } } } }