少年修仙传客户端代码仓库
client_linchunjie
2019-04-19 79457ed9f96d8b2b1e097a8e8940d09bb20385aa
System/MainWin/HighSettingFadeInFadeOut.cs
File was renamed from System/MainInterfacePanel/HighSettingFadeInFadeOut.cs
@@ -1,290 +1,290 @@
//--------------------------------------------------------
//    [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,
        }
    }
}
//--------------------------------------------------------
//    [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,
        }
    }
}