| System/Realm/RealmAnimationBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Realm/RealmModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Realm/RealmStageBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Realm/RealmWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/Realm/RealmAnimationBehaviour.cs
@@ -1,4 +1,5 @@ using System.Collections; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI @@ -14,6 +15,8 @@ Coroutine m_RotateCoroutine = null; float m_DeltaAngle { get { return 360f / 8; } } public event Action onRotateComplete; public void SetDefault() { @@ -43,7 +46,7 @@ return new Vector3(_x, _y, _z); } void StartRotate() public void StartRotate() { if (m_RotateCoroutine != null) { @@ -52,10 +55,21 @@ m_RotateCoroutine = StartCoroutine(Co_Rotate()); } public void StopRotate() { if (m_RotateCoroutine != null) { StopCoroutine(m_RotateCoroutine); } } IEnumerator Co_Rotate() { var timer = 0f; m_ContainerLine.gameObject.SetActive(true); bool rotate30 = false; while (timer < m_Duration) { timer += Time.deltaTime; @@ -63,6 +77,23 @@ var t = Mathf.Clamp01(timer / m_Duration); var value = m_TweenCurve.Evaluate(t); var angle = Mathf.LerpUnclamped(0, 180, value); if (angle >= 30 && !rotate30) { foreach (var realmStage in m_RealmStages) { if (realmStage.animIndex == 0) { realmStage.gameObject.SetActive(false); } else { realmStage.gameObject.SetActive(true); } } rotate30 = true; } for (int i = 0; i < m_RealmStages.Length; i++) { var cacheAngle = GetPointAngle(m_RealmStages[i].animIndex); @@ -73,7 +104,12 @@ m_ContainerLine.gameObject.SetActive(false); foreach (var realmStage in m_RealmStages) { realmStage.animIndex = (realmStage.animIndex + 4) % 8; realmStage.animIndex = (realmStage.animIndex + 5) % 9; } if (onRotateComplete != null) { onRotateComplete(); } } System/Realm/RealmModel.cs
@@ -86,7 +86,6 @@ { stages = new List<int>(); m_RealmStages.Add(stages); continue; } stages.Add(config.Lv); System/Realm/RealmStageBehaviour.cs
@@ -15,7 +15,7 @@ [SerializeField] UIEffect m_Effect; [SerializeField] Button m_Select; int realmLevel = 0; public int realmLevel { get; private set; } public int animIndex { get; set; } System/Realm/RealmWin.cs
@@ -81,6 +81,7 @@ { PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent; model.selectRealmRefresh += SelectRealmRefresh; m_RealmAnimation.onRotateComplete += OnRotateComplete; } protected override void OnActived() @@ -100,6 +101,7 @@ { PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent; model.selectRealmRefresh -= SelectRealmRefresh; m_RealmAnimation.onRotateComplete -= OnRotateComplete; } protected override void OnAfterClose() @@ -133,6 +135,7 @@ void HideRealmUp() { m_ContainerRealmUp.gameObject.SetActive(false); m_RealmAnimation.StopRotate(); foreach (var item in m_RealmStages) { item.Dispose(); @@ -160,17 +163,18 @@ { for (int i = 0; i < m_RealmStages.Length; i++) { if (i < realms.Count) var index = m_RealmStages[i].animIndex; if (index < realms.Count) { m_RealmStages[i].gameObject.SetActive(true); m_RealmStages[i].Display(realms[i]); m_RealmStages[i].Display(realms[index]); } else { m_RealmStages[i].gameObject.SetActive(false); if (realms[realms.Count - 1] < model.realmMaxLevel) { m_RealmStages[i].Display(realms[0] + i); m_RealmStages[i].Display(realms[0] + index); } } } @@ -200,7 +204,39 @@ { if (dataType == PlayerDataType.RealmLevel) { DisplayRealmLevelUp(); var realmLevel = PlayerDatas.Instance.baseData.realmLevel; if (realmLevel == model.realmMaxLevel) { DisplayRealmLevelUp(); } else { var stage = model.GetRealmStage(realmLevel + 1); var currentStage = model.GetRealmStage(model.selectRealm); if (stage != currentStage) { m_RealmAnimation.StartRotate(); } model.selectRealm = realmLevel + 1; } } } private void OnRotateComplete() { var realmLevel = PlayerDatas.Instance.baseData.realmLevel; var stage = model.GetRealmStage(realmLevel + 1); List<int> realms = null; if (model.TryGetRealmStages(stage, out realms)) { for (int i = 0; i < m_RealmStages.Length; i++) { var index = m_RealmStages[i].animIndex; if (index > 4) { m_RealmStages[i].Display(realms[0] + index); } } } }