少年修仙传客户端代码仓库
client_linchunjie
2018-09-27 6c885b88889f8bea6179a5f2fb5e448d0535dca6
3896【前端】法宝列表新增星图毕业动画
5个文件已修改
288 ■■■■■ 已修改文件
System/Skill/QuickSetting.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureComponent.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureModel.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureSelectWin.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/UI3DTreasureSelectStage.cs 155 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/QuickSetting.cs
@@ -15,6 +15,7 @@
        quickSettingDic.Add(QuickSettingType.FairyLeagueGuide, new QuickSettingRange(QuickSettingType.FairyLeagueGuide, 1));
        quickSettingDic.Add(QuickSettingType.AutoUseXp, new QuickSettingRange(QuickSettingType.AutoUseXp, 1));
        quickSettingDic.Add(QuickSettingType.SpAnim, new QuickSettingRange(QuickSettingType.SpAnim, 10));
        quickSettingDic.Add(QuickSettingType.TreasureHighestAnim, new QuickSettingRange(QuickSettingType.TreasureHighestAnim, 10));
        setting = new string(UCharacter, 100);
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
    }
@@ -109,6 +110,7 @@
        FairyLeagueGuide,
        AutoUseXp,
        SpAnim,
        TreasureHighestAnim
    }
    public struct QuickSettingRange
    {
System/Treasure/TreasureComponent.cs
@@ -45,6 +45,7 @@
        SFXController lockEffect;
        SFXController challengeSfx;
        SFXController specialSfx;
        SFXController highestSfx;
        public Treasure3DConfig paramConfig { get; set; }
@@ -74,6 +75,7 @@
                RequestBottom();
                RequestBackLight();
                RequestRedpoint();
                RequestHighestEffect();
                UpdateTreasureState();
                UpdateParam();
                RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent;
@@ -89,6 +91,7 @@
                RecycleCollectingSfx();
                RecycleRedpoint();
                RecycleCondition();
                RecycleHighestEffect();
                RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent;
            }
            interactProcessor.SetActive(_active);
@@ -339,6 +342,11 @@
                CloserState();
            }
            UpdateParam();
        }
        public void UpdateTreasureStage()
        {
            RequestHighestEffect();
        }
        private void RequestBackLight()
@@ -704,6 +712,35 @@
            }
        }
        public void RequestHighestEffect()
        {
            RecycleHighestEffect();
            Treasure _treasure;
            if (category == TreasureCategory.Human &&
                model.TryGetTreasure(treasureId, out _treasure) && _treasure.IsHighestStage
                && !model.GetTreasureFinishAnim(treasureId))
            {
                highestSfx = SFXPlayUtility.Instance.Play(5198, root);
                if (highestSfx != null)
                {
                    highestSfx.duration = 0;
                    LayerUtility.SetLayer(highestSfx.gameObject, LayerUtility.UILayer, true);
                    highestSfx.transform.localPosition = Vector3.zero;
                    highestSfx.transform.LookAt(UI3DTreasureSelectStage.Instance.center);
                }
            }
        }
        public void RecycleHighestEffect()
        {
            if (highestSfx != null)
            {
                highestSfx.gameObject.SetActive(false);
                SFXPlayUtility.Instance.Release(highestSfx);
                highestSfx = null;
            }
        }
        public void CloserState()
        {
            RecycleBottom();
@@ -713,6 +750,7 @@
            RecycleLockEffect();
            RecycleRedpoint();
            RecycleCondition();
            RecycleHighestEffect();
            RequestSpecialEffect();
            Treasure _treasure;
@@ -741,6 +779,7 @@
            RequestBottom();
            RequestName();
            RequestRedpoint();
            RequestHighestEffect();
            UpdateTreasureState();
            RecycleSpecialEffect();
            UpdateParam();
@@ -793,6 +832,31 @@
            UI3DTreasureSelectStage.Instance.CompleteUnlock();
            model.treasureGotoId = 0;
        }
        public void PlayHighestShow()
        {
            RecycleHighestEffect();
            var _effect = SFXPlayUtility.Instance.Play(5197, root);
            if (_effect != null)
            {
                LayerUtility.SetLayer(_effect.gameObject, LayerUtility.UILayer, true);
                _effect.transform.LookAt(UI3DTreasureSelectStage.Instance.center);
                _effect.transform.localPosition = Vector3.zero;
                _effect.duration = 3.0f;
            }
            SnxxzGame.Instance.StartCoroutine(Co_HighestShow());
        }
        IEnumerator Co_HighestShow()
        {
            yield return WaitingForSecondConst.GetWaitForSeconds(2.2f);
            model.SetTreasureFinishAnim(treasureId, false);
            if (display)
            {
                UpdateTreasureStage();
            }
            UI3DTreasureSelectStage.Instance.ReCheckTreasureHighest();
        }
    }
}
System/Treasure/TreasureModel.cs
@@ -378,6 +378,38 @@
            QuickSetting.Instance.SendPackage();
        }
        public bool GetTreasureFinishAnim(int _treasureId)
        {
            if (_treasureId == 101)
            {
                return false;
            }
            var list = GetTreasureCategory(TreasureCategory.Human);
            var index = list.IndexOf(_treasureId);
            if (index == -1)
            {
                return false;
            }
            uint value = 0;
            uint.TryParse(QuickSetting.Instance.GetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, 0), out value);
            return MathUtility.GetBitValue(value, (ushort)index);
        }
        public void SetTreasureFinishAnim(int _treasureId, bool anim = true)
        {
            var list = GetTreasureCategory(TreasureCategory.Human);
            var index = list.IndexOf(_treasureId);
            if (index == -1)
            {
                return;
            }
            uint value = 0;
            uint.TryParse(QuickSetting.Instance.GetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, 0), out value);
            int bitValue = MathUtility.SetBitValue((int)value, (ushort)index, anim);
            QuickSetting.Instance.SetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, bitValue);
            QuickSetting.Instance.SendPackage();
        }
        public bool TryGetUnlockShowTreasure(out int _id)
        {
            _id = 0;
@@ -1152,6 +1184,10 @@
                        _up = true;
                    }
                    treasure.UpdateTreasureLevelExp(package.InfoList[i].LV, (int)package.InfoList[i].Exp, package.InfoList[i].State == 1);
                    if (serverInited && treasure.IsHighestStage)
                    {
                        SetTreasureFinishAnim(treasure.id);
                    }
                    if (treasureLevelProgressUpdateEvent != null)
                    {
                        treasureLevelProgressUpdateEvent(treasure.id);
System/Treasure/TreasureSelectWin.cs
@@ -43,7 +43,8 @@
            m_HumanBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Human
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser)
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
@@ -53,7 +54,8 @@
            m_DemonBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Demon
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser)
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
@@ -63,7 +65,8 @@
            m_FairyBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Fairy
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser)
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
@@ -71,7 +74,7 @@
            });
            m_BackBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.UnlockShowing)
                if (UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
@@ -83,6 +86,7 @@
        protected override void OnPreOpen()
        {
            UI3DTreasureSelectStage.Instance.UnlockShowing = false;
            UI3DTreasureSelectStage.Instance.treasureFinishShowing = false;
            if (!UI3DTreasureSelectStage.Instance.IsOpen)
            {
                UI3DTreasureSelectStage.Instance.Open(false, model.currentCategory);
@@ -90,6 +94,8 @@
            UI3DTreasureSelectStage.Instance.OnCameraStartEvent += OnCameraStartEvent;
            UI3DTreasureSelectStage.Instance.OnCameraBackComplete += OnCameraBackComplete;
            UI3DTreasureSelectStage.Instance.OnUnlockComplete += OnUnlockComplete;
            UI3DTreasureSelectStage.Instance.OnHighestComplete += OnHighestComplete;
            UI3DTreasureSelectStage.Instance.startAnimation += StartAnimation;
            m_TreasureDrag.OnValueChange += OnValueChange;
            m_TreasureDrag.OnDragComplete += OnDragComplete;
            m_TreasureDrag.OnDragBegine += OnDragBegine;
@@ -116,6 +122,8 @@
            UI3DTreasureSelectStage.Instance.OnCameraStartEvent -= OnCameraStartEvent;
            UI3DTreasureSelectStage.Instance.OnCameraBackComplete -= OnCameraBackComplete;
            UI3DTreasureSelectStage.Instance.OnUnlockComplete -= OnUnlockComplete;
            UI3DTreasureSelectStage.Instance.OnHighestComplete -= OnHighestComplete;
            UI3DTreasureSelectStage.Instance.startAnimation -= StartAnimation;
            m_TreasureDrag.OnValueChange -= OnValueChange;
            m_TreasureDrag.OnDragComplete -= OnDragComplete;
            m_TreasureDrag.OnDragBegine -= OnDragBegine;
@@ -184,8 +192,9 @@
        private void UpdateButtonState()
        {
            var _closer = UI3DTreasureSelectStage.Instance.IsCloser 
                || UI3DTreasureSelectStage.Instance.UnlockShowing;
            if (UI3DTreasureSelectStage.Instance.UnlockShowing)
                || UI3DTreasureSelectStage.Instance.UnlockShowing|| UI3DTreasureSelectStage.Instance.treasureFinishShowing;
            if (UI3DTreasureSelectStage.Instance.UnlockShowing
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
            {
                m_BackBtn.gameObject.SetActive(false);
            }
@@ -199,6 +208,16 @@
            m_FairyBtn.gameObject.SetActive(!_closer);
        }
        private void StartAnimation()
        {
            UpdateButtonState();
        }
        private void OnHighestComplete()
        {
            UpdateButtonState();
        }
        private void OnUnlockComplete()
        {
            UpdateButtonState();
System/Treasure/UI3DTreasureSelectStage.cs
@@ -156,6 +156,7 @@
        public bool CloserComplete { get; private set; }
        public int jumpTreasure { get; private set; }
        public bool UnlockShowing { get; set; }
        public bool treasureFinishShowing { get; set; }
        public bool Preloading { get; private set; }
        public GameObject currentTreasureTitle
@@ -212,6 +213,8 @@
        public event Action OnCameraCloserComplete;
        public event Action OnCameraBackEvent;
        public event Action OnUnlockComplete;
        public event Action OnHighestComplete;
        public event Action startAnimation;
        private Dictionary<TreasureCategory, List<TreasureComponent>> m_Treasures = new Dictionary<TreasureCategory, List<TreasureComponent>>();
        private Dictionary<TreasureCategory, bool> m_PreloadDict = new Dictionary<TreasureCategory, bool>();
@@ -298,6 +301,7 @@
            }
            model.treasureStateChangeEvent += TreasureStateChangeEvent;
            model.treasureStageUpEvent += TreasureStageUpEvent;
        }
        IEnumerator Co_PreLoad(TreasureCategory _category, Action callback)
@@ -320,6 +324,16 @@
        {
            HideAllTreasure();
            CloseRenderCamera();
            IsCloser = false;
            CloserComplete = false;
            UnlockShowing = false;
            treasureFinishShowing = false;
            IsOpen = false;
            jumping = false;
            Preloading = false;
            jumpTreasure = 0;
            var movecomponent = m_CameraControl.GetComponent<SmoothMove>();
            if (movecomponent != null)
            {
@@ -327,19 +341,12 @@
            }
            m_CameraControl.localPosition = m_StartPosition;
            IsCloser = false;
            CloserComplete = false;
            UnlockShowing = false;
            IsOpen = false;
            jumping = false;
            Preloading = false;
            jumpTreasure = 0;
            CameraController.Instance.CameraObject.gameObject.SetActive(true);
            m_Camera.enabled = false;
            WindowCenter.Instance.uiRoot.baseCanvas.gameObject.SetActive(true);
            model.treasureStateChangeEvent -= TreasureStateChangeEvent;
            model.treasureStageUpEvent -= TreasureStageUpEvent;
            model.SetTreasureUnlockShow(currentCategory, 0);
            if (currentTreasureTitle != null)
@@ -370,10 +377,25 @@
            }
        }
        private void TreasureStageUpEvent(int _id)
        {
            var _list = m_Treasures[currentCategory];
            var _component = _list.Find((x) =>
            {
                return x.treasureId == _id;
            });
            if (_component != null && _component.display)
            {
                _component.UpdateTreasureStage();
                _component.SetLayer(CloserComplete ? LayerUtility.DefaultLayer : LayerUtility.UILayer);
            }
        }
        public void SelectTreasureCategory(TreasureCategory _type, bool _closer = false)
        {
            presentSelectIndex = 0;
            UnlockShowing = false;
            treasureFinishShowing = false;
            currentCategory = _type;
            model.currentCategory = currentCategory;
@@ -442,7 +464,11 @@
        {
            var _treasure = 0;
            int _index = -1;
            if (model.GetTreasureUnlockShow(currentCategory) != 0)
            if (CheckTreasureFinish(out _treasure))
            {
                treasureFinishShowing = true;
            }
            else if (model.GetTreasureUnlockShow(currentCategory) != 0)
            {
                _treasure = model.GetTreasureUnlockShow(currentCategory);
                model.treasureGotoId = _treasure;
@@ -469,6 +495,31 @@
                });
            }
            return _index;
        }
        private bool CheckTreasureFinish(out int treasureId)
        {
            treasureId = 0;
            if (currentCategory != TreasureCategory.Human)
            {
                return false;
            }
            var list = model.GetTreasureCategory(TreasureCategory.Human);
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i] == 101)
                {
                    continue;
                }
                Treasure treasure;
                if (model.TryGetTreasure(list[i], out treasure)
                    && treasure.IsHighestStage && model.GetTreasureFinishAnim(list[i]))
                {
                    treasureId = list[i];
                    return true;
                }
            }
            return false;
        }
        int Compare(int x, int y)
@@ -591,9 +642,20 @@
            }
        }
        public bool AllowPointClick()
        {
            if (IsCloser || UnlockShowing || jumping
                || draging || BossShowModel.Instance.BossShowing
                || treasureFinishShowing)
            {
                return false;
            }
            return true;
        }
        public void OnPointDownTreasure(int _treasureId)
        {
            if (IsCloser || UnlockShowing || jumping || draging || BossShowModel.Instance.BossShowing)
            if (!AllowPointClick())
            {
                return;
            }
@@ -622,6 +684,11 @@
                var _component = m_Treasures[currentCategory][presentSelectIndex];
                _component.PlayUnlockShow();
            }
            else if (treasureFinishShowing)
            {
                var _component = m_Treasures[currentCategory][presentSelectIndex];
                _component.PlayHighestShow();
            }
            jumpTreasure = 0;
        }
        #endregion
@@ -641,7 +708,7 @@
        public void BegineDrag()
        {
            if (IsCloser || UnlockShowing)
            if (IsCloser || UnlockShowing || treasureFinishShowing)
            {
                return;
            }
@@ -906,20 +973,22 @@
        private void CameraBackComplete()
        {
            if (!IsOpen)
            {
                return;
            }
            IsCloser = false;
            if (OnCameraBackComplete != null)
            {
                OnCameraBackComplete();
            }
            IsCloser = false;
            if (!IsOpen)
            {
                return;
            }
            var _list = m_Treasures[currentCategory];
            for (int i = 0; i < _list.Count; i++)
            {
                _list[i].SetLayer(LayerUtility.UILayer);
            }
            ReCheckTreasureHighest();
        }
        #endregion
@@ -984,5 +1053,59 @@
            }
        }
        #endregion
        public void ReCheckTreasureHighest()
        {
            treasureFinishShowing = false;
            if (!IsOpen)
            {
                return;
            }
            var treasureId = 0;
            if (CheckTreasureFinish(out treasureId))
            {
                treasureFinishShowing = true;
            }
            else if (model.GetTreasureUnlockShow(currentCategory) != 0)
            {
                UnlockShowing = true;
                treasureId = model.GetTreasureUnlockShow(currentCategory);
                model.treasureGotoId = treasureId;
            }
            if (treasureId != 0)
            {
                var _index = m_Treasures[currentCategory].FindIndex((x) =>
                 {
                     return x.treasureId == treasureId;
                 });
                if (_index == presentSelectIndex)
                {
                    var _component = m_Treasures[currentCategory][presentSelectIndex];
                    if (UnlockShowing)
                    {
                        _component.PlayUnlockShow();
                    }
                    else if (treasureFinishShowing)
                    {
                        _component.PlayHighestShow();
                    }
                }
                else
                {
                    Goto(_index);
                }
                if (startAnimation != null)
                {
                    startAnimation();
                }
            }
            else
            {
                if (OnHighestComplete != null)
                {
                    OnHighestComplete();
                }
            }
        }
    }
}