少年修仙传客户端代码仓库
client_linchunjie
2019-03-18 b277ad6e67a3afe188badab12f714bda5b20b385
6340  【前端】【2.0】境界改版开发单(优化特效表现)
4个文件已修改
172 ■■■■ 已修改文件
System/Realm/RealmAnimationBehaviour.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmLevelUpBehaviour.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmModel.cs 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmWin.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmAnimationBehaviour.cs
@@ -16,6 +16,7 @@
        [SerializeField] UIEffect[] m_EffectLines;
        [SerializeField] UIEffect m_EffectLevelUp;
        [SerializeField] UIEffect m_EffectBoss;
        [SerializeField] UIEffect m_EffectBase;
        [SerializeField, Header("小境界升级特效时长")] float m_NormalLevelUpEffectTime = 1.5f;
        [SerializeField, Header("大境界升级特效时长")] float m_SpecialLevelUpEffectTime = 4.5f;
@@ -98,7 +99,19 @@
                yield break;
            }
            if (m_EffectBoss.IsPlaying)
            {
                if (m_EffectBase.target != null)
                {
                    var obj = m_EffectBase.target.transform.Find("GameObject/b/b (3)");
                    if (obj != null)
                    {
                        obj.gameObject.SetActive(true);
                    }
                }
            }
            m_EffectBoss.StopImediatly();
            m_EffectLevelUp.StopImediatly();
            var config = RealmConfig.Get(model.displayRealmLevel - 1);
@@ -138,6 +151,15 @@
                    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);
                    }
                }
            }
            if (onLevelUpComplete != null)
System/Realm/RealmLevelUpBehaviour.cs
@@ -69,7 +69,7 @@
        private void OnLevelUp()
        {
            var error = 0;
            if (TryLevelUp(out error))
            if (model.TryLevelUp(out error))
            {
                CA523_tagCMRealmLVUp pak = new CA523_tagCMRealmLVUp();
                GameNetSystem.Instance.SendInfo(pak);
@@ -78,37 +78,6 @@
            {
                DisplayErrorTip(error);
            }
        }
        bool TryLevelUp(out int error)
        {
            error = 0;
            if (PlayerDatas.Instance.baseData.realmLevel >= realmLevel)
            {
                error = 100;
                return false;
            }
            var config = RealmConfig.Get(realmLevel - 1);
            if (PlayerDatas.Instance.baseData.LV < config.NeedLV)
            {
                error = 1;
                return false;
            }
            if (config.BossID != 0 && !model.isBossPass)
            {
                error = 2;
                return false;
            }
            if (config.NeedGood != 0)
            {
                var count = packModel.GetItemCountByID(PackType.Item, config.NeedGood);
                if (count < config.NeedNum)
                {
                    error = 3;
                    return false;
                }
            }
            return true;
        }
        void DisplayErrorTip(int error)
System/Realm/RealmModel.cs
@@ -40,6 +40,8 @@
        int cacheMapId = 0;
        bool redpointDirty = false;
        public List<int> displayRealms = new List<int>();
        public int displayRealmLevel
@@ -57,10 +59,14 @@
        public event Action selectRealmRefresh;
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        public override void Init()
        {
            StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish;
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
            GlobalTimeEvent.Instance.secondEvent += PerSecond;
            packModel.refreshItemCountEvent += RefreshItemCountEvent;
            ParseConfig();
        }
@@ -71,11 +77,24 @@
        public void OnPlayerLoginOk()
        {
            redpointDirty = true;
        }
        public override void UnInit()
        {
            StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
            packModel.refreshItemCountEvent -= RefreshItemCountEvent;
            GlobalTimeEvent.Instance.secondEvent -= PerSecond;
        }
        private void PerSecond()
        {
            if (redpointDirty)
            {
                RefreshRedpoint();
                redpointDirty = false;
            }
        }
        void ParseConfig()
@@ -151,6 +170,38 @@
                return m_RealmPreviewEquips[level].TryGetValue(job, out equips);
            }
            return false;
        }
        public bool TryLevelUp(out int error)
        {
            error = 0;
            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
            if (realmLevel >= realmMaxLevel)
            {
                error = 100;
                return false;
            }
            var config = RealmConfig.Get(realmLevel);
            if (PlayerDatas.Instance.baseData.LV < config.NeedLV)
            {
                error = 1;
                return false;
            }
            if (config.BossID != 0 && !isBossPass)
            {
                error = 2;
                return false;
            }
            if (config.NeedGood != 0)
            {
                var count = packModel.GetItemCountByID(PackType.Item, config.NeedGood);
                if (count < config.NeedNum)
                {
                    error = 3;
                    return false;
                }
            }
            return true;
        }
        public bool IsUnlockEquipRealm(int realmLevel, out int level)
@@ -241,6 +292,7 @@
        public void ReceivePackage(HA311_tagMCSyncRealmInfo package)
        {
            isBossPass = package.IsPass == 1;
            RefreshRedpoint();
        }
        private void OnStageLoadFinish()
@@ -261,6 +313,28 @@
                    }
                }
                cacheMapId = mapId;
            }
        }
        private void PlayerDataRefreshEvent(PlayerDataType dataType)
        {
            if (dataType == PlayerDataType.RealmLevel
                || dataType == PlayerDataType.LV
                || dataType == PlayerDataType.FightPoint)
            {
                redpointDirty = true;
            }
        }
        private void RefreshItemCountEvent(PackType packType, int arg2, int itemId)
        {
            if (packType == PackType.Item)
            {
                var config = RealmConfig.Get(PlayerDatas.Instance.baseData.realmLevel);
                if (config != null && config.NeedGood == itemId)
                {
                    redpointDirty = true;
                }
            }
        }
@@ -287,5 +361,33 @@
            }
            WindowCenter.Instance.Open<RealmWin>();
        }
        void RefreshRedpoint()
        {
            var levelUpable = false;
            var challengeable = false;
            if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Realm))
            {
                var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
                if (realmLevel < realmMaxLevel)
                {
                    var config = RealmConfig.Get(realmLevel);
                    if (config.BossID != 0 && !isBossPass)
                    {
                        challengeable = PlayerDatas.Instance.baseData.FightPoint >= config.FightPower;
                    }
                    var error = 0;
                    if (TryLevelUp(out error))
                    {
                        levelUpable = true;
                    }
                }
            }
            levelUpRedpoint.state = levelUpable ? RedPointState.Simple : RedPointState.None;
            challengeRedpoint.state = challengeable ? RedPointState.Simple : RedPointState.None;
        }
    }
}
System/Realm/RealmWin.cs
@@ -31,6 +31,7 @@
        [SerializeField] PositionTween m_RealmLevelUpTween;
        [SerializeField] UIEffect m_EffectCover;
        [SerializeField] UIEffect m_EffectBoss;
        [SerializeField] UIEffect m_EffectBase;
        int cacheRealmLevel = 0;
@@ -295,10 +296,12 @@
        void DisplayEffectBoss()
        {
            bool requireBossEffect = false;
            m_EffectBoss.StopImediatly();
            var config = RealmConfig.Get(model.displayRealmLevel);
            if (config.BossID != 0 && !model.isBossPass)
            {
                requireBossEffect = true;
                m_EffectBoss.Play();
                Animator animator = null;
                if (m_EffectBoss.target != null)
@@ -307,6 +310,16 @@
                    animator.Play("Effect_JingJieBJ_021", 0, 1);
                }
            }
            if (m_EffectBase.target != null)
            {
                var obj = m_EffectBase.target.transform.Find("GameObject/b/b (3)");
                if (obj != null)
                {
                    obj.gameObject.SetActive(!requireBossEffect);
                }
            }
        }
        private void PlayerDataRefreshEvent(PlayerDataType dataType)
@@ -334,6 +347,8 @@
                model.displayRealms.Clear();
                model.selectRealm = PlayerDatas.Instance.baseData.realmLevel + 1;
                DisplayRealmStages();
                DisplayCover();
                DisplayEffectBoss();
            }
            else
            {