//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, April 11, 2018
|
//--------------------------------------------------------
|
using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using System.Text;
|
using Snxxz.UI;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class HighSettingFadeInFadeOut : MonoBehaviour
|
{
|
[SerializeField] Button m_Switch;//切换按钮1
|
[SerializeField] Image m_ArrowOpen;
|
[SerializeField] Image m_ArrowClose;
|
|
[SerializeField] MainWinTopGrid[] m_GridGroup1;
|
[SerializeField] MainWinTopGrid[] m_GridGroup2;
|
|
State state = State.Closed;
|
|
float closeTimer = 0f;
|
|
TreasureFindHostModel hostModel { get { return ModelCenter.Instance.GetModel<TreasureFindHostModel>(); } }
|
LimitedTimePackageItemClassModel limitedTimePackageItemModel { get { return ModelCenter.Instance.GetModel<LimitedTimePackageItemClassModel>(); } }
|
ImpactRankModel impactRankModel { get { return ModelCenter.Instance.GetModel<ImpactRankModel>(); } }
|
OpenServiceAchievementModel OpenServerModel { get { return ModelCenter.Instance.GetModel<OpenServiceAchievementModel>(); } }
|
|
void Start()
|
{
|
m_Switch.SetListener(() => { Switch(state == State.Closed); });
|
SwitchImmedidately(false);
|
}
|
|
public void Init()
|
{
|
RefreshGridsActiveState();
|
|
TimeUtility.OnServerOpenDayRefresh += OnStepServerDay;
|
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
|
hostModel.TreasureFindHostCompleteAct += TreasureFindHostCompleteAct;
|
RedpointCenter.Instance.redpointValueChangeEvent += UpdateRedpoint;
|
OpenServerActivityCenter.Instance.openServerActivityStateChange += OpenServerActivityStateChange;
|
OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
|
OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
|
limitedTimePackageItemModel.UpdateLimitedTimePackageItem += UpdateLimitedTimePackageItem;
|
impactRankModel.inImpactRankUpdate += InImpactRankUpdate;
|
OpenServerModel.IsOpenEvent += IsOpenEvent;
|
OpenServerModel.IsPreviewTimeUpdate += IsOpenEvent;
|
OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
|
}
|
|
public void UnInit()
|
{
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
|
hostModel.TreasureFindHostCompleteAct -= TreasureFindHostCompleteAct;
|
TimeUtility.OnServerOpenDayRefresh -= OnStepServerDay;
|
OpenServerActivityCenter.Instance.openServerActivityStateChange -= OpenServerActivityStateChange;
|
RedpointCenter.Instance.redpointValueChangeEvent -= UpdateRedpoint;
|
OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
|
OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
|
limitedTimePackageItemModel.UpdateLimitedTimePackageItem -= UpdateLimitedTimePackageItem;
|
impactRankModel.inImpactRankUpdate -= InImpactRankUpdate;
|
OpenServerModel.IsOpenEvent -= IsOpenEvent;
|
OpenServerModel.IsPreviewTimeUpdate -= IsOpenEvent;
|
OperationTimeHepler.Instance.operationAdvanceEvent -= OperationAdvanceEvent;
|
}
|
|
void Switch(bool active)
|
{
|
var index = 0;
|
foreach (var grid in m_GridGroup1)
|
{
|
if (!grid.alwayShow)
|
{
|
grid.Switch(active, 0);
|
}
|
|
if (grid.gameObject.activeInHierarchy)
|
{
|
index++;
|
}
|
}
|
|
index = 0;
|
foreach (var grid in m_GridGroup2)
|
{
|
if (!grid.alwayShow)
|
{
|
grid.Switch(active, (index / 7) + 1);
|
}
|
|
if (grid.gameObject.activeInHierarchy)
|
{
|
index++;
|
}
|
}
|
|
state = active ? State.Opened : State.Closed;
|
DisplayArrow(state);
|
if (state == State.Opened)
|
{
|
closeTimer = GeneralDefine.mainWinTopCloseTime;
|
}
|
}
|
|
public void SwitchImmedidately(bool active)
|
{
|
foreach (var grid in m_GridGroup1)
|
{
|
if (!grid.alwayShow)
|
{
|
grid.SwitchImmediately(active, 0);
|
}
|
}
|
|
var index = 0;
|
foreach (var grid in m_GridGroup2)
|
{
|
if (!grid.alwayShow)
|
{
|
grid.SwitchImmediately(active, (index / 7) + 1);
|
}
|
|
if (grid.gameObject.activeInHierarchy)
|
{
|
index++;
|
}
|
}
|
|
state = active ? State.Opened : State.Closed;
|
DisplayArrow(state);
|
if (state == State.Opened)
|
{
|
closeTimer = GeneralDefine.mainWinTopCloseTime;
|
}
|
}
|
|
private void OperationAdvanceEvent(Operation obj)
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void IsOpenEvent()
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void InImpactRankUpdate()
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void UpdateLimitedTimePackageItem()
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void OperationEndEvent(Operation arg1, int arg2)
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void OperationStartEvent(Operation arg1, int arg2)
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void UpdateRedpoint(int redPointID)
|
{
|
if (redPointID == 201 || redPointID == 210)
|
{
|
RefreshGridsActiveState();
|
}
|
}
|
|
private void OpenServerActivityStateChange()
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void OnStepServerDay()//开服活动
|
{
|
var days = ModelCenter.Instance.GetModel<ImpactRankModel>().openServerActivityDays;
|
if (TimeUtility.OpenDay >= days)
|
{
|
RefreshGridsActiveState();
|
}
|
}
|
|
private void TreasureFindHostCompleteAct()//仙宝寻主
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void OnFuncStateChange(int obj)
|
{
|
RefreshGridsActiveState();
|
}
|
|
private void RefreshGridsActiveState()
|
{
|
foreach (var grid in m_GridGroup1)
|
{
|
var active = grid.IsOpen();
|
if (active && !grid.gameObject.activeSelf)
|
{
|
grid.gameObject.SetActive(true);
|
}
|
|
if (!active && grid.gameObject.activeSelf)
|
{
|
grid.gameObject.SetActive(false);
|
}
|
}
|
|
foreach (var grid in m_GridGroup2)
|
{
|
var active = grid.IsOpen();
|
if (active && !grid.gameObject.activeSelf)
|
{
|
grid.gameObject.SetActive(true);
|
}
|
|
if (!active && grid.gameObject.activeSelf)
|
{
|
grid.gameObject.SetActive(false);
|
}
|
}
|
|
m_Switch.gameObject.SetActive(IsShowButton());
|
}
|
|
bool IsShowButton()
|
{
|
foreach (var grid in m_GridGroup1)
|
{
|
if (!grid.alwayShow && grid.gameObject.activeSelf)
|
{
|
return true;
|
}
|
}
|
|
foreach (var grid in m_GridGroup2)
|
{
|
if (!grid.alwayShow && grid.gameObject.activeSelf)
|
{
|
return true;
|
}
|
}
|
|
return false;
|
}
|
|
private void LateUpdate()
|
{
|
if (!NewBieCenter.Instance.inGuiding)
|
{
|
if (state == State.Opened)
|
{
|
closeTimer -= Time.deltaTime;
|
if (closeTimer <= 0f)
|
{
|
Switch(false);
|
}
|
}
|
}
|
}
|
|
private void DisplayArrow(State state)
|
{
|
m_ArrowOpen.gameObject.SetActive(state == State.Opened);
|
m_ArrowClose.gameObject.SetActive(state == State.Closed);
|
}
|
|
public enum State
|
{
|
Opened,
|
Closed,
|
}
|
|
}
|
|
}
|
|
|
|