| System/Realm/RealmAnimationBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Realm/RealmModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Realm/RealmWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/Realm/RealmAnimationBehaviour.cs
@@ -17,10 +17,12 @@ [SerializeField] UIEffect m_EffectLevelUp; [SerializeField] UIEffect m_EffectBoss; [SerializeField] UIEffect m_EffectBase; [SerializeField] UIEffect m_EffectCover; [SerializeField, Header("小境界升级特效时长")] float m_NormalLevelUpEffectTime = 1.5f; [SerializeField, Header("大境界升级特效时长")] float m_SpecialLevelUpEffectTime = 4.5f; [SerializeField, Header("Boss特效时长")] float m_BossEffectTime = 2f; [SerializeField, Header("罩子消失时机"), Range(0, 2f)] float m_CoverDisappearTime = 1.0f; [SerializeField, Header("罩子切换时机")] float m_CoverChangeTime = 3.0f; Coroutine m_RotateCoroutine = null; @@ -28,10 +30,12 @@ public bool rotating { get; private set; } public bool isPlayingAnimation { get; private set; } public bool isPlayingBossEffect { get; private set; } public event Action onRotateComplete; public event Action onLevelUpComplete; public event Action onBossAppearComplete; public event Action onCoverChange; RealmModel model { get { return ModelCenter.Instance.GetModel<RealmModel>(); } } @@ -39,6 +43,7 @@ { rotating = false; isPlayingAnimation = false; isPlayingBossEffect = false; m_ContainerLine.gameObject.SetActive(false); for (int i = 0; i < m_RealmStages.Length; i++) { @@ -125,7 +130,19 @@ m_EffectLevelUp.effect = levelUpEffectId; m_EffectLevelUp.Play(); var effectTime = config.BossID != 0 ? m_SpecialLevelUpEffectTime : m_NormalLevelUpEffectTime; yield return WaitingForSecondConst.GetWaitForSeconds(effectTime); if (config.BossID != 0) { yield return WaitingForSecondConst.GetWaitForSeconds(m_CoverChangeTime); if (onCoverChange != null) { onCoverChange(); } yield return WaitingForSecondConst.GetWaitForSeconds(effectTime - m_CoverChangeTime); } else { yield return WaitingForSecondConst.GetWaitForSeconds(effectTime); } if (index != -1) { @@ -147,32 +164,11 @@ StartRotate(); } config = RealmConfig.Get(model.displayRealmLevel); if (config.BossID != 0) if (model.SatisfyChallengeBoss(model.displayRealmLevel)) { m_EffectBoss.Play(); Animator animator = null; if (m_EffectBoss.target != null) { animator = m_EffectBoss.target.GetAnimator(); animator.Play("Effect_JingJieBJ_02", 0, 0); } if (m_EffectBase.target != null) { var obj = m_EffectBase.target.transform.Find("GameObject/b/b (3)"); if (obj != null) { obj.gameObject.SetActive(false); } } yield return WaitingForSecondConst.GetWaitForSeconds(m_BossEffectTime); if (onBossAppearComplete != null) { onBossAppearComplete(); } yield return WaitingForSecondConst.GetWaitForSeconds(Mathf.Max(0f, 3.1f - m_BossEffectTime)); StartBossEffectShow(); model.SetBossEffectShow(model.displayRealmLevel); yield return WaitingForSecondConst.WaitMS3000; } isPlayingAnimation = false; @@ -205,15 +201,42 @@ m_RotateCoroutine = StartCoroutine(Co_Rotate()); } public void Dispose() public void StartBossEffectShow() { rotating = false; isPlayingAnimation = false; StopAllCoroutines(); if (m_RotateCoroutine != null) StartCoroutine(Co_BossEffectShow()); } IEnumerator Co_BossEffectShow() { isPlayingBossEffect = true; m_EffectBoss.Play(); Animator animator = null; if (m_EffectBoss.target != null) { StopCoroutine(m_RotateCoroutine); m_RotateCoroutine = null; animator = m_EffectBoss.target.GetAnimator(); animator.Play("Effect_JingJieBJ_02", 0, 0); } if (m_EffectBase.target != null) { var obj = m_EffectBase.target.transform.Find("GameObject/b/b (3)"); if (obj != null) { obj.gameObject.SetActive(false); } } yield return WaitingForSecondConst.GetWaitForSeconds(m_CoverDisappearTime); if (m_EffectCover.IsPlaying) { m_EffectCover.StopImediatly(); } yield return WaitingForSecondConst.GetWaitForSeconds(2f - m_CoverDisappearTime); isPlayingBossEffect = false; if (onBossAppearComplete != null) { onBossAppearComplete(); } } @@ -283,6 +306,19 @@ } } public void Dispose() { rotating = false; isPlayingAnimation = false; isPlayingBossEffect = false; StopAllCoroutines(); if (m_RotateCoroutine != null) { StopCoroutine(m_RotateCoroutine); m_RotateCoroutine = null; } } [ContextMenu("Reset")] void TestReset() { System/Realm/RealmModel.cs
@@ -283,6 +283,28 @@ return 7039; } public bool GetBossEffectShow(int realmLevel) { var playerId = PlayerDatas.Instance.baseData.PlayerID; return LocalSave.GetBool(StringUtility.Contact("RealmBossEffect_", realmLevel, "_", playerId)); } public void SetBossEffectShow(int realmLevel) { var playerId = PlayerDatas.Instance.baseData.PlayerID; LocalSave.SetBool(StringUtility.Contact("RealmBossEffect_", realmLevel, "_", playerId), true); } public bool SatisfyChallengeBoss(int reamLevel) { var config = RealmConfig.Get(reamLevel); if (config != null) { return config.BossID != 0 && !isBossPass && PlayerDatas.Instance.baseData.LV >= config.NeedLV; } return false; } public void SendLevelUpRealm() { CA523_tagCMRealmLVUp pak = new CA523_tagCMRealmLVUp(); System/Realm/RealmWin.cs
@@ -36,6 +36,7 @@ int cacheRealmLevel = 0; long cacheFightPower = 0; long customUpPower = 0; bool tweenOnStart = false; const int REALM_STAGE_COUNT = 5; @@ -100,6 +101,7 @@ m_RealmAnimation.onRotateComplete += OnRotateComplete; m_RealmAnimation.onLevelUpComplete += OnLevelUpComplete; m_RealmAnimation.onBossAppearComplete += OnBossAppearComplete; m_RealmAnimation.onCoverChange += OnCoverChange; mainDateModel.customDisplayPower += CustomDisplayPower; cacheRealmLevel = PlayerDatas.Instance.baseData.realmLevel; @@ -113,16 +115,15 @@ m_RealmState = RealmState.LevelUp; HideRealmBoss(); DisplayRealmUp(); m_RealmBriefTween.Play(); var realmLevel = PlayerDatas.Instance.baseData.realmLevel; var requireLevelUp = realmLevel < model.realmMaxLevel && model.selectRealm > realmLevel; if (requireLevelUp) tweenOnStart = true; m_RealmBriefTween.SetStartState(); m_RealmLevelUpTween.SetStartState(); if (!m_RealmAnimation.isPlayingBossEffect) { m_RealmLevelUpTween.Play(); StartTween(); } } @@ -138,6 +139,7 @@ m_RealmAnimation.onLevelUpComplete -= OnLevelUpComplete; m_RealmAnimation.onBossAppearComplete -= OnBossAppearComplete; mainDateModel.customDisplayPower -= CustomDisplayPower; m_RealmAnimation.onCoverChange -= OnCoverChange; HideRealmUp(); } @@ -171,7 +173,20 @@ DisplayRealmBrief(); DisplayUnlockEquip(); DisplayCover(); DisplayEffectBoss(); if (model.SatisfyChallengeBoss(model.displayRealmLevel)) { if (model.GetBossEffectShow(model.displayRealmLevel)) { DisplayEffectBoss(); } else { m_RealmAnimation.StartBossEffectShow(); m_GotoBoss.gameObject.SetActive(false); model.SetBossEffectShow(model.displayRealmLevel); } } } void HideRealmUp() @@ -230,10 +245,7 @@ m_RealmLevelUp.Display(model.selectRealm); } var config = RealmConfig.Get(model.selectRealm - 1); m_GotoBoss.gameObject.SetActive(!model.isBossPass && model.selectRealm == model.displayRealmLevel + 1 && config != null && config.BossID != 0); m_GotoBoss.gameObject.SetActive(model.SatisfyChallengeBoss(model.selectRealm - 1)); } void DisplayRealmBrief() @@ -255,7 +267,7 @@ if (model.displayRealmLevel < level && model.selectRealm != level && model.IsUnlockEquipRealm(level, out equipSet)) { var index = realms.IndexOf(level); var index = i; m_ContainerUnlockEquip.gameObject.SetActive(true); foreach (var realmStage in m_RealmStages) { @@ -287,7 +299,7 @@ else { var config = RealmConfig.Get(model.displayRealmLevel); var isBossExist = config != null && config.BossID != 0 && !model.isBossPass; var isBossExist = model.SatisfyChallengeBoss(model.displayRealmLevel); if (isBossExist) { return; @@ -328,7 +340,20 @@ obj.gameObject.SetActive(!requireBossEffect); } } } void StartTween() { m_RealmBriefTween.Play(); var realmLevel = PlayerDatas.Instance.baseData.realmLevel; var requireLevelUp = realmLevel < model.realmMaxLevel && model.selectRealm > realmLevel; if (requireLevelUp) { m_RealmLevelUpTween.Play(); } tweenOnStart = false; } private void PlayerDataRefreshEvent(PlayerDataType dataType) @@ -352,6 +377,20 @@ customUpPower += (PlayerDatas.Instance.baseData.FightPoint - cacheFightPower); } cacheFightPower = PlayerDatas.Instance.baseData.FightPoint; } else if (dataType == PlayerDataType.LV) { m_RealmLevelUp.DisplayCondition(); if (m_RealmAnimation.isPlayingAnimation || m_RealmAnimation.rotating) { return; } if (model.SatisfyChallengeBoss(model.displayRealmLevel) && !model.GetBossEffectShow(model.displayRealmLevel)) { model.SetBossEffectShow(model.displayRealmLevel); m_RealmAnimation.StartBossEffectShow(); } } } @@ -445,6 +484,23 @@ public void OnBossAppearComplete() { m_GotoBoss.gameObject.SetActive(true); if (tweenOnStart) { StartTween(); } if (m_EffectCover.IsPlaying) { m_EffectCover.StopImediatly(); } } private void OnCoverChange() { var id = model.GetRealmCoverEffect(model.displayRealmLevel + 1); m_EffectCover.effect = id; m_EffectCover.Play(); } private bool CustomDisplayPower()