少年修仙传客户端代码仓库
client_linchunjie
2018-08-31 24dc9f80cc5f0eb1790226184b998486aec27ddf
2960 骑宠争夺伤害进度优化,信息提示修改
4个文件已修改
288 ■■■■ 已修改文件
System/FairyAu/FairyGrabBossHintWin.cs 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossModel.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossWin.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Message/RichMoveEvent.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossHintWin.cs
@@ -28,6 +28,9 @@
        int bossId = 0;
        uint objId = 0;
        ulong currentHp = 0;
        ulong totalHp = 0;
        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -52,6 +55,8 @@
                    {
                        bossId = bossActor.NpcConfig.NPCID;
                        objId = bossActor.ServerInstID;
                        currentHp = bossActor.ActorInfo.RealHp;
                        totalHp = bossActor.ActorInfo.RealMaxHp;
                        break;
                    }
                }
@@ -59,10 +64,9 @@
            if (bossId != 0)
            {
                model.QueryGrabBossHurt(bossId, 0, objId);
                model.QueryGrabBossProgress(true);
                GlobalTimeEvent.Instance.secondEvent += SecondEvent;
                model.bossProgressUpdate += BossProgressUpdate;
                model.bossHurtUpdate += BossHurtUpdate;
                GA_NpcFightBoss.s_HpRefresh += HpRefresh;
                DisplayAreaInfo();
                DisplayTimer();
                DisplayProgress();
@@ -82,8 +86,8 @@
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            model.bossProgressUpdate -= BossProgressUpdate;
            model.bossHurtUpdate -= BossHurtUpdate;
            GA_NpcFightBoss.s_HpRefresh -= HpRefresh;
        }
        protected override void OnAfterClose()
@@ -98,7 +102,6 @@
            {
                m_Timer = 0f;
                model.QueryGrabBossHurt(bossId, 0, objId);
                model.QueryGrabBossProgress();
            }
        }
        #endregion
@@ -117,14 +120,9 @@
        void DisplayProgress()
        {
            FairyGrabBossModel.BossProgressInfo bossProgress;
            bool killed = false;
            if (model.TryGetBossProgress(bossId, out bossProgress))
            {
                var progress = 1 - (float)bossProgress.currentHp / bossProgress.totalHp;
                m_Progress.text = StringUtility.Contact((int)(progress * 100), "%");
                killed = progress >= 1;
            }
            var progress = 1 - (float)currentHp / totalHp;
            m_Progress.text = StringUtility.Contact((int)(progress * 100), "%");
            bool killed = progress >= 1;
            m_ContainerKilling.gameObject.SetActive(!killed);
            m_ContainerKilled.gameObject.SetActive(killed);
        }
@@ -132,17 +130,15 @@
        void DisplayRanks()
        {
            FairyGrabBossModel.FairyGrabBossInfo fairyGrabBossInfo;
            FairyGrabBossModel.BossProgressInfo bossProgress;
            var index = 0;
            if (model.TryGetBossHurt(bossId, 0, out fairyGrabBossInfo)
                && model.TryGetBossProgress(bossId, out bossProgress))
            if (model.TryGetBossHurt(bossId, 0, out fairyGrabBossInfo))
            {
                for (int i = 0; i < m_RankBehaviours.Length; i++)
                {
                    if (i < fairyGrabBossInfo.hurtInfos.Count)
                    {
                        var hurtInfo = fairyGrabBossInfo.hurtInfos[i];
                        var percent = (int)(((float)hurtInfo.totalHurt / bossProgress.totalHp) * 100);
                        var percent = (int)(((float)hurtInfo.totalHurt / totalHp) * 100);
                        m_RankBehaviours[i].Display(hurtInfo.HurtName, percent);
                        index++;
                    }
@@ -167,15 +163,6 @@
            }
        }
        private void BossProgressUpdate(int _id)
        {
            if (_id == bossId)
            {
                DisplayProgress();
                DisplayRanks();
            }
        }
        private void BossHurtUpdate(int id, int type)
        {
            if (id == bossId && type == 0)
@@ -184,6 +171,16 @@
            }
        }
        private void HpRefresh(uint arg0, int npcId, ulong hp, ulong _totalHp)
        {
            if (npcId == bossId)
            {
                currentHp = hp;
                totalHp = _totalHp;
                DisplayProgress();
            }
        }
        private void SecondEvent()
        {
            DisplayTimer();
System/FairyAu/FairyGrabBossModel.cs
@@ -77,7 +77,7 @@
        public int callMemberSeconds { get; private set; }
        private bool serverInited = false;
        private DateTime lastQueryProgressTime = DateTime.Now;
        //private DateTime lastQueryProgressTime = DateTime.Now;
        public event Action stateUpdate;
        public event Action<int> bossSelectedEvent;
@@ -86,6 +86,9 @@
        public event Action bossGrabHintEvent;
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
        public override void Init()
        {
@@ -318,13 +321,13 @@
            }
        }
        public void QueryGrabBossProgress(bool force = false)
        public void QueryGrabBossProgress()
        {
            if (!force && (DateTime.Now - lastQueryProgressTime).TotalSeconds < 10)
            {
                return;
            }
            lastQueryProgressTime = DateTime.Now;
            //if (!force && (DateTime.Now - lastQueryProgressTime).TotalSeconds < 10)
            //{
            //    return;
            //}
            //lastQueryProgressTime = DateTime.Now;
            CAC04_tagCGQueryAllFamilyBossHurt pak = new CAC04_tagCGQueryAllFamilyBossHurt();
            GameNetSystem.Instance.SendInfo(pak);
        }
@@ -385,6 +388,114 @@
            return false;
        }
        public bool TestEnterDungeon(int bossId, out int _error)
        {
            if (!InActivityTime)
            {
                _error = 3;
                return false;
            }
            if (!PlayerDatas.Instance.fairyData.HasFairy)
            {
                _error = 1;
                return false;
            }
            if (!FuncOpen.Instance.IsFuncOpen(139))
            {
                _error = 2;
                return false;
            }
            var config = Config.Instance.Get<BossInfoConfig>(bossId);
            if (config != null)
            {
                if (!mapModel.IsMapUnLocked(config.MapID))
                {
                    _error = 6;
                    return false;
                }
            }
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var mapConfig = Config.Instance.Get<MapConfig>(mapId);
            if (mapConfig.MapFBType != (int)MapType.OpenCountry)
            {
                _error = 5;
                return false;
            }
            var dataMapId = dungeonModel.GetDungeonDataIdByMapId(mapId);
            if (dataMapId == BossHomeModel.BOSSHOME_MAPID || dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID)
            {
                _error = 4;
                return false;
            }
            _error = 0;
            return true;
        }
        public void DisplayErrorTip(int error)
        {
            switch (error)
            {
                case 1:
                    SysNotifyMgr.Instance.ShowTip("FairyGrabBossNoFairy");
                    break;
                case 3:
                    SysNotifyMgr.Instance.ShowTip("FairyGrabBossUnOpen");
                    break;
                case 2:
                    FuncOpen.Instance.ProcessorFuncErrorTip(139);
                    break;
                case 4:
                    var dataMapId = dungeonModel.GetDungeonDataIdByMapId(PlayerDatas.Instance.baseData.MapID);
                    var config = Config.Instance.Get<DungeonOpenTimeConfig>(dataMapId);
                    var tip = string.Empty;
                    if (dataMapId == BossHomeModel.BOSSHOME_MAPID)
                    {
                        var vipLevel = PlayerDatas.Instance.baseData.VIPLv;
                        var vipNeed = bossHomeModel.GetFloorVipRequirement(PlayerDatas.Instance.baseData.dungeonLineId + 1);
                        if (vipLevel < vipNeed)
                        {
                            var moneyNeed = bossHomeModel.GetVipLackCost(PlayerDatas.Instance.baseData.dungeonLineId + 1);
                            var dungeonId = dungeonModel.DungeonMap(BossHomeModel.BOSSHOME_MAPID, PlayerDatas.Instance.baseData.dungeonLineId);
                            var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId);
                            tip = Language.Get("QuitRemindBossHome", dungeonConfig.FBName, vipNeed, moneyNeed);
                        }
                        else
                        {
                            tip = Language.Get(config.ExitDescription);
                        }
                    }
                    else
                    {
                        tip = Language.Get(config.ExitDescription);
                    }
                    ConfirmCancel.ShowPopConfirm(
                        Language.Get("Mail101"),
                        tip,
                        (bool _ok) =>
                        {
                            if (_ok)
                            {
                                WindowCenter.Instance.Close<LootPreciousFrameWin>();
                                MapTransferUtility.Instance.MoveToNPC(selectBoss);
                            }
                        }
                        );
                    break;
                case 5:
                    SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
                    break;
                case 6:
                    SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                    break;
            }
        }
        public class FairyGrabBossInfo
        {
            public int npcId { get; private set; }
System/FairyAu/FairyGrabBossWin.cs
@@ -48,7 +48,7 @@
            DisplaySurplusTime();
            DisplayBossInfo();
            DisplayHighestFairy();
            model.QueryGrabBossProgress(true);
            model.QueryGrabBossProgress();
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            model.bossSelectedEvent += BossSelectedEvent;
            model.bossProgressUpdate += BossProgressUpdate;
@@ -171,7 +171,7 @@
        private void Goto()
        {
            var error = 0;
            if (TestEnterDungeon(out error))
            if (model.TestEnterDungeon(model.selectBoss, out error))
            {
                WindowJumpMgr.Instance.ClearJumpData();
                WindowCenter.Instance.Close<LootPreciousFrameWin>();
@@ -179,98 +179,8 @@
            }
            else
            {
                switch (error)
                {
                    case 1:
                        SysNotifyMgr.Instance.ShowTip("FairyGrabBossNoFairy");
                        break;
                    case 3:
                        SysNotifyMgr.Instance.ShowTip("FairyGrabBossUnOpen");
                        break;
                    case 2:
                        FuncOpen.Instance.ProcessorFuncErrorTip(139);
                        break;
                    case 4:
                        var dataMapId = dungeonModel.GetDungeonDataIdByMapId(PlayerDatas.Instance.baseData.MapID);
                        var config = Config.Instance.Get<DungeonOpenTimeConfig>(dataMapId);
                        var tip = string.Empty;
                        if (dataMapId == BossHomeModel.BOSSHOME_MAPID)
                        {
                            var vipLevel = PlayerDatas.Instance.baseData.VIPLv;
                            var vipNeed = bossHomeModel.GetFloorVipRequirement(PlayerDatas.Instance.baseData.dungeonLineId + 1);
                            if (vipLevel < vipNeed)
                            {
                                var moneyNeed = bossHomeModel.GetVipLackCost(PlayerDatas.Instance.baseData.dungeonLineId + 1);
                                var dungeonId = dungeonModel.DungeonMap(BossHomeModel.BOSSHOME_MAPID, PlayerDatas.Instance.baseData.dungeonLineId);
                                var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId);
                                tip = Language.Get("QuitRemindBossHome", dungeonConfig.FBName, vipNeed, moneyNeed);
                            }
                            else
                            {
                                tip = Language.Get(config.ExitDescription);
                            }
                        }
                        else
                        {
                            tip = Language.Get(config.ExitDescription);
                        }
                        ConfirmCancel.ShowPopConfirm(
                            Language.Get("Mail101"),
                            tip,
                            (bool _ok) =>
                            {
                                if (_ok)
                                {
                                    WindowCenter.Instance.Close<LootPreciousFrameWin>();
                                    MapTransferUtility.Instance.MoveToNPC(model.selectBoss);
                                }
                            }
                            );
                        break;
                    case 5:
                        SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
                        break;
                }
                model.DisplayErrorTip(error);
            }
        }
        private bool TestEnterDungeon(out int _error)
        {
            if (!model.InActivityTime)
            {
                _error = 3;
                return false;
            }
            if (!PlayerDatas.Instance.fairyData.HasFairy)
            {
                _error = 1;
                return false;
            }
            if (!FuncOpen.Instance.IsFuncOpen(139))
            {
                _error = 2;
                return false;
            }
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var dataMapId = dungeonModel.GetDungeonDataIdByMapId(mapId);
            if (dataMapId == BossHomeModel.BOSSHOME_MAPID || dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID)
            {
                _error = 4;
                return false;
            }
            var mapConfig = Config.Instance.Get<MapConfig>(mapId);
            if (mapConfig.MapFBType != (int)MapType.OpenCountry)
            {
                _error = 5;
                return false;
            }
            _error = 0;
            return true;
        }
        private void KillRecord()
System/Message/RichMoveEvent.cs
@@ -46,7 +46,7 @@
                {
                    int id = int.Parse(href.mSplits["movenpc"]);
                    var error = 0;
                    if (MoveNpcLimit(id, out error))
                    if (!TestMoveNpc(id, out error))
                    {
                        ProcessMoveNpcError(error);
                        return false;
@@ -224,26 +224,20 @@
        _hero.MoveToPosition(pos);
    }
    private bool MoveNpcLimit(int npcId, out int error)
    private bool TestMoveNpc(int npcId, out int error)
    {
        error = 0;
        var _fairyGrabBossModel = ModelCenter.Instance.GetModel<FairyGrabBossModel>();
        if (_fairyGrabBossModel.bosses.Contains(npcId)
            && !_fairyGrabBossModel.InActivityTime)
        if (_fairyGrabBossModel.bosses.Contains(npcId))
        {
            error = 1;
            return true;
            return _fairyGrabBossModel.TestEnterDungeon(npcId, out error);
        }
        return false;
        return true;
    }
    void ProcessMoveNpcError(int error)
    {
        switch (error)
        {
            case 1:
                SysNotifyMgr.Instance.ShowTip("FairyGrabBossUnOpen");
                break;
        }
        var _fairyGrabBossModel = ModelCenter.Instance.GetModel<FairyGrabBossModel>();
        _fairyGrabBossModel.DisplayErrorTip(error);
    }
}