//--------------------------------------------------------
|
// [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<TreasureModel>());
|
}
|
}
|
|
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 (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<MainInterfaceWin>();
|
}
|
}
|
#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<TreasureBaseWin>();
|
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));
|
}
|
}
|
}
|
|
}
|
|
|
|
|